zsh possui um sistema de conclusão, ativado pressionando tab:
llama@llama:~$ git st<Tab>
Completing main porcelain command
stash -- stash away changes to dirty working directory
status -- show working-tree status
Completing plumbing internal helper command
stripspace -- filter out empty lines
Tudo o que consegui descobrir é que isso vem do script /usr/share/zsh/functions/Completion/Unix/_git
, onde _git
está sendo chamado o comando de conclusão.
Supondo que eu saiba o nome da função de conclusão (por exemplo _git
), como poderia obter a saída do que aconteceria se eu inserisse uma determinada string e pressionasse tab? Essencialmente, estou tentando obter uma opinião de ex. git st
e obtenha a saída acima (programaticamente, a partir de um script).
Hámuitosoutroexistirquestõessobreesseparabash, mas não encontrei nada explicando como conseguir isso com o zsh.
Responder1
Isso pode ser feito usandoconclusão de captura zsh. O arquivo README.md do repositório fornece vários exemplos:
capture.zsh 'vim -'
capture.zsh 'vim --'
capture.zsh 'vim --r'
capture.zsh 'echo *('
capture.zsh 'scp hostname:'
Observe que o próprio pacote afirma que é uma prova de conceito e, como tal, pode conter erros em sua execução.