Я возюсь с 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}