ak1*_*k17 2 zsh autocomplete function
有没有办法查找(只需将完成定义打印到标准输出)当前加载的 zsh 完成函数。
我知道它们存储在我的 fpath 的某个地方,我可以做一些事情,比如ag $fpath completionname
在文件中找到定义。有没有更干净的方法,zsh 函数或其他方法可以做到这一点?
命令的完成函数的名称foo
是$_comps[foo]
.
要查看函数的代码myfunc
,请运行echo -E $functions[myfunc]
,或者echo $functions[myfunc]
如果您可以bsd_echo
选择 或print -rl $functions[myfunc]
。因此,要查看命令的完成函数的代码foo
,请运行echo -E $functions[$_comps[foo]]
. 或者,which $_comps[foo]
如果函数名称没有别名,则运行。
这显示了没有注释的代码(并且带有规范化的空格:它是 zsh 内部存储的字节码的人类可读转储)。如果要查看代码中定义的原始文件,请运行whence -v $_comps[foo]
或echo $functions_source[$_comps[foo]]
。该functions_source
数组仅在加载模块时zsh/parameter
可用(您可以使用zmodload zsh/parameter
)并且仅自 zsh 5.4 起可用。
如果你还没有使用过这个函数,你会看到类似的东西builtin autoload -XU
而不是代码,并且没有指向源代码的路径。要查看源路径,autoload -r $_comps[foo]
请先运行让 zsh 解析源路径,然后您可以使用which
orwhence
或显示它$functions_source
。
zmodload zsh/parameter
(($+_comps[foo])) &&
autoload -r $_comps[foo] &&
((+$functions_source[$_comps[foo]])) &&
cat $functions_source[$_comps[foo]]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
194 次 |
最近记录: |