Как программно получить доступ к автодополнению zsh?

Как программно получить доступ к автодополнению zsh?

zsh имеет систему автодополнения, активируемую нажатием клавиши 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

Все, что мне удалось выяснить, это то, что это происходит из скрипта /usr/share/zsh/functions/Completion/Unix/_git, где _gitвызывается команда завершения.

Предполагая, что я знаю имя функции завершения (например _git), как я могу получить вывод того, что произойдет, если я введу определенную строку и нажму Tab? По сути, я пытаюсь взять ввод ex. git stи получить вывод выше (программно, из скрипта).

Естьмногодругойсуществующийвопросыоэтотдляbash, но я не нашел ничего, объясняющего, как добиться этого с помощью zsh.

решение1

Это можно сделать с помощьюzsh-захват-завершение. Файл README.md репозитория содержит несколько примеров:

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

Обратите внимание, что в самом пакете указано, что он является доказательством концепции, и поэтому может содержать ошибки в его выполнении.

Связанный контент