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]

ただし、一部のウィジェットは内部的に定義されており、得られるのは単語だけであることに注意してください。組み込み、しかしあなたのグレップコマンドのソースとなるスクリプト.zshrcそのウィジェットを上書きしたので、意味のある結果が得られるはずです。

ちなみに、利用可能なすべてのウィジェットとその機能を一覧表示したい場合は、(kv)次のフラグを使用します。

echo ${(kv)widgets}

関連情報