Dank Ihrer Frage habe ich endlich etwas gelesen und mein Verständnis erweitert, Prost!
Eine sehr gute Informationsquelle ist also man readline
. Die in den verschiedenen inputrc
angegebenen Tastenkombinationen Dateien steuern die Funktionsweise der BASH-Readline-Bibliothek. Laut der Readline-Manpage können Sie entweder symbolische Tastennamen oder Escape-Sequenzen verwenden:
Key Bindings
The syntax for controlling key bindings in the inputrc file is
simple. All that is required is the name of the command or
the text of a macro and a key sequence to which it should be
bound. The name may be specified in one of two ways: as a sym‐
bolic key name, possibly with Meta- or Control- prefixes, or
as a key sequence. The name and key sequence are separated by
a colon. There can be no whitespace between the name and the
colon.
When using the form keyname:function-name or macro, keyname is
the name of a key spelled out in English. For example:
Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"
Die Manpage gibt auch an, dass die Standardkonfigurationsdatei ~/.inputrc
ist Daher empfehle ich, Ihre Bindungen dort zu platzieren.
Wenn Sie normale Buchstabentasten verwenden möchten (zum Beispiel Control -g ), Control-g: forward-word
funktioniert gut. Die Pfeiltasten sind schwieriger. Ich habe erfolglos versucht, den Schlüssel name zu finden für die Pfeiltasten. Keine von denen, die ich ausprobiert habe (left-arrow
, left
, :left
) hat funktioniert, also scheinen wir mit den Escape-Sequenzen festzustecken.
Leider unterscheidet sich die genaue Escape-Sequenz zwischen den Terminalemulatoren (deshalb hatte Ihr Ubuntu inputrc mehrere Zeilen). Um herauszufinden, welche Escape-Sequenz Ihr bevorzugtes Terminal verwendet, führen Sie read
aus und geben Sie dann die gewünschte Tastenfolge ein. In terminator
, xterm
und gnome-terminal
, Steuerung -Links geben:
$ read
^[[1;5D
in aterm
:
$ read
^[Od <-- that is a capital O not a zero (0).
Durch ein wenig Experimentieren habe ich herausgefunden, dass ^[[D
ist links und ^[[1;5D
ist Kontrolle -Links . Die erste ^[
ist das Esc Taste, hier verwendet, nehme ich an, um eine Escape-Sequenz zu bezeichnen .
In jedem Fall Control zu binden -Links bis forward-word
auf eine Weise, die für alle funktioniert, habe ich diese Zeilen zu meinem ~/inputrc
hinzugefügt :
"\e[1;5D": backward-word
"\eOd": backward-word
Aus Gründen, die ich nicht ganz verstanden habe, Control wird durch \e
dargestellt was sollte sei Esc .
Mein letztes ~/.inputrc
Datei, die für alle oben aufgeführten Terminals funktioniert, ist:
"\e[1;5D": backward-word
"\eOd": backward-word
"\e[1;5C": forward-word
"\eOc": forward-word