Zsh completion:如何使用特定命令查找用于完成的函数?

Zsh completion:如何使用特定命令查找用于完成的函数?,zsh,zsh-completion,Zsh,Zsh Completion,我正在为我编写的shell脚本/程序编写zsh完成函数。在完成过程中的某个时刻,我希望使用另一个命令的completion函数来处理剩余的完成 我如何找出特定命令的完成函数调用了什么?如何在shell中查找现有的compdef分配? 背景 我的程序包装了nvim,并且在我的shell中没有\u nvim函数,我猜这就是完成函数。因此,我假设nvim使用的完成函数实际上是\u vim,但为了学习,这个问题更一般。只需键入命令加上空格,然后按CtrlX,然后按H来运行。例如: % nvim # pr

我正在为我编写的shell脚本/程序编写zsh完成函数。在完成过程中的某个时刻,我希望使用另一个命令的completion函数来处理剩余的完成

我如何找出特定命令的完成函数调用了什么?如何在shell中查找现有的
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