Eu quero conclusão difusa que não diferencia maiúsculas de minúsculas para arquivos e diretórios zsh
. Depois de ler o manual por algumas horas, é isso que eu criei:
zstyle ':completion:*:*:*:*:globbed-files' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:local-directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
Além disso, quero pressionar TAB
uma vez para exibir possíveis conclusões, modificando apenas o que eu digitei se houver exatamente uma conclusão. Pressionar TAB
uma segunda vez deve me colocar no modo "conclusão do menu". Com base nos manuais, eu vim com isso:
zstyle ':completion:*' menu select
Agora tudo funciona como deveria, exceto em uma circunstância. Eu tenho duas pastas Desktop
e .rstudio-desktop
no meu diretório pessoal. Desde que eu tenho setopt globdots
, espero digitar o seguinte:
$ cd ~/dktop<TAB>
para deixar meu comando como digitado e exibir como candidatos à conclusão Desktop
e .rstudio-desktop
. Em vez disso, remove dktop
, deixando-me o seguinte:
$ cd ~/
Analisei todos os manuais, guias, perguntas sobre o Stack Exchange relevantes e várias outras fontes. Mas o que quer que eu faça, não posso fazer isso funcionar.
Curiosamente, se eu estiver no diretório inicial e digite o seguinte, tudo funcionará conforme o esperado:
$ cd dktop<TAB>
Ou seja, é apenas um problema com segmentos de caminhos não principais (e você pode ver com C-x h
isso isso corresponde à directories
marca e não à local-directories
marca que está sendo usada).
Para facilitar a reprodutibilidade, aqui está um ~/.zshrc
que reproduzirá a situação e o comportamento descritos acima (testados em uma nova máquina virtual El Capitan zsh
da Homebrew).
fonte
zsh 5.3.1
em dianteArch Linux
.cd ~/dktop<tab>
rendimentoscd ~/Desktop
.zsh 5.3.1
OS X, o problema é reproduzido. É interessante que exista uma diferença entre os sistemas operacionais.Respostas:
Uma solução possível é:
Isso fará com que a guia se expanda
~/
para o caminho absoluto.fonte
cd /Users/raxod502/dktop
e a conclusão será desativada.~/
para seu caminho absoluto, a conclusão nebulosa começasse a funcionar. Parecia um daqueles casos em que o problema é que ele é avaliado uma vez, mas você realmente precisa avaliar duas vezes para funcionar, portanto, ter o caminho absoluto em vez de~/
significaria que voltaria a precisar apenas de uma avaliação. Mas, desculpe, esqueci que o bindkey substitui os bindings antigos e não consigo encontrar nada que diga se é possível vincular duas funções a um keykey. Sem a minha chave de ligação, sua conclusão funciona conforme o esperado quando são fornecidos caminhos absolutos?~/dktop
ou/Users/raxod502/dktop
; o resultado é o mesmo, ou seja,dktop
é excluído quando pressiono TAB.