zsh中:禁用默认为完成`make`(zsh: disable default completion

2019-10-18 10:48发布

我写了我的自动完成功能的make命令,并把它放在~/.zsh

function __comp_make {
    # ... function body ....
}
compctl -K __comp_make make

不幸的是,它不会工作,因为完成make在已定义

/usr/share/zsh/functions/Completion/Unix/_make

显然它的优先级高于我的规则。

我不得不重新命名_makeunused_make所以它不是在的zsh初始化加载。 它的工作原理,但它是相当丑陋的解决方案。

我的问题是:我应该怎么设置我完成规则,以便它优先于加载默认值?

有关:

  • 怎样才能覆盖现有的zsh键盘完成?

编辑:

  • zsh的4.3.17

Answer 1:

你需要设置你的fpath 。 见这里 。

在你的~/.zshrc ,是这样的:

fpath=( ~/.zshfunctions $fpath )

其中~/.zshfunctions包含定制完成的文件,要解决这个给你。 请注意,你的功能系统问题之前加载。 这将无法正常工作:

fpath=( $fpath ~/.zshfunctions ) 

顺便说一句,你使用compctl 。 这是老了。 我推荐使用compsys代替,虽然一个体面的链接解释为什么在此刻脱离了我。

这些进入一些细节有关编写完成的功能,包括fpath 。 您可能会发现他们有用的参考。

  • Z-壳完成功能:介绍
  • 写入Z-壳完成功能


文章来源: zsh: disable default completion for `make`
标签: zsh