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
Run Code Online (Sandbox Code Playgroud)
我所能弄清楚的是,这来自 script /usr/share/zsh/functions/Completion/Unix/_git,在哪里_git调用完成命令。
假设我知道完成函数的名称(例如_git),如果我输入某个字符串并按下 Tab,我怎么能得到会发生什么的输出?本质上,我正在尝试输入 ex。git st并获得上面的输出(以编程方式,从脚本中)。
这可以通过使用zsh-capture-completion来完成。存储库的 README.md 文件提供了几个示例:
capture.zsh 'vim -'
capture.zsh 'vim --'
capture.zsh 'vim --r'
capture.zsh 'echo *('
capture.zsh 'scp hostname:'
Run Code Online (Sandbox Code Playgroud)
请注意,包本身声明它是概念证明,因此在执行过程中可能包含错误。