¿Cuál es la secuencia de escape ANSI gnome-terminal para "CTRL + flecha / s"?

10

Estoy tratando de configurar mi fiesta ~/.inputrca estos valores
(Nota: , significa que las teclas de flecha izquierda y derecha)

  • Ctrl+ - debería retroceder una palabra
  • Ctrl+ - debería saltar una palabra hacia adelante

Actualmente tengo esto en mi ~/.inputrcy no funciona. Ctrl + arrowno produce nada

"\eC-5C":forward-word
"\eC-5D":backward-word

Estoy seguro de que mi secuencia de escape es incorrecta.
¿Cuáles son las secuencias de escape correctas para las Ctrl + arrowcombinaciones?

  • terminal: tmux dentro de gnome-terminal
the_velour_fog
fuente

Respuestas:

14

Gnome-terminal (más apropiadamente VTE ) imita alguna versión de las secuencias de escape de xterm. Lo cerca que haga esto depende de la versión de VTE.

La documentación relevante de xterm se encuentra en la sección Teclas de función estilo PC de XTerm Control Sequences .

Lo que está buscando es una cadena como \e[1;5D(para el control de flecha izquierda), donde 5denota el controlmodificador.

En ncurses, se puede ver estas cadenas utilizando infocmp -x, como los valores de kUP5, kDN5, kLFT5y kRIT5. Por ejemplo:

    kDN5=\E[1;5B,
    kLFT5=\E[1;5D,
    kRIT5=\E[1;5C,        
    kUP5=\E[1;5A,
Thomas Dickey
fuente
Gracias por la respuesta y el enlace a los recursos. ¡Esto resolvió mi problema!
the_velour_fog
16

La forma más sencilla de encontrar cuáles son los códigos de una secuencia de teclas es usar ctrl- v.

Entonces, escribe ctrl Vy ctrl para obtener:

^[[1;5C

Cuál es una forma de escribir ESC[1;5Co \e[1;5C.


fuente
Wow genial. ¿Sabes si esa es una característica prevista de gnome-terminal, o es algo que se descubrió por accidente?
the_velour_fog
Tanto zsh ( bindkey|grep 'quoted-insert') como bash ( bind -p|grep 'quoted-insert') tienen un enlace de teclas para generar los códigos de teclas establecidos en <c-v>.
kba está con Monica
1
Para lo que vale, Ctrl-V realiza la misma función en los modos Insertar y Comando de Vim.
joeytwiddle
44
@the_velour_fog Ctrl + V que significa "insertar el siguiente carácter en lugar de interpretarlo como un comando de terminal" se remonta a los primeros días de Unix. Es una característica del procesamiento de la línea de comandos del núcleo que ha sido imitada por sistemas de entrada más sofisticados como bash, zsh, vi, ...
Gilles 'SO- deja de ser malvado'
1
@kba Para el registro, no son los únicos. Bash's en realidad es proporcionado por la biblioteca GNU Readline de la que depende, que también lo vincula para <c-q>que coincida con la combinación de teclas de Emacs que está copiando. Zsh también se une a ambos <c-v>y <c-q>, pero sólo si se habilita el modo de Vim, irónicamente. Readline también es utilizado por otras cosas como la import rlcompletermejora de Python . (Fuentes: tiswww.case.edu/php/chet/readline/readline.html#SEC9 y man zshzle)
ssokolow