如何以编程方式访问 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),如果我输入某个字符串并按下制表符,我如何获得会发生什么的输出?本质上,我正在尝试接受前任的输入。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:'

请注意,包本身声明它是概念证明,因此在执行过程中可能包含错误。

相关内容