Zsh, директория табуляции с префиксом

1899
nifty

У меня есть каталог, в который я помещаю все свои проекты, скажем, ~/projectsв качестве примера. Я создал команду с именем, sкоторая принимает один аргумент и перемещает меня в этот каталог. Например: s fooперемещает меня в ~/projects/foo.

То, что я хотел бы иметь команду завершения некоторых видов, которая действовала бы cdтак, чтобы я мог продолжать нажимать, tabчтобы идти дальше в ~/projects/...каталоги.

В основном cdс префиксом, который всегда присутствует.

Я изучил завершение zstyle man zshcompsys, но понял, что просто недостаточно разбираюсь в этом, чтобы понять его правильно.

6

4 ответа на вопрос

7
Matthew Scharley

Вот мой собственный.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.

0
Rafael Bugajewski

You can modify CDPATH:

export CDPATH="$CDPATH:$HOME/Repositories:$HOME/Repositories/jc/Projects" 

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:

➜ ~ /tmp ➜ /tmp pwd /tmp ➜ /tmp MyAwesomeProject ~/Repositories/jc/Projects/MyAwesomeProject ➜ MyAwesomeProject git:(master) pwd /Users/rafael/Repositories/jc/Projects/MyAwesomeProject ➜ MyAwesomeProject git:(master) 

Похожие вопросы