Warm tip: This article is reproduced from serverfault.com, please click

其他-Zsh补全:如何查找用于使用特定命令补全的函数?

(其他 - Zsh completion: How to find the function that is used for completions with a specific command?)

发布于 2020-11-01 17:13:08

我正在为我编写的Shell脚本/程序编写一个zsh完成函数。在完成过程中的某个时刻,我想使用另一个命令的完成功能来处理其余的完成。

如何找出特定命令的完成功能?如何查找compdef外壳中的现有任务?

背景

我的程序自动换行,nvim并且_nvim我的外壳中没有任何我想会是完成功能的功能。因此我假设所nvim使用的完成函数实际上是_vim但这个问题是为了学习更一般。

Questioner
Lucas
Viewed
0
Marlon Richert 2020-11-30 17:44:37

只需键入命令加一个空格,然后按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-restoptions完成。然后,_arguments调用_vim_files,后者调用_files,从而添加globbed-files补全。

或者,如果你仅对传递给的顶级完成功能感兴趣compdef,请执行以下操作:

% print $_comps[nvim]
_vim