it-swarm-es.tech

¿Cómo arreglar Ctrl + flechas en Vim?

Estoy usando PuTTY -> Suse box -> vim 7.2 combo para editar y desea 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?

27
Alex B

Averigua exactamente qué secuencia de escape envía tu terminal Ctrl+ flecha escribiendo Ctrl+VCtrl+ flecha en modo de inserción: esto insertará el carácter inicial ESC (que se muestra como ^[ en vim) literalmente, 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 modo de teclas de cursor de aplicación eso 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 es necesario intentar aplicar las asignaciones solo en un tipo de terminal en particular.

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

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

agregado, siguiendo a Gilles

Se puede ver una versión un poco más explícita del escape ^ V 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;5A cuando presiono Ctrl

7
msw

Encontré una solución mejor aquí: http://vim.wikia.com/wiki/Fix_arrow_keys_that_display_A_B_C_D_on_remote_Shell

Solo pon esta cadena en tu .vimrc expediente:

:set term=cons25

Actualización

Copie este archivo a su /home, renombrándolo .vimrc:

/usr/share/vim/vim_VERSION_/vimrc_example.vim
2
trigal

para mi y otros problemas de teclado vim simplemente hago

vim ~/.vimrc
set nocompatible
0
zainengineer