仅在单词开头完成

仅在单词开头完成

我遇到了 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。

您的zshshell 首先执行匹配,而不是您可能习惯的真正完成。可以通过对完成器进行排序和可选的自定义来自定义此行为。您可以在以下位置找到有关如何执行此操作的更多信息本指南

您看到的行为可能是不区分大小写的匹配:

zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'

在不深入研究指南的情况下修复此行为的最快方法是找到并注释掉上面的类似行,或者运行autoload -Uz compinstall然后compinstall。这将引导您完成基本向导来自定义zsh行为方式。它会问您一些问题,然后创建一个简单的~/.zshrc问题,您可以在对选项更加熟悉后进行自定义。先把你的~/.zshrc行为复制下来,这样如果你想保留某些行为,你就有一个参考。

相关内容