A conclusão padrão do Zsh funciona bem, então por que as pessoas recomendam carregar o módulo compinit?

2

Se eu colocar essas linhas e nada mais no meu ~/.zshrc , receberei todos os recursos de conclusão que esperava.

# For autocompletion with an arrow-key driven interface
zstyle ':completion:*' menu select
# report what kind of completion zsh doing
zstyle ':completion:*' format 'Completing %d'
# show ls style colours on file completions
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
# report position when autocompleting lists bigger than available screen
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s%p

Então, por que as pessoas recomendam que você carregue compinit ?, ou seja,

autoload -Uz compinit
compinit

# completion  config directives  go here

Meu teste mostra que não melhora a conclusão do zsh, e não corrige a conclusão do zsh que está quebrada, mas funciona no bash (ou seja, curl).

    
por the_velour_fog 28.02.2016 / 04:46

1 resposta

4

O sistema de completação ativado por compinit faz melhorar o básico. O sistema básico é, na maioria das vezes, não ciente do contexto e completa apenas os nomes de arquivos em quase todos os lugares. O "novo" sistema de completação ativado por compinit sabe que deve completar opções para muitos comandos quando o argumento começa com - , que deve completar comandos em $PATH (no PATH da raiz, par) em vez de nomes de arquivos depois sudo , que deve completar nomes de host após ssh , etc.

Eu não sei por que você diz que a conclusão da onda está "quebrada". Talvez seja porque não está instalado? As versões mais antigas do zsh tiveram conclusão para curl, mas as versões mais recentes dependem do script de conclusão incluído na distribuição curl. Verifique se a instalação do seu curl inclui _curl em algum lugar abaixo de /usr/local/share/zsh/functions ou /usr/share/zsh/functions (algumas distribuições estão faltando nesse arquivo).

    
por 28.02.2016 / 22:45