Comprensión de los caracteres de control en .inputrc

21

Mi cuenta de Linux en una máquina remota viene con lo siguiente predefinido .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

Estoy leyendo la documentación de GNU bash sobre el tema , pero no he sido capaz de encontrar una sección que explica lo que las secuencias de caracteres \e[1~, \e[5C, \e\e[D, etc significan.

Creo que leí en alguna parte que \esignifica meta character(que creo que esAlt en mi teclado), pero no entienden lo que los otros caracteres de control [, ~, 5Detc. media.

¿Alguien sabe de una buena referencia sobre el tema?

Amelio Vazquez-Reina
fuente

Respuestas:

21

Estas son secuencias de escape de código de control ANSI que se transmiten cuando se presionan varias teclas no alfanuméricas en un teclado "terminal".

\ e significa el carácter ASCII "ESCAPE" (octal 033 hex 1B decimal 27). Que es parte de una secuencia de comandos de introducción (CSI).

Escape [ 2 ~es una secuencia de caracteres transmitida cuando presiona la tecla "Insertar" en un terminal VT220 (o posterior) .

Muchas de estas convenciones se han adoptado en software como xterm y consolas / shells de Linux, a menudo extendidas de varias maneras, a veces incompatibles.

El uso de estas secuencias en la función READLINE de bash se describe en las páginas del manual para readline

       En la segunda forma, "keyseq": nombre-función o macro, keyseq difiere
       del nombre de la clave anterior en que las cadenas que denotan una secuencia de teclas completa pueden
       se especificará colocando la secuencia entre comillas dobles. Algo de GNU
       Se pueden usar escapes de teclas de estilo Emacs, como en el siguiente ejemplo, pero
       los nombres de caracteres simbólicos no se reconocen.

          "\ Cu": argumento universal
          "\ Cx \ Cr": re-read-init-file
          "\ e [11 ~": "Tecla de función 1"

Para obtener una lista de las secuencias de escape que corresponden a las teclas del teclado, puede usar un comando como infocmp -L -1oinfocmp -L -1 xterm

RedGrittyBrick
fuente
¡¡Excelente!! Eso es exactamente lo que estaba buscando. Gracias @RedGrittyBrick!
Amelio Vazquez-Reina
+1. Estaba buscando Ctrlcódigo en inputrc-> ENTER= Ctrl+ n.
rendon
@ user1133275: enlace actualizado pero el comando man 3 readline en su propio sistema debería proporcionarle la misma información. El comando man 3 readlinetambién funciona en WSL en Windows 10 . Si es necesario, puede hacer una nueva pregunta sobre las partes específicas de la bind -Pproducción que le causan dificultades.
RedGrittyBrick