
Tenho um problema com o preenchimento automático do ZSH e não consigo encontrar as teclas certas para me livrar dele.
Por exemplo, com arquivos como
$ ls
Accelion, titi toto tata
Eu gostaria de escrever:
$ ls cc<TAB>
e pegue _não_conclusão, em vez de Accelion
.
Aqui estão as opções atualmente definidas:
$ 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
deixe-me saber se precisar de mais detalhes, como zle
opções (e como despejá-los!)
EDITAR:zsh4.3.17(x86_64-redhat-linux-gnu)
Responder1
Você não mencionou qual versão zsh
está usando. Estou assumindo a versão 4.
Seu zsh
shell está executando a correspondência primeiro, em vez da conclusão verdadeira, como você provavelmente está acostumado. Esse comportamento pode ser customizado ordenando e, opcionalmente, customizando os completadores. Você pode encontrar mais informações sobre como fazer isso emeste guia.
O comportamento que você está vendo é uma correspondência potencialmente sem distinção entre maiúsculas e minúsculas:
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
A maneira mais rápida de corrigir esse comportamento sem se aprofundar muito no guia é localizar e comentar a linha semelhante acima ou executar autoload -Uz compinstall
e então compinstall
. Isso o guiará por um assistente básico para personalizar o zsh
comportamento. Ele fará algumas perguntas e, em seguida, criará um simples ~/.zshrc
que você poderá personalizar à medida que se sentir mais confortável com as opções. Copie ~/.zshrc
primeiro para ter uma referência se houver comportamentos que deseja manter.