我弄乱了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
.
有一个名为的特殊数组widgets
,其中包含所有小部件和与其关联的函数的名称,因此请尝试
echo $widgets[accept-line]
Run Code Online (Sandbox Code Playgroud)
注意然而,一些部件被内部定义和所有你得到的是一个词内置,但是从你的判断的grep命令脚本的一些来源中.zshrc改写该小工具,所以你应该得到有意义的结果。
顺便说一句,如果您想列出所有可用的小部件及其功能,请使用(kv)
标志:
echo ${(kv)widgets}
Run Code Online (Sandbox Code Playgroud)