如何找到與 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}

相關內容