我正在尝试 zsh,我发现 tab 补全行为很烦人:似乎如果我输入cd str
并点击TAB,它会自动补全为*str*
。例如,cd pl
TAB结果自动补全为cd Applications/
因为 'Ap普ications’ 包含 ‘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并未受到损害。