¿Cómo arreglar Ctrl + flechas en Vim?


26

Estoy usando el Putty -> Suse box -> vim 7.2combo para editar y quiero reasignar Ctrl + flechas combo a una tarea en particular. Pero por alguna razón, Vim ignora el acceso directo y entra en modo de inserción e inserta el carácter "D" (para la izquierda) de "C" (para la derecha).

¿Qué parte de la configuración de mi teclado / terminal es la culpable y cómo solucionarlo?


PuTTY no envía secuencias útiles distintivas para las flechas de control. Ninguna de las respuestas sugeridas son correctas (o útiles).
Thomas Dickey

Respuestas:


27

Averigüe exactamente qué secuencia de escape envía su terminal para la Ctrlflecha + escribiendo Ctrl+ V, Ctrl+ flecha en modo de inserción: esto insertará literalmente el ESCcarácter principal (que se muestra como ^[en vim), seguido del resto de la secuencia de escape. Luego dile a vim sobre estas secuencias de escape con algo como

map <ESC>[5D <C-Left>
map <ESC>[5C <C-Right>
map! <ESC>[5D <C-Left>
map! <ESC>[5C <C-Right>

Me parece recordar que Putty tiene una configuración predeterminada para el modo de teclas de cursor de aplicación que es inconveniente (no recuerdo por qué), es posible que primero desee alternar esta configuración.

Tenga en cuenta que aunque las secuencias de escape varían entre terminales, los conflictos (es decir, una secuencia de escape que corresponde a diferentes teclas en diferentes terminales) son raros, por lo que no hay necesidad particular de intentar aplicar las asignaciones solo en un tipo de terminal en particular.


¿Cómo puedo saber qué secuencia de escape se envía?
Alex B

@ Alex: He tratado de aclarar mi explicación, quejarse si aún no entiende mi primera oración.
Gilles 'SO- deja de ser malvado'

También puede ejecutar od -ao od -csi cava octal y luego escribe las teclas en cuestión. Ver "agregado" en mi respuesta para un ejemplo.
msw

Perdón por volver a esta pregunta tan tarde, pero he descubierto que PuTTY todavía envía las teclas del cursor de la aplicación al terminal, incluso después de que la apago por completo . Estoy perdido, ¿qué más debo ajustar para que desaparezca?
Alex B

@Alex: no es necesario que desaparezca, puede informar a sus aplicaciones sobre ellos (lo que he encontrado que es el camino de menor resistencia). O puede reemplazar PuTTY por una de las alternativas, como mintty más Cygwin ssh (pero eso está fuera de tema para este sitio).
Gilles 'SO- deja de ser malvado'

7

Su mejor opción es probablemente mirar la configuración del modo de teclas de cursor de aplicación de PuTTY .

Las secuencias predeterminadas se envían ESCcomo prefijo y [seguidas de Append o Change u otras cosas que lo llevan al modo de inserción.

agregado, siguiendo a Gilles

Una versión un poco más explícita del escape ^ V se puede ver con od (1). Aquí estoy yo escribiendo ^ Arriba, ^ Abajo, ^ Derecha, ^ Izquierda en mi terminal:

$ od -a
0000000 esc   [   1   ;   5   A esc   [   1   ;   5   B esc   [   1   ;
0000020   5   C esc   [   1   ;   5   D

Entonces mi terminal envía ^[[1;5Acuando presiono Ctrl+


Apagar el modo de teclas de cursor de aplicación no parece ayudar.
Alex B


0

para mi y otros problemas de teclado vim simplemente hago

vim ~/.vimrc
set nocompatible
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.