Zsh 补全在 `_` 和 `-` 之间不敏感

for*_*all 6 shell zsh autocomplete

我不喜欢输入下划线,而是想输入一个破折号,并让 zsh 自动完成将它视为可以是破折号或下划线。

这是否可以通过内置的 zsh 功能、oh-my-zsh 或其他功能实现?是否可以在全球范围内使用,如果不能,是否可以使用单个自动完成功能?

旁白:我目前有一个自定义的 bashmarks 完成功能,它在提供可能的完成时仅将下划线转换为破折号,并希望替换/改进它。

Mik*_*kel 5

手册zshcompsys页有一个类似的示例来获得不区分大小写的完成

zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z}={A-Za-z}'
Run Code Online (Sandbox Code Playgroud)

将其更改为 make-_等效项似乎可以满足您的要求

zstyle ':completion:*' matcher-list '' 'm:{-_}={_-}'
Run Code Online (Sandbox Code Playgroud)

或者您可以将其添加到第一个示例中,并且也获得不区分大小写的完成

zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z-_}={A-Za-z_-}'
Run Code Online (Sandbox Code Playgroud)