Mapeo Gnome-terminal + Vim y Ctrl-Shift


11

¿Es posible mapear la secuencia con Ctrl- Shiften Gnome Terminal?

Estoy tratando de agregar las asignaciones

  • map <C-S-[> gT
  • map <C-S-]> gt

Y no está funcionando. ¿Como hacer eso?

De alguna manera mapeé <C-S-]>, pero resultó que no lo es <C-S-]>, pero <C-]>parece que no reconoce Shift en esta secuencia. ¿Está mal configurado o es culpa de gnome-terminal?

Además. El mapeo <C-[>, después de presionarlo, parece que vim está esperando. Supongo que es tiempo de espera de mapeo, pero ¿cómo deshacerse de este tiempo de espera cuando presiono con precisión <C-[>y no quiero presionar nada más?

Acabo de empezar a aprender vim, lo siento si hay algo obviamente mal en esas asignaciones.

Respuestas:


8

Creo que el problema aquí es que está intentando obtener vim, que espera ejecutarse en una terminal, para reconocer una secuencia CTRL-SHIFT. Si bien es posible que X reconozca tales combinaciones, las aplicaciones que se ejecutan en un terminal (o, en estos días, un emulador de terminal) no pueden. Esto se debe a que, históricamente, los terminales solo podían enviar y recibir secuencias de datos ASCII de siete u ocho bits a través de una conexión en serie (aunque esto podría incluir "secuencias de escape" que posicionan el cursor, se desplazan o eliminan líneas, cambian de color y otros elementos útiles efectos).

Hay 32 "Códigos de control" en el conjunto de caracteres ASCII, incluidos los conocidos CTRL-A a CTRL-Z. Pero no hay códigos ASCII correspondientes para "CTRL-SHIFT" de la A a la Z. Ahora, el terminal gnome mismo puede reconocer estos códigos (CTRL-SHIFT-V, por ejemplo, pegará el texto del portapapeles), pero vim no será capaz de tener acceso directo a él.

Por supuesto, puede ser posible (no lo sé) que se configure un emulador de terminal para convertir las pulsaciones de teclas CTRL-SHIFT en una secuencia de escape que luego se puede reconocer mediante un mapeo vim.

=======

ACTUALIZAR

Puede que le interese gvim, que es una versión gráfica de vim que se ejecuta como un programa X en lugar de un programa terminal. ¿Quizás gvim podrá entender los códigos CTRL-SHIFT?


4

Parece ser un problema con GNOME Terminal que no permite ciertas combinaciones con la Ctrltecla. La búsqueda en línea muestra muchos casos de esto.

En caso de que no lo sepas, Ctrl+ page up/ page downrecorre las pestañas.


3

Como Bartleby señaló, esta es una restricción terminal, porque vi considera que los códigos clave son los mismos.

Para terminales como xtermpuede cambiar eso. Para lo gnome-terminal que ignora la configuración de recursos X , no sé cómo hacer lo siguiente:

Esta pregunta SO cubre el mismo tema, y este ejemplo muestra esto en uso para asignar múltiples claves en el .Xresourcesarchivo. P.ej:

XTerm*vt100.translations: #override \
  Ctrl ~Meta Shift <Key>a: string(0x1b) string("[65;5u") \n\
  Ctrl ~Meta Shift <Key>b: string(0x1b) string("[66;5u") \n\ 
  Ctrl ~Meta Shift <Key>f: string(0x1b) string("[70;5u")  

Ahora tenemos diferentes secuencias de teclas para entrar en vi Ctrlavs CtrlShifta, Ctrlbvs CtrlShiftb, Ctrlfvs CtrlShiftf.

Ahora podemos mapearlos de manera diferente en ~/.vimrc:

map <ESC>[66;5u   :echo "ctrl-shift-b received"<CR>
map <ESC>[70;5u   :echo "ctrl-shift-f received"<CR>
map <C-b>         :echo "ctrl-b received"<CR>
map <C-f>         :echo "ctrl-f received"<CR>

La pregunta original era sobre gnome-terminal, mientras que su respuesta se refiere a xterm.
egmont

@egmont: Buen punto, y un descuido de mi parte. De acuerdo con esta respuesta al .Xresourcesson ignorados por gnome-terminal. Eso es desafortunado. Respuesta actualizada
cfi

Ligeramente redactado / cruzado esta respuesta como un par de preguntas y respuestas para SuperUser , porque probablemente debería eliminarlo aquí porque no se aplica al terminal del autor de la pregunta.
cfi

1

Parece que solo tienes que deshabilitar todos los atajos de teclado en gnome-terminal.


2
¿Por qué ayuda deshabilitar los atajos de teclado?
Eliah Kagan

No parece ayudar en absoluto, desde mi experiencia.
Elliot Foster

1

En gnome-terminalel escape las secuencias generadas por las claves no son configurables. Para muchas teclas Ctrl+ keyy Shift+ Ctrl+ keygeneran diferentes secuencias; desafortunadamente para [y ]no lo hacen, así que no puedes distinguirlos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.