Gracias a su pregunta, finalmente leí un poco y aumenté mi comprensión, ¡salud!
Entonces, una muy buena fuente de información es man readline
. Las combinaciones de teclas especificadas en los diversos inputrc
Los archivos controlan la forma en que funciona la biblioteca de línea de lectura BASH. De acuerdo con la página de manual de readline, puede usar nombres de teclas simbólicas o secuencias de escape:
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"
La página del manual también indica que el archivo de configuración predeterminado es ~/.inputrc
así que recomiendo colocar sus fijaciones allí.
Si desea utilizar teclas de letras normales (por ejemplo, Control -g ), Control-g: forward-word
funciona bien. Las teclas de flecha son más difíciles. Intenté, y fallé, encontrar la clave nombre para las teclas de flecha. Ninguno de los que probé (left-arrow
, left
, :left
) funcionó, por lo que parece que estamos atrapados con las secuencias de escape.
Desafortunadamente, la secuencia de escape exacta difiere entre los emuladores de terminal (es por eso que su inputrc de Ubuntu tenía varias líneas). Para averiguar qué secuencia de escape usa su terminal favorito, ejecute read
y luego escriba la secuencia de teclas que le interesa. En terminator
, xterm
y gnome-terminal
, Control -Izquierda dar:
$ read
^[[1;5D
en aterm
:
$ read
^[Od <-- that is a capital O not a zero (0).
Experimentando un poco, descubrí que ^[[D
es Izquierda y ^[[1;5D
es Control -Izquierda . El primer ^[
es Esc tecla, usada aquí, supongo, para denotar una secuencia de escape .
En cualquier caso, para enlazar Control -Izquierda a forward-word
de una manera que funcione para todos, agregué estas líneas a mi ~/inputrc
:
"\e[1;5D": backward-word
"\eOd": backward-word
Por razones que no he entendido del todo, Control está representado por \e
que debería ser Esc .
Mi último ~/.inputrc
El archivo que funciona para todos los terminales mencionados anteriormente es:
"\e[1;5D": backward-word
"\eOd": backward-word
"\e[1;5C": forward-word
"\eOc": forward-word