我遇到了 ZSH 自动完成的问题,并且找不到正确的按键来解决它。
例如,对于像这样的文件
$ ls
Accelion, titi toto tata
我想写:
$ ls cc<TAB>
并得到_不_completion,而不是Accelion
.
以下是当前设置的选项:
$ set -o | grep " on"
alwaystoend on
autocd on
autonamedirs on
autopushd on
nobeep on
cdablevars on
extendedhistory on
noflowcontrol on
nohistbeep on
histexpiredupsfirst on
histignoredups on
histignorespace on
histverify on
incappendhistory on
interactive on
interactivecomments on
nolistambiguous on
nolistbeep on
longlistjobs on
nonomatch on
promptsubst on
pushdignoredups on
shinstdin on
zle
如果您需要更多详细信息,例如选项(以及如何转储它!),请告诉我
编辑:桀骜4.3.17(x86_64-redhat-linux-gnu)
答案1
你没有提到zsh
你用的是什么版本。我假设版本 4。
您的zsh
shell 首先执行匹配,而不是您可能习惯的真正完成。可以通过对完成器进行排序和可选的自定义来自定义此行为。您可以在以下位置找到有关如何执行此操作的更多信息本指南。
您看到的行为可能是不区分大小写的匹配:
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
在不深入研究指南的情况下修复此行为的最快方法是找到并注释掉上面的类似行,或者运行autoload -Uz compinstall
然后compinstall
。这将引导您完成基本向导来自定义zsh
行为方式。它会问您一些问题,然后创建一个简单的~/.zshrc
问题,您可以在对选项更加熟悉后进行自定义。先把你的~/.zshrc
行为复制下来,这样如果你想保留某些行为,你就有一个参考。