Estou usando o zsh com o zshrc do grml como base. Como parte do meu trabalho, acesso regularmente o caminho da rede (por exemplo, NFS. AFS).
Se eu escrever /a/long/network/path/on/the/other/side/of/the/world, pressione TAB duas vezes, será dolorosamente lento, pois o zsh começa a pesquisar em /a/ então /a/long /a/long/ rede etc...
Ao mesmo tempo, executar ls /a/long/network/path/on/the/other/side/of/the/world retorna em um segundo. Então, eu gostaria de dizer ao zsh para parar de me questionar. (Se eu escrever /usr/src/linuxx/ e então pressionar tab ele descobre que eu queria /usr/src/linux/ e isso é legal porque a rede me faz mais mal do que bem). Gostaria de preencher automaticamente apenas "no final" após a última barra.
Às vezes, estou usando um cd de solução alternativa no diretório e, em seguida, uso o preenchimento automático. Certamente deve haver uma maneira melhor.
Como posso conseguir isso?
Responder1
Esse tipo de comportamento é configurado atravésestilos(exceto alguns fundamentos que possuem opções). Você vai querer desligarpath-completion
.
Por padrão, a conclusão do nome do arquivo examina todos os componentes de um caminho para ver se há conclusões desse componente. Por exemplo,
/u/b/z
pode ser preenchido em/usr/bin/zsh
. Definir explicitamente esse estilo como falso inibe esse comportamento para componentes de caminho até/
antes do cursor
zstyle ':completion:*' path-completion false
Você pode querer ativaraccept-exact-dirs
em vez de. Com path-completion
left ativado e accept-exact-dirs
ativado, o zsh só tentará a conclusão de componentes do caminho diferentes do último se o caminho não existir.
zstyle ':completion:*' accept-exact-dirs true