为所有命令和参数添加字符串到 zsh tab 补全功能

为所有命令和参数添加字符串到 zsh tab 补全功能

我想添加关键字foo并将bar其添加到任何命令或参数的自动完成结果中。

例如:

cd <TAB>除了现有的补全之外,还应在建议中提供 foo 和 bar

blah <TAB>除了现有的补全之外,还应该在建议中提供 foo 和 bar。

我读过的 zsh 补全文章提到了向特定命令添加补全的方法,但没有提到如何将一组单词添加到全局补全中(或者是否存在始终存在的全局补全列表)

答案1

必须挖掘zshcompsys 手册找到正确的命令

下面的代码~/.zshrc对我有用

function _my_completions() {
  local -a mywords
  mywords=( foo bar )
  compadd -a mywords
}
compdef _my_completions -first-

这里的重要标志是 context -first-。根据 zshcompsys 手册页:

-first-
     This is tried before any other completion function.  The function called
     may set the _compskip parameter to one of various values: all: no further
     completion is attempted; a string containing the substring patterns: no
     pattern completion functions will be called; a string containing default:
     the function for the `-default-' context will not be called, but
     functions defined for commands will

相关内容