Comment accéder par programmation à l'achèvement de zsh?


8

zsh dispose d'un système de complétion, activé en appuyant sur 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

Tout ce que j'ai pu comprendre, c'est que cela vient du script /usr/share/zsh/functions/Completion/Unix/_git, où _gitest appelée la commande d'achèvement.

En supposant que je connaisse le nom de la fonction d'achèvement (par exemple _git), comment puis-je obtenir la sortie de ce qui se passerait si j'entrais une certaine chaîne et appuyais sur tab? Essentiellement, j'essaye de prendre une entrée d'ex. git stet obtenez la sortie ci-dessus (par programme, à partir d'un script).

Il y a beaucoup d' autres existants des questions sur ce pour bash, mais je n'ai rien trouvé qui explique comment atteindre cet objectif avec zsh.


Réponses:


2

Cela peut être fait en utilisant zsh-capture-complétement . Le fichier README.md du référentiel fournit plusieurs exemples:

capture.zsh 'vim -'
capture.zsh 'vim --'
capture.zsh 'vim --r'
capture.zsh 'echo *('
capture.zsh 'scp hostname:'

Notez que le package lui-même indique qu'il s'agit d'une preuve de concept et, en tant que tel, peut contenir des erreurs dans son exécution.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.