Eu tenho um pequeno aborrecimento em como zsh
está fazendo sugestões completas para meus comandos.
Se eu digitar o início de um comando que não tenho instalado e pressionar, tab
ele sugerirá a função de conclusão que está instalada.
Digamos que eu queira executar, vim
mas não está instalado, ele sugerirá _vim
.
Existe uma maneira de desativar isso? Ou fiz algo errado na minha configuração?
Todos os meus arquivos de ponto são públicos em github.com/henrikbjorn/castle
.
zsh
autocomplete
Henrik Bjørnskov
fonte
fonte
Respostas:
Por padrão, o mecanismo de conclusão do zsh tenta apenas acrescentar algo ao que você digita. Você o configurou para tentar adicionar um prefixo também. O mecanismo simples de configuração de conclusão interativa (
compinstall
) oferece isso em "controle correspondente → conclusão da substring". Isso insere uma linha como esta no seu.zshrc
:O
zstyle
built-in define (principalmente) as configurações de conclusão. Omatcher-list
estilo de conclusão é uma lista de maneiras de tentar em sucessão, parando quando houver pelo menos uma correspondência. A cadeia vazia significa a conclusão padrão (apenas sufixos). O encantamento de controle correspondentel:|=* r:|=*
significa tentar uma correspondência de prefixo*
e de sufixo*
, ou seja, qualquer prefixo e sufixo.Você pode proibir prefixos que começam por
_
completo. Isso ainda permite a conclusão de palavras que começam com_
e a adição de um prefixo, mas o prefixo pode não começar_
.Isso se aplica a todas as conclusões, não apenas às conclusões de nomes de comandos. Não sei como restringir isso a nomes de comandos.
Deve haver uma maneira de excluir com mais precisão os nomes de comandos que começam com
_
, mas não sei como. Uma primeira partida é com oignored-patterns
estilo de conclusão.Isso exclui correspondências que começam com
_
; no entanto, se não houver correspondências, o zsh tenta novamente sem as regras de ignorar. O bom disso é que, se o comando começar com um sublinhado em primeiro lugar, ele será concluído nesta segunda passagem. A parte ruim é que o zsh tentará adicionar um sublinhado de qualquer maneira, se não houver correspondências; portanto, se você tivervi
e,view
mas nãovim
, pressionar Tabdepoisvi
, a oferta será oferecidavi
e,view
mas não_vim
, mas se você digitarvim
, a conclusão será oferecida_vim
.fonte
ignore-patterns
funciona bem para mim, mesmo que não haja correspondências. Só tinha que ter certeza de quecompleter
não contém_ignored
.