我正在为我编写的Shell脚本/程序编写一个zsh完成函数。在完成过程中的某个时刻,我想使用另一个命令的完成功能来处理其余的完成。
如何找出特定命令的完成功能?如何查找compdef
外壳中的现有任务?
我的程序自动换行,nvim
并且_nvim
我的外壳中没有任何我想会是完成功能的功能。因此我假设所nvim
使用的完成函数实际上是_vim
但这个问题是为了学习更一般。
只需键入命令加一个空格,然后按CtrlX,然后H在运行的_complete_help
小部件。例如:
% 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)
这告诉你,对于input nvim
,完成系统将调用_vim
,然后调用_arguments
,添加argument-rest
和options
完成。然后,_arguments
调用_vim_files
,后者调用_files
,从而添加globbed-files
补全。
或者,如果你仅对传递给的顶级完成功能感兴趣compdef
,请执行以下操作:
% print $_comps[nvim]
_vim