zsh:禁用`make`的默认完成

时间:2013-07-31 10:34:04

标签: zsh

我为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

1 个答案:

答案 0 :(得分:2)

您需要设置fpath。见here

~/.zshrc中,例如:

fpath=( ~/.zshfunctions $fpath )

其中~/.zshfunctions包含您的自定义完成文件,应该为您解决此问题。请注意,您的功能在系统之前加载。这将工作:

fpath=( $fpath ~/.zshfunctions ) 

顺便说一下,你正在使用compctl。它太老了。我推荐使用compsys代替,虽然一个不错的链接解释了为什么现在逃避我。

这些详细介绍了编写完成函数,包括fpath。您可能会发现它们可供参考。