Pergunta

Em Zsh, eu tenho uma função chamada g que age assim:

  • Sem argumentos, ligue git status
  • Com um ou mais argumentos, delegue para fazer todos os argumentos - ou seja, ligue git $@

Eu gostaria das conclusões da guia para g para ser exatamente o mesmo que para git. Eu posso conseguir isso com alias g=git, mas isso não me permite ligar status por padrão (o primeiro ponto acima).

Como posso delegar à conclusão para git?

Em Bash, eu simplesmente fiz complete -F _git g que reutiliza a função de conclusão do Git. Com o ZSH, a conclusão do Git parece muito mais complexa, e não consigo encontrar uma solução semelhante.

Eu acho que há alguma função no ZSH em dizer "Finja que digitei o comando [x], o que você completaria?". Se eu soubesse o que era, deveria ser simples o suficiente para usar uma função para delegar. Mas não encontrei essa função nos manuais.

Foi útil?

Solução

A documentação para compdef diz isso:

A função compdef pode ser usado para associar funções de conclusão existentes a novos comandos. Por exemplo,

compdef _pids foo

Mas adaptando -o (_git é a função de conclusão usual para git) não produziu um resultado funcional para mim (mesmo depois de _git havia sido carregado automático):

compdef _git g

Eu era capaz de fazê -lo funcionar via _dispatch no entanto:

compdef '_dispatch git git' g
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top