Posso suprimir o preenchimento automático de uma determinada categoria no zsh?

1

Quando tento preencher automaticamente ssh em zsh , são apresentados dois tipos de listas.

$ ssh a<TAB>
 -- remote host name --
aur
 -- login name --
avahi

No entanto, este último não é útil para mim. É possível suprimir tudo em -- login name -- , deixando apenas as entradas em -- remote host name -- ?

Eu também recebo várias entradas ao usar o rsync, embora os cabeçalhos sejam diferentes.

$ rsync a<TAB>
 -- user --
avahi
 -- host --
aur

Gostaria de suprimir as entradas em -- user -- aqui.

Informações possivelmente pertinentes

Eu uso zim . Além disso, o seguinte está em ~/.zshrc .

h=()
if [[ -r ~/.ssh/config ]]; then
  h=($h ${${${(@M)${(f)"$(cat ~/.ssh/config)"}:#Host *}#Host }:#*[*?]*})
fi
if [[ $#h -gt 0 ]]; then
  zstyle ':completion:*:ssh:*' hosts $h
  zstyle ':completion:*:slogin:*' hosts $h
  zstyle ':completion:*:rsync:*' hosts $h
fi

Esta é uma solução alternativa para um bug em zim , quando a conclusão da guia funciona com nomes de host em vez de hosts.

    
por Sparhawk 04.04.2017 / 13:14

1 resposta

2

Você pode usar o estilo users :

zstyle ':completion:*' users

Definir uma lista vazia como esta desativa a conclusão dos nomes de usuário. Você pode reduzi-lo a comandos individuais, se quiser:

zstyle ':completion:*:rsync:*' users

por exemplo, o desabilitaria por rsync , mas o deixaria em outro lugar.

O sistema de conclusão do zsh é muito sofisticado e sua configuração complexa. A página zshcompsys man abrange o novo estilo de conclusão, conforme demonstrado aqui, e o comando zstyle está documentado na página zshmodules man.

    
por 04.04.2017 / 13:30