Wie kann ich in der Z-Shell mit bindkey eine Schlüsselsequenz an ein Skript binden?
Wie kann ich in der Z-Shell mit bindkey eine Schlüsselsequenz an ein Skript binden?
Antworten:
Sie können ein Widget definieren, das Ihr Skript aufruft:
my-script_widget() my-script its args
zle -N my-script_widget
bindkey '\ej' my-script_widget
Aber warum sollten Sie Ihr Skript direkt von zle aus aufrufen wollen?
Wenn etwas angezeigt wird, wird das Display durcheinander gebracht. Wenn die Ausgabe als andere Widget-Nachrichten angezeigt werden soll, haben Sie folgende Möglichkeiten:
my-script_widget() zle -M "$(my-script its args)"
Oder wenn Sie die Ausgabe am Cursor einfügen möchten:
my-script_widget() LBUFFER+=$(my-script its args)
Ich denke, Sie brauchen kein Widget dafür:
bindkey -s '\eb' '/path/to/script.sh\n'
Aus zsh docs :
Neben ZLE-Befehlen können Tastenfolgen mithilfe von 'bindkey -s' an andere Zeichenfolgen gebunden werden.
bindkey -s '\eb' '/path/to/script.sh^M'
Alt-B
an das Skript gebunden/path/to/script.sh\n
, sondern wird wie eingegeben eingefügt. Wenn Sie beispielsweiseAlt-B
nach der Eingabeecho
eingeben, wird derecho /path/to/script.sh
Befehl ausgeführt und Sie kehren zu einer leeren Eingabeaufforderung zurück (wobei dieecho
zuvor eingegebene Eingabeaufforderung nicht mehr vorhanden ist).