
У меня возникла проблема с автодополнением 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
оболочка сначала выполняет сопоставление вместо истинного завершения, как вы, вероятно, привыкли. Это поведение можно настроить, упорядочив и, при необходимости, настроив завершение. Вы можете найти больше информации о том, как это сделать, вэто руководство.
Поведение, которое вы видите, потенциально является сопоставлением без учета регистра:
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
Самый быстрый способ исправить это поведение, не углубляясь в руководство, — найти и закомментировать похожую строку выше или запустить autoload -Uz compinstall
и затем compinstall
. Это проведет вас через базовый мастер настройки zsh
поведения. Он задаст вам несколько вопросов, а затем создаст простой ~/.zshrc
, который вы сможете настроить, когда освоитесь с опциями. ~/.zshrc
Сначала скопируйте свой, чтобы у вас была ссылка, если есть поведения, которые вы хотите сохранить.