有没有办法告诉 shell(最好是 zsh)一个命令?

rom*_*ovs 3 zsh alias tab-completion

我定义了一个别名:

alias school="cd ~/School/3BaFys/"
Run Code Online (Sandbox Code Playgroud)

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

zsh当我这样做时,有没有办法告诉我:

$school Num<TAB>
Run Code Online (Sandbox Code Playgroud)

这扩展到

$school Numerieke\ Methoden
Run Code Online (Sandbox Code Playgroud)

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

例如,告诉 shellschool实际做了什么并让它变得聪明?

小智 5

是的。

我刚刚发现这篇文章描述了如何做到这一点。

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

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

school() { cd ~/School/3BaFys/$@; }
compctl -/ -W ~/School/3BaFys school
Run Code Online (Sandbox Code Playgroud)