zsh cd tab 补全匹配

zsh cd tab 补全匹配

我正在尝试 zsh,我发现 tab 补全行为很烦人:似乎如果我输入cd str并点击TAB,它会自动补全为*str*。例如,cd pl TAB结果自动补全为cd Applications/因为 'Apications’ 包含 ‘pl’。

有办法关闭这个功能吗?

我知道 zsh 有一个 tab 补全功能,cd /u/loc/b TAB可以让你转到/usr/local/bin。此行为相关吗?

  • 操作系统:OSX 10.11
  • Zsh 版本:5.0.8
  • oh-my-zsh 插件:git、zsh-syntax-highlighting、z

更新

我已经将有问题的代码块追踪到我的~/.oh-my-zsh/oh-my-zsh.sh文件中。

67 if [[ $ZSH_DISABLE_COMPFIX != true ]]; then
68   # If completion insecurities exist, warn the user without enabling completions.
69   if ! compaudit &>/dev/null; then
70     # This function resides in the "lib/compfix.zsh" script sourced above.
71     handle_completion_insecurities
72   # Else, enable and cache completions to the desired file.
73   else
74     compinit -d "${ZSH_COMPDUMP}"
75   fi
76 else
77     compinit -i -d "${ZSH_COMPDUMP}"
78 fi

我仍在阅读文档并试图弄清楚到底发生了什么。

答案1

好的。我想我已经搞清楚了。这个邮政非常有帮助。

基本上,oh-my-zsh 将补全设置为

zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'

删除'l:|=* r:|=*'(这是最后一条规则)现在给了我所需的行为。

做事的能力cd /u/lo/b/ TAB并未受到损害。

相关内容