Grundlegendes zu Steuerzeichen in .inputrc

21

Mein Linux-Konto auf einem Remotecomputer wird mit den folgenden vordefinierten Elementen geliefert .inputrc

"\e[1~": beginning-of-line
"\e[4~": end-of-line
\e[5~”: history-search-backward
\e[6~”: history-search-forward
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

set completion-ignore-case on
set bell-style visible
set expand-tilde on
set convert-meta off
set input-meta on
set output-meta on
set show-all-if-ambiguous on
set visible-stats on

Ich lese das GNU bash Dokumentation zum Thema , aber ich habe nicht einen Abschnitt zu finden in der Lage zu erklären , was die Zeichenfolge \e[1~, \e[5C, \e\e[Detc. bedeuten.

Ich glaube , ich habe irgendwo gelesen , dass \eMittel die meta character(was ich denke , ist Altin meiner Tastatur), aber nicht verstehen , was die anderen Steuerzeichen [, ~, 5Dusw. bedeuten.

Kennt jemand eine gute Referenz zum Thema?

Amelio Vazquez-Reina
quelle

Antworten:

21

Dies sind ANSI-Steuercode-Escape-Sequenzen , die übertragen werden, wenn verschiedene nicht alphanumerische Tasten auf einer "Terminal" -Tastatur gedrückt werden.

\ e bedeutet das ASCII-Zeichen "ESCAPE" (Oktal 033 hex 1B dezimal 27). Welches ist Teil einer Command Sequence Introduction (CSI).

Escape [ 2 ~ist eine Zeichenfolge, die gesendet wird, wenn Sie die Taste "Einfügen" an einem VT220-Terminal (oder einem späteren Terminal) drücken .

Viele dieser Konventionen wurden in Software wie xterm und Linux-Konsolen / Shells übernommen - oft auf verschiedene, manchmal inkompatible Arten erweitert.

Die Verwendung dieser Sequenzen in der READLINE-Funktion von bash ist in den Manpages für readline beschrieben

       In der zweiten Form "keyseq": Funktionsname oder Makro, keyseq ist unterschiedlich
       aus dem obigen Schlüsselnamen in den Zeichenfolgen, die eine gesamte Schlüsselsequenz bezeichnen
       angegeben werden, indem die Reihenfolge in doppelte Anführungszeichen gesetzt wird. Einige GNU
       Escape-Zeichen im Emacs-Stil können wie im folgenden Beispiel verwendet werden
       Die symbolischen Zeichennamen werden nicht erkannt.

          "\ Cu": Universalargument
          "\ Cx \ Cr": Init-Datei erneut lesen
          \ e [11 ~: Funktionstaste 1

Um eine Liste zu erhalten, welche Escape-Sequenzen welchen Tastaturtasten entsprechen, können Sie einen Befehl wie infocmp -L -1oder verwendeninfocmp -L -1 xterm

RedGrittyBrick
quelle
Ausgezeichnet!! Das ist genau das, was ich suchte. Danke @RedGrittyBrick!
Amelio Vazquez-Reina
+1. Ich habe nach CtrlCode in inputrc-> ENTER= Ctrl+ gesucht n.
Rendon
@ user1133275: Link aktualisiert, aber der Befehl man 3 readline auf Ihrem eigenen System sollte dieselben Informationen enthalten. Der Befehl man 3 readlinefunktioniert auch in WSL unter Windows 10 . WENN nötig, können Sie eine neue Frage zu den spezifischen Teilen der bind -PAusgabe stellen, die Ihnen Schwierigkeiten bereiten.
RedGrittyBrick