ZSH:如何禁用“make”的默认完成?

2024-02-04

我编写了自动完成功能make命令,并将其放入~/.zsh:

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

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

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

显然它优先于我的规则。

我不得不重命名_make to unused_make所以它不会在 zsh 初始化时加载。它有效,但这是一个相当丑陋的解决方案。

我的问题是:我应该如何设置完成规则,使其优先于加载的默认值?

Related:

  • 如何覆盖现有的 zsh 键盘补全? https://stackoverflow.com/questions/1635922/how-does-one-override-an-existing-zsh-keyboard-completion

Edit:

  • zsh 4.3.17

您需要设置您的fpath http://zsh.sourceforge.net/Doc/Release/Functions.html. See here http://zshwiki.org/home/config/functions.

In your ~/.zshrc, 就像是:

fpath=( ~/.zshfunctions $fpath )

where ~/.zshfunctions包含您的自定义完成文件,应该可以为您解决这个问题。请注意,您的函数是在系统函数之前加载的。这会not work:

fpath=( $fpath ~/.zshfunctions ) 

顺便说一句,你正在使用compctl。它很旧了。我建议使用compsys相反,尽管我现在没有找到一个解释原因的不错的链接。

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

  • Z-shell 补全函数:简介 https://unix.stackexchange.com/questions/33255/how-to-define-and-load-your-own-shell-function-in-zsh
  • 编写 z-shell 补全函数 http://bewatermyfriend.org/p/2012/003/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ZSH:如何禁用“make”的默认完成? 的相关文章

随机推荐