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