Zsh completion:如何使用特定命令查找用于完成的函数?
我正在为我编写的shell脚本/程序编写zsh完成函数。在完成过程中的某个时刻,我希望使用另一个命令的completion函数来处理剩余的完成 我如何找出特定命令的完成函数调用了什么?如何在shell中查找现有的Zsh completion:如何使用特定命令查找用于完成的函数?,zsh,zsh-completion,Zsh,Zsh Completion,我正在为我编写的shell脚本/程序编写zsh完成函数。在完成过程中的某个时刻,我希望使用另一个命令的completion函数来处理剩余的完成 我如何找出特定命令的完成函数调用了什么?如何在shell中查找现有的compdef分配? 背景 我的程序包装了nvim,并且在我的shell中没有\u nvim函数,我猜这就是完成函数。因此,我假设nvim使用的完成函数实际上是\u vim,但为了学习,这个问题更一般。只需键入命令加上空格,然后按CtrlX,然后按H来运行。例如: % nvim # pr
compdef
分配?
背景
我的程序包装了
nvim
,并且在我的shell中没有\u nvim
函数,我猜这就是完成函数。因此,我假设nvim
使用的完成函数实际上是\u vim
,但为了学习,这个问题更一般。只需键入命令加上空格,然后按CtrlX,然后按H来运行。例如:
% nvim # press ^Xh here
tags in context :completion::complete:nvim::
argument-rest options (_arguments _vim)
tags in context :completion::complete:nvim:argument-rest:
globbed-files (_files _vim_files _arguments _vim)
这告诉您,对于输入nvim
,完成系统将调用\u vim
,然后调用\u参数
,添加参数剩余
和选项
完成。然后,\u参数
调用\u vim\u文件
,调用\u文件
,添加全局文件
完成
或者,如果您只对传递给compdef
的顶级完成函数感兴趣,只需执行以下操作:
% print $_comps[nvim]
_vim