我为make
命令编写了自动完成功能,并将其放在~/.zsh
中:
function __comp_make {
# ... function body ....
}
compctl -K __comp_make make
不幸的是,它不起作用,因为make
的完成已在
/usr/share/zsh/functions/Completion/Unix/_make
显然它优先于我的规则。
我必须将_make
重命名为unused_make
,以便在zsh初始化时不加载它。它有效,但它是相当难看的解决方案。
我的问题是:如何设置完成规则,使其优先于加载的默认值?
相关:
修改
答案 0 :(得分:2)
在~/.zshrc
中,例如:
fpath=( ~/.zshfunctions $fpath )
其中~/.zshfunctions
包含您的自定义完成文件,应该为您解决此问题。请注意,您的功能在系统之前加载。这将不工作:
fpath=( $fpath ~/.zshfunctions )
顺便说一下,你正在使用compctl
。它太老了。我推荐使用compsys
代替,虽然一个不错的链接解释了为什么现在逃避我。
这些详细介绍了编写完成函数,包括fpath
。您可能会发现它们可供参考。