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
Dateien angegebenen Tastenkombinationen steuern die Funktionsweise der BASH-Readline-Bibliothek. Entsprechend der Readline-Manpage können Sie entweder symbolische Schlüsselnamen 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 außerdem an, dass es sich bei der Standardkonfigurationsdatei um ~/.inputrc
die Bindungen handelt.
Wenn Sie normale Buchstabentasten (zum Beispiel Control- g) verwenden möchten, Control-g: forward-word
funktioniert dies einwandfrei. Die Pfeiltasten sind härter. Ich habe versucht, und es versäumen, den Schlüssel zu finden Namen für die Pfeiltasten. Keiner von denen, die ich versuchte, ( left-arrow
, left
, :left
) gearbeitet, so scheint es, wie wir mit den Escape - Sequenzen stecken.
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 read
Sie die gewünschte Tastenfolge aus und geben Sie sie ein. In terminator
, xterm
und gnome-terminal
, Control- Leftgeben Sie Folgendes ein:
$ read ^[[1;5D
in aterm
:
$ read ^[Od <-- that is a capital O not a zero (0).
Durch ein wenig Experimentieren habe ich herausgefunden, dass es ^[[D
ist Leftund ^[[1;5D
ist Control- Left. Der erste ^[
ist der EscSchlüssel, der hier verwendet wird, um eine Escape-Sequenz zu bezeichnen .
Auf jeden Fall zu binden Control- Leftzu forward-word
in einer Weise, die für alle funktioniert, ich diese Zeilen zu meinem hinzugefügt ~/inputrc
:
"\e[1;5D": backward-word "\eOd": backward-word
Aus Gründen, die ich nicht vollständig verstanden habe, Controlsoll dargestellt werden, \e
welche sein sollen Esc.
Meine endgültige ~/.inputrc
Datei, die für alle oben aufgeführten Terminals funktioniert, lautet:
"\e[1;5D": backward-word "\eOd": backward-word "\e[1;5C": forward-word "\eOc": forward-word