pode zsh fazer 2 estágios de conclusão?

6

Digamos que eu tenha os seguintes arquivos no diretório:

  • abc123ABC
  • abc123QWE
  • abc456

Agora, suponha que eu digite um e pressione TAB.

No bash, a conclusão como normalmente funciona, bastaria concluir o abc e parar comigo, tendo que "resolver" o próximo símbolo. então, se eu digitar 1, poderei completar o abc123 com o próximo TAB.

No zsh, pelo menos na maneira como está configurado na minha máquina, ele completará toda a variante, a primeira neste caso: abc123ABC e apresentará o menu para alterar isso para outras variantes.

Isso geralmente é bom, mas é feio e completamente inútil quando há muitos arquivos para completar. geralmente, em tais casos, seria fácil / trivial diminuir as opções digitando alguns caracteres após a parte "comum".

Eu gosto da parte do menu, mas eu realmente prefiro que ela apenas complete as partes 'comuns' e seja completa na segunda TAB ou usando o menu, mas ainda assim não perca a capacidade de restringir manualmente as opções digitando um personagem ou dois.

Existe algo como isso suportado em zsh?

    
por Vitaly Kushner 07.07.2010 / 03:30

1 resposta

8

Você deve explorar o programa de personalização de compinstall .

autoload -Uz compinstall && compinstall

Na versão que estou usando ( zsh 4.3.10), a opção para inserir prefixos não ambíguos está dentro do seguinte menu

  • 3 “Os estilos para alterar a forma como as conclusões são exibidas e inseridas.”
    • 2 “Alterar como as conclusões são inseridas:…”
      • 1 “… insira qualquer prefixo não ambíguo em vez de [ir] direto para a conclusão do menu”
        • y

Após salvar, isso resulta no seguinte comando salvo no arquivo de personalização de conclusão (geralmente .zshrc ):

zstyle ':completion:*' insert-unambiguous true
  • 3 “Os estilos para alterar a forma como as conclusões são exibidas e inseridas.”
    • 3 “Configurar… listas de conclusão, seleção de itens,…”
      • 2 “Use as teclas do cursor para selecionar as conclusões das listas de conclusão.”
        • 1
        • Retornar

Depois de salvar, isso resulta na seguinte personalização:

zstyle ':completion:*' menu select=1
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s

Você pode personalizar o primeiro adicionando interactive :

zstyle ':completion:*' menu select=1 interactive
    
por 07.07.2010 / 06:49