如何找到与 zle 小部件关联的 zsh 函数?

Att*_*igh 6 zsh zle

我弄乱了accept-line小部件并没有得到我想要的结果。我想通过查找底层 zsh 函数来检查(并记录)accept-line 发生了什么。

我的理解是 zle 小部件存在于它们自己单独的命名空间中,操作zle -N映射键到该命名空间中的值和操作zle -A复制映射。

我对zshzle手册页进行了相当详细的搜索,并进行了一些谷歌搜索,但我能想到的最好的是使用该zle -l操作的以下内容。

zle -l  | grep '^accept-line ' | grep -Eo '\(.*\)' | tr -d '()'
Run Code Online (Sandbox Code Playgroud)

有没有什么不直接依赖于zle -l.

jim*_*mij 6

有一个名为的特殊数组widgets,其中包含所有小部件和与其关联的函数的名称,因此请尝试

echo $widgets[accept-line]
Run Code Online (Sandbox Code Playgroud)

注意然而,一些部件被内部定义和所有你得到的是一个词内置,但是从你的判断的grep命令脚本的一些来源中.zshrc改写该小工具,所以你应该得到有意义的结果。

顺便说一句,如果您想列出所有可用的小部件及其功能,请使用(kv)标志:

echo ${(kv)widgets}
Run Code Online (Sandbox Code Playgroud)