使用以下行创建一个文件~/.oh-my-zsh/custom/better-completion.zsh
(假设您使用oh-my-zsh 的默认路径)
zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
解释:
zsh 补全中的匹配规则通常在matcher-list
样式中定义。对于oh-my-zsh,这是在~/.oh-my-zsh/lib/completion.zsh
(一次用于区分大小写,一次用于不区分大小写)中定义的。你可以在那里改变它,但如果你更新你的oh-my-zsh它可能会消失。~/.oh-my-zsh/custom
专门用于自定义,并在配置结束时.zsh
从那里加载带有扩展名的文件。.oh-my-zsh/oh-my-zsh.sh
oh-my-zshmatcher-list
中的默认(不区分大小写)设置为:
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
其中第一个告诉处理大小写可互换。因为它是第一条规则,所以每次比赛都会使用它。
唯一需要的更改是''
为简单完成添加前置(它甚至是zshcompsys(1)
for中的第一个示例matcher-list
)
zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
在尝试不区分大小写或其他匹配之前,这首先会尝试完全按照其书写的方式完成当前单词。
要完整:
- 第二条(原始)规则允许在或之前部分完成
.
,例如-> 。_
-
f.b
foo.bar
- 第三条规则允许在书面文本的左侧完成,例如
bar
-> foobar
)