Was ist die gnomterminale ANSI-Escape-Sequenz für „STRG + Pfeil / e“?

10

Ich versuche , meine bash zu konfigurieren , ~/.inputrczu diesen Einstellungen
(Hinweis: , bedeuten die linken und rechten Pfeiltasten)

  • Ctrl+ - sollte ein Wort zurückspringen
  • Ctrl+ - sollte ein Wort vorwärts springen

Derzeit habe ich dies in meinem ~/.inputrcund es funktioniert nicht. Ctrl + arrowproduziert nichts.

"\eC-5C":forward-word
"\eC-5D":backward-word

Ich bin sicher, dass meine Fluchtsequenz falsch ist.
Was sind die richtigen Escape-Sequenzen für die Ctrl + arrowKombinationen?

  • terminal: tmux im gnome-terminal
the_velour_fog
quelle

Antworten:

14

Das Gnome-Terminal (genauer gesagt VTE ) imitiert eine Version der Escape-Sequenzen von xterm. Wie genau dies geschieht, hängt von der Version von VTE ab.

Die entsprechende xterm-Dokumentation befindet sich im Abschnitt PC-Style-Funktionstasten von XTerm Control Sequences .

Was Sie suchen, ist eine Zeichenfolge wie \e[1;5D(für die Steuerung des linken Pfeils), wobei die 5den controlModifikator bezeichnet.

In ncurses, können Sie diese Strings sehen infocmp -x, wie die Werte für kUP5, kDN5, kLFT5und kRIT5. Beispielsweise:

    kDN5=\E[1;5B,
    kLFT5=\E[1;5D,
    kRIT5=\E[1;5C,        
    kUP5=\E[1;5A,
Thomas Dickey
quelle
Vielen Dank für die Antwort und den Link zu den Ressourcen. Dies löste das Problem für mich!
the_velour_fog
16

Der einfachste Weg, um die Codes einer Tastenfolge zu finden, ist die Verwendung von ctrl- v.

Also tippst du ctrl Vund um ctrl zu bekommen:

^[[1;5C

Welches ist eine Art zu schreiben ESC[1;5Coder \e[1;5C.


quelle
Wow cool. Wissen Sie, ob dies eine beabsichtigte Funktion des Gnome-Terminals ist oder ob es zufällig entdeckt wurde?
the_velour_fog
Sowohl zsh ( bindkey|grep 'quoted-insert') als auch bash ( bind -p|grep 'quoted-insert') haben eine Schlüsselbindung, um die auf eingestellten Schlüsselcodes auszugeben <c-v>.
kba steht mit Monica
1
Für das, was es wert ist, führt Strg-V die gleiche Funktion in den Einfüge- und Befehlsmodi von Vim aus.
Joeytwiddle
4
@the_velour_fog Strg + V bedeutet "das nächste Zeichen einfügen, anstatt es als Terminalbefehl zu interpretieren" und stammt aus den Anfängen von Unix. Es ist eine Funktion der Befehlszeilenverarbeitung des Kernels, die von komplexeren Eingabesystemen wie bash, zsh, vi, ... imitiert wurde.
Gilles 'SO - hör auf böse zu sein'
1
@kba Für die Aufzeichnung sind sie nicht die einzigen. Bash's wird tatsächlich von der GNU Readline-Bibliothek bereitgestellt, von der es abhängt. Dadurch wird es auch an die <c-q>Emacs-Tastenkombination gebunden, die kopiert wird. Zsh bindet es auch an beide <c-v>und <c-q>aber nur, wenn Sie den Vim-Modus aktivieren, ironischerweise. Readline wird auch von anderen Dingen wie der Python- import rlcompleterVerbesserung verwendet. (Quellen: tiswww.case.edu/php/chet/readline/readline.html#SEC9 und man zshzle)
ssokolow