Ich spiele mit dem accept-line
Widget herum und bekomme nicht die gewünschten Ergebnisse. Ich möchte überprüfen (und protokollieren), was mit der Akzeptanzzeile geschieht, indem ich die zugrunde liegende Zsh-Funktion finde.
Nach meinem Verständnis existieren ZLE-Widgets in ihrem eigenen separaten Namespace mit der Operation, die zle -N
Schlüssel den Werten in diesem Namespace zuordnet, und der Operation, zle -A
die Zuordnungen dupliziert.
Ich habe eine ziemlich detaillierte Suche nach derAbonnierenIch habe die Manualpage durchsucht und ein bisschen gegoogelt, aber das Beste, was mir eingefallen ist, ist das Folgende, das die zle -l
Operation erklärt.
zle -l | grep '^accept-line ' | grep -Eo '\(.*\)' | tr -d '()'
Gibt es irgendetwas, das nicht so direkt vom Ausgabeformat abhängt zle -l
?
Antwort1
Es gibt ein spezielles Array namens widgets
, das die Namen aller Widgets und der ihnen zugeordneten Funktionen enthält. Versuchen Sie also
echo $widgets[accept-line]
Beachten Sie jedoch, dass einige Widgets intern definiert sind und Sie nur ein Wort erhalteneingebautaber nach IhrergrepBefehl ein Skript aus.zshrchat dieses Widget überschrieben, sodass Sie ein sinnvolles Ergebnis erhalten sollten.
Übrigens, wenn Sie alle verfügbaren Widgets und ihre Funktionen auflisten möchten, verwenden Sie (kv)
das Flag:
echo ${(kv)widgets}