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 parafoo
devem ser as mesmas debar --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.