3

Я определил псевдоним:

alias school="cd ~/School/3BaFys/"

чтобы быстро перейти к папке 3BaFys которая содержит все каталоги, которые мне нужны в этом году.

Есть ли способ сказать zsh что, когда я делаю:

$school Num<TAB>

это расширяется до

$school Numerieke\ Methoden

где Numerieke \Methoden является подкаталогом ~/School/3BaFys/

например, сказать оболочке, что на самом деле делает school , и дать ей возможность быть умным?

2 ответа2

5

Да.

Я только что нашел эту статью, описывающую, как это сделать.

По сути, вы переписываете свой псевдоним для функции, а затем используете некоторую магию compctl.

Это должно решить вашу проблему:

school() { cd ~/School/3BaFys/$@; }
compctl -/ -W ~/School/3BaFys school
1

Да, но было бы удобнее решать проблему немного по-другому.

setopt autocd
school=~/School/3BaFys/

Введите командную строку $school чтобы перейти в этот каталог. Введите $school/Numerieke\ Methoden чтобы перейти в этот каталог, и вы получите готовое дополнение к части Numerieke Methoden (и к school тоже) из коробки. И вы можете написать что-то вроде xpdf $school/foo.pdf для доступа к файлам в этом каталоге, не переходя на него.

Если вам не нравится загрязнять пространство параметров, вы можете использовать именованный каталог:

hash -d school=~/School/3BaFys/
~school
ls ~school

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .