Qual é o caso de uso pretendido para COMPLETE_ALIASES no zsh?

1

Há alguns meses, tenho setopt completealiases no meu .zshrc . Não faço a menor ideia do motivo pelo qual o adicionei - a maioria das outras coisas tem comentários ou pode ser entendida nas configurações vizinhas. Por causa disso, há meses não concluí a guia completa para aliases, até que eu vi a resposta de Gilles aqui . Estou tentando entender por que meu passado idiota teria acrescentado isso sem qualquer explicação, 1 .

Qual é o caso de uso pretendido para isso? Como é comumente usado?

1 Meu melhor palpite é que eu pensei que ele ativou a conclusão completa dos aliases e não me preocupei em verificar os documentos.

    
por muru 18.12.2015 / 23:04

1 resposta

1

Por padrão, o zsh expande os aliases antes de executar a conclusão. Isso é desejável na maioria das vezes. Ocasionalmente, você pode querer usar conclusões diferentes para um comando ao usá-lo através de um determinado alias. Isso é raro e só tende a acontecer quando o sistema de conclusão não é inteligente o suficiente para determinar as conclusões reais e precisa obter uma dica extra. Também pode acontecer se o alias alterar o estado do sistema, por ex. alias e1='cd ~/myproject1 && $EDITOR' (para o qual você desejaria conclusões de nome de arquivo relativas a ~/myproject1 , considerando que, por padrão, você as obteria em relação ao diretório atual). Então você tem duas soluções:

  • Defina complete_aliases e defina diferentes funções de conclusão para os aliases. Se você fizer isso, precisará configurar as conclusões para todos os aliases definidos, o que dificulta o uso.
  • Use uma função em vez de um alias para os casos raros em que você deseja conclusões diferentes. O Zsh não tentará adivinhar que, dado o foo () { bar --wibble --wobble "$@"; } , as conclusões para foo devem ser as mesmas de bar --wibble --wobble .

Como os aliases que exigem conclusões separadas são raros, não vejo realmente um ponto para setopt complete_aliases - use uma função.

    
por 20.12.2015 / 04:26