У меня есть каталог, в который я помещаю все свои проекты, скажем, ~/projectsв качестве примера. Я создал команду с именем, sкоторая принимает один аргумент и перемещает меня в этот каталог. Например: s fooперемещает меня в ~/projects/foo.
То, что я хотел бы иметь команду завершения некоторых видов, которая действовала бы cdтак, чтобы я мог продолжать нажимать, tabчтобы идти дальше в ~/projects/...каталоги.
В основном cdс префиксом, который всегда присутствует.
Я изучил завершение zstyle man zshcompsys, но понял, что просто недостаточно разбираюсь в этом, чтобы понять его правильно.
Вот мой собственный.zshrc пример, который я сохраняю как фрагмент копирования / вставки:
# Try using the below template to set up zsh functions that act # as aliases to cd and allow you to get autocomplete nicely. project() { cd /path/to/project/$1; } compctl -W /path/to/project/ -/ project
Просто отредактируйте /path/to/projectраздел в обеих строках выше, и все готово.
Это прекрасно работает, спасибо! Намного проще, чем я думал.
nifty 12 лет назад
0
2
Gilles
Другим способом достижения аналогичного эффекта является определение псевдонимов для каталогов:
setopt auto_cd alias -d s=~/projects
Введите, ~s/Tabчтобы перейти в подкаталог ~/projects; Вы также можете использовать ~sв аргументе команды.
1
wjv
Вы можете добавить запись непосредственно в именованную хэш-таблицу каталогов:
hash -d s="$/projects"
Теперь вы можете просто использовать ~sдля ссылки на ваш каталог, и вы можете использовать Tab-завершение в cdкоманде: cd ~ s /Tab
Если у вас установлена autocdопция zsh, вы можете опустить cd.
Now you can access all subdirectories within the specified directories from every other directory as if they would be the subdirectories of the current directory: