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

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

我正在摆弄小accept-line部件,但没有得到我想要的结果。我想通过查找底层 zsh 函数来检查(并记录)accept-line 发生的情况。

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

我对兹什勒手册页并进行了一些谷歌搜索,但我能想到的最好的方法是使用该zle -l操作的以下内容。

zle -l  | grep '^accept-line ' | grep -Eo '\(.*\)' | tr -d '()'

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

答案1

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

echo $widgets[accept-line]

但请注意,某些小部件是内部定义的,您将得到的只是一个单词内置,但从你的来看grep命令一些源自的脚本.zshrc覆盖该小部件,因此您应该得到有意义的结果。

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

echo ${(kv)widgets}

相关内容