zsh是否可能从正确文件名的部分单词中完成整个文件名?例如,在这个文件夹下有(helloABC,helloabc,helloworld),我想只键入(oab + tab)来获取(helloABC,helloabc。)
答案 0 :(得分:14)
是的,这是可能的。它可以在 zsh完成系统中启用。
将这些行添加到.zshrc
将为您提供此功能:
zstyle ':completion:*' completer _complete
zstyle ':completion:*' matcher-list '' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' '+l:|=* r:|=*'
autoload -Uz compinit
compinit
_completer
提供正常的完成行为
'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' '+l:|=* r:|=*'
处理大小写密集的匹配,并且当前单词的两边可能会发生匹配(从文件名的中间部分匹配)。
注意:~/.zshrc
中可能已包含其中一些或类似的行。在这种情况下,您可能需要编辑它们:
如果还没有,则_complete
必须添加到以completer
的定义
如果已经存在,则不区分大小写的规则可能会有所不同,例如m:{A-Za-z}={a-zA-Z}
,您可以将其替换或保留原样。
+l:|=* r:|=*
必须在不区分大小写的规则之后立即出现(如果在这两个规则之间只有以+
开头的规则,它也可能有效,但我只检查了一些基本组合,哪个有效)