Após a instalação do novo software, um terminal já aberto com o zsh não saberá sobre os novos comandos e não poderá gerar o preenchimento automático para eles. Aparentemente, a abertura de um novo terminal resolve o problema, mas o índice (ou o que você chamar) pode ser reconstruído para que o preenchimento automático funcione no terminal antigo?
Eu tentei, compinit
mas isso não ajudou. Além disso, existe uma maneira que não depende de shell? É bom ter uma maneira de verificar a resposta também (exceto para desinstalar algo e reinstalá-lo).
O que quero dizer é que, depois de digitar alguns caracteres do nome de um comando, posso pressionar Tabe zsh
fazer o resto para obter o nome completo.
zsh
autocomplete
phunehehe
fonte
fonte
Respostas:
Para reconstruir o cache de comandos executáveis, use
rehash
ouhash -rf
.Verifique se você não desmarcou a
hash_list_all
opção (isso causa menos acessos ao disco, mas faz com que o cache seja atualizado com menos frequência).Se você não quiser digitar um comando, pode dizer ao zsh para não confiar no cache ao concluir, colocando a seguinte linha no seu
~/.zshrc
¹:Existe um custo de desempenho, mas é insignificante em uma configuração típica da área de trabalho hoje. (Não é se você tiver
$PATH
NFS ou um sistema com falta de RAM.)O
zstyle
comando em si está documentado nazshmodule
página do manual. Os valores dos estilos estão documentados nas páginaszshcompsys
ezshcompwid
man, ou você pode ler a fonte (aqui, da_command_names
função). Se você quiser alguma documentação legível ... se você encontrar alguma, me avise!¹ requer zsh≥4.3.3, obrigado Chris Johnsen
fonte
PATH="$PATH"
também faria o trabalho.HASH_LIST_ALL
é mostrado como padrão na minha documentação.Se você está tendo problemas para que a "conclusão de argumento" funcione para os novos comandos, o compinit é provavelmente o comando que você precisa, no entanto, ele possui um mecanismo de cache que pode estar causando o seu problema.
A documentação da minha versão (4.3.10) diz que o compinit usa um "arquivo de despejo" em cache
.zcompdump
para armazenar funções de conclusão compiladas para acelerar as chamadas subseqüentes. Só invalida o arquivo de despejo quando percebe uma alteração no número de arquivos de conclusão (fpath
arquivos de elemento que começam com#compdef …
ou#autoload …
). Presumivelmente, a instalação de um novo software alteraria o número desses arquivos de conclusão (supondo que ele também instalasse os arquivos de preenchimento automático do zsh no lugar certo), então eu esperaria que umcompinit
trabalho simples . Se você estiver em uma situação em que não funcione, talvez seja necessário ignorar ou invalidar manualmente o arquivo de despejo.Para pular usando o arquivo de despejo, use
compinit -D
; isso afetará apenas o shell atual.Para recriar o arquivo de despejo, remova-o e execute novamente
compinit
:Isso afetará o shell atual, os shells existentes que funcionam normalmente
compinit
e quaisquer shells futuros.fonte
zim
permitem o uso de arquivos de despejo por host. Nesse caso, também remova$zcompdump_file
junto com.zcompdump
.