Как найти функцию zsh, связанную с виджетом zle?

Как найти функцию zsh, связанную с виджетом zle?

Я возюсь с accept-lineвиджетом и не получаю желаемых результатов. Я хочу проверить (и записать в журнал), что происходит с accept-line, найдя лежащую в основе функцию zsh.

Насколько я понимаю, виджеты 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}

Связанный контент