zsh 完成 - 自定义脚本结果的子字符串

zsh completion - substring on results from custom script

假设我的 .zshrc 中有以下内容:

hello() { 
  echo "Hello !" 
}

hello_list() {
  echo "foo"
  echo "bar"
  echo "foobar"
  echo "foobar"
}

_hello() { 
  compadd $(hello_list ${words[2]})
} 

compdef _hello hello

如果我输入 hello bob<TAB> 我得到:

bobbar  bobfoo

根据我对文档的阅读,我认为这是因为我的许多 ohmyzsh 配置文件之一中有 zstyle ':completion:*' matcher-list ''

当我按 Tab 键时,如何获得基于子字符串匹配出现的列表? 我真的很难理解文档。

尝试将 _hello 更改为:

_hello() { 
  compadd -M 'l:|=* r:|=*' $(hello_list ${words[2]})
}

我在这里偶然发现了第 6.7.5 节中的一些注释:http://zsh.sourceforge.net/Guide/zshguide06.html 这让我想到了这个。 link 表示您可以使用 zstyle 设置启用子字符串匹配,但我无法在我的系统上使用这些设置。