有没有办法告诉 shell(最好是 zsh)有关命令的信息?

有没有办法告诉 shell(最好是 zsh)有关命令的信息?

我定义了一个别名:

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

快速转到3BaFys包含我今年所需的所有目录的文件夹。

有没有办法告诉zsh我什么时候这样做:

$school Num<TAB>

扩展为

$school Numerieke\ Methoden

Numerieke \Methoden的子目录在哪里~/School/3BaFys/

例如,告诉 shellschool实际上做什么并使其变得智能?

答案1

是的。

我刚刚发现本文描述如何去做。

基本上,您将别名重写为一个函数,然后对其使用一些 compctl 魔法。

这应该可以解决你的问题:

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

答案2

是的但以稍微不同的方式处理这个问题可能会更方便。

setopt autocd
school=~/School/3BaFys/

键入命令行$school以更改到该目录。键入$school/Numerieke\ Methoden以更改为目录,您将获得零件的完成Numerieke Methoden(以及school)开箱即用的功能。您可以编写诸如xpdf $school/foo.pdf访问该目录中的文件之类的内容,而无需对其进行更改。

如果你不想污染你的参数空间,你可以使用命名目录

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

相关内容