Uma solução possível é fazer:
bindkey "^I" expand-word
Isso fará com que a guia expanda ~/
para o caminho absoluto.
Eu quero o preenchimento fuzzy insensível a maiúsculas e minúsculas para arquivos e diretórios em zsh
. Depois de ler o manual por algumas horas, foi 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. Em seguida, pressionar TAB
uma segunda vez deve me colocar no modo "conclusão do menu". Com base nos manuais, descobri 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. Como tenho setopt globdots
, espero digitar o seguinte:
$ cd ~/dktop<TAB>
para deixar meu comando como inserido e exibir como candidatos de conclusão Desktop
e .rstudio-desktop
. Em vez disso, remove dktop
, deixando-me com o seguinte:
$ cd ~/
Examinei todos os manuais, guias, perguntas sobre o Stack Exchange e várias outras fontes relevantes. Mas o que eu fizer, não posso fazer isso funcionar.
Curiosamente, se eu estiver no diretório home e digitar o seguinte, tudo funcionará como esperado:
$ cd dktop<TAB>
Ou seja, é apenas um problema com segmentos de caminhos não principais (e você pode ver com C-x h
que isso corresponde à tag directories
em vez da tag local-directories
que está sendo usada).
Para facilitar a reprodutibilidade, aqui é um ~/.zshrc
que reproduzirá a situação e o comportamento descritos acima (testado em um nova máquina virtual El Capitan com zsh
da Homebrew).
Uma solução possível é fazer:
bindkey "^I" expand-word
Isso fará com que a guia expanda ~/
para o caminho absoluto.
Tags zsh autocomplete