
Ich verwende einen MAC und versuche, Verknüpfungen für mein auf Iterm2 laufendes ZSH zu finden.
Wenn ich bindkey in die Shell eingebe, sehe ich (neben anderen Zuordnungen) Folgendes:
"^[b" backward-word
"^[f" forward-word
Ich weiß, dass ^ die Strg-Taste ist. Aber was, wenn ich Strg + [ + f drücke, geht es kein Wort weiter.
Was vermisse ich?
Antwort1
^
ist normalerweise Strg, ^[
bedeutet aber eigentlich Escape oder Alt (oder Meta, wenn Sie Emacs mögen).
Sie können für diese Tastenkombinationen also Escboder drücken.Escf
Standardmäßig funktioniert Alt auf Mac-Terminals nicht, aber iTerm2 hat eine Einstellung: „Option fungiert als [ ] Normal [ ] Meta [ ] +Esc“. Sie möchten +Esc.
Antwort2
Eigentlich ^[
ist es die Alt-Taste. In Ihrem Fall verwendet das Terminal (Iterm2) also Alt + b und Alt + f, um ein Wort vor- und zurückzublättern. Dies wird von Ihrem Terminal gesteuert und hat nichts mit zsh zu tun.
Antwort3
ErweiternmrbAntwort:
Tatsächlich ^[b
ist es ESC+ boder ( Meta/Alt+ b). Sie können Zeichen wörtlich anzeigen, indem Sie ihnen Ctrl+ voranstellen v. In diesem Fall finden Sie Folgendes:
Ctrl+ v Ctrl+b
^B
Ctrl+ v Meta+b
^[b
Ctrl+v ESC b
^[b
Darüber hinaus finden Sie im zsh-Handbuch:
backward-word (ESC-B ESC-b) (unbound) (unbound)
Move to the beginning of the previous word.
und ähnlich für forward-word
:
forward-word (ESC-F ESC-f) (unbound) (unbound)
Move to the beginning of the next word.
Antwort4
Die ^
Notation wird in der GNU-Welt häufig für Steuerzeichen verwendet, wobei ^a
Strg-A (ASCII 1, wobei A ASCII 65 ist) ist. Mit anderen Worten ist es eine Abkürzung für „Verwende das Zeichen 64 Plätze davor“.
Der ESC
Schlüssel ist ASCII 27, also 64 Schritte vor [
, ^[
und ist daher die Abkürzung für ESC.
Im GNU Emacs-Editor wurden mehrere Modifikatortasten verwendet, STRG, META und andere. Beispielsweise bewegt STRG-f den Cursor ein Zeichen vorwärts und META-f bewegt den Cursor ein Wort vorwärts.
Um den vielen Tastaturen ohne META-Taste gerecht zu werden, gibt es die Konvention „ESC bedeutet, dass das nächste Zeichen als mit der META-Taste gedrückt gilt“. Daher bewegt sich in GNU Emacs der Cursor durch Drücken von ESC-f ein Wort vorwärts.
Beachten Sie, dass es heutzutage sehr selten vorkommt, dass Ctrl-[
ein ESC-Zeichen ausgegeben wird, es kann aber in einer anderen Strg-Kombination lauern. Beispielsweise wird es ^^
in Telnet-Sitzungen immer noch verwendet, um in den Befehlsmodus zu wechseln, daher ist es nützlich, es finden zu können.