我为make
命令编写了自动完成函数,并将其放置在~/.zsh
中:
function __comp_make {
# ... function body ....
}
compctl -K __comp_make make
很遗憾,它不会起作用,因为
make
的完成已经在定义中了。/usr/share/zsh/functions/Completion/Unix/_make
显然,它比我的规则优先级高。
我不得不将_make
重命名为unused_make
,以便在zsh初始化时不加载它。虽然它可以工作,但这是一个相当丑陋的解决方案。
我的问题是:如何设置自己的完成规则,使其优先于已加载的默认规则?
相关:
编辑:
- zsh 4.3.17
#compdef make
而不是#compdef hello
,那么在make<tab>
上会获得自定义完成。如果您没有出现这种情况,建议检查:echo $fpath
,并检查完成函数的内容。我不确定如何进行compctl
完成——也许我错过了什么内容。 - simontcompctl
。 - Jakub M.