En vim, ¿cómo puedo reasignar <tab> sin también reasignar <Ctrl + i>?

14

Me gusta usar la pestaña para saltar entre ventanas divididas, así que tengo map <tab> <C-W><C-W>en mi .vimrc. Sin embargo, noté que esto hace que Ctrl + I ya no se comporte como Ctrl + I, sino como Ctrl + W, Ctrl + W. ¿Cómo puedo reasignar solo <tab>pero no <C-i>?

Jonathan
fuente

Respuestas:

10

Debido a la forma en que la entrada del teclado se maneja internamente, desafortunadamente esto no es posible en la actualidad, incluso en GVIM. Algunas combinaciones de teclas, como Ctrl+ no alfabético, no se pueden asignar, y Ctrl+ letra vs. Ctrl+ Shift+ letra no se pueden distinguir. (A menos que su terminal envíe un código de captación de términos distinto , que la mayoría no envía ). En el modo de inserción o de línea de comandos, intente escribir la combinación de teclas. Si no sucede nada / se inserta, no puede usar esa combinación de teclas. Esto también se aplica a <Tab>/ <C-I>, <CR>/ <C-M>/ <Esc>/ <C-[>etc. (La única excepción es <BS>/ <C-H>.) Este es un punto de dolor conocido y es el tema de varias discusiones sobre vim_dev y el canal #vim IRC.

Algunas personas (principalmente Paul LeoNerd Evans) quieren arreglar eso (incluso para la consola Vim en terminales que admiten esto), y han presentado varias propuestas, cp. http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8

Pero a partir de hoy, todavía no se han presentado parches o voluntarios, aunque muchos han expresado su deseo de tener esto en una futura versión principal de Vim 8.

Ingo Karkat
fuente
1
¿Se resolvió este problema de mapeo / reconocimiento de códigos clave en Vim 8 a partir de ahora (año 2017)? Me parece que todavía puedo reproducir el ejemplo de Jon en mi Vim 8.0
llinfeng
@llinfeng: No, desafortunadamente no. Bram está trabajando actualmente en integrar un terminal en Vim; Esto parece utilizar una biblioteca producida por Paul Evans, por lo que tal vez esto eventualmente conduzca a una mejora en las claves manejadas también. (Pero esto es pura especulación en este momento.)
Ingo Karkat
0

No todos los accesos directos son posibles en Vim, especialmente si está bajo un terminal. No recomiendo usar un atajo de pestaña para ese propósito. Pero una solución alternativa podría ser la siguiente:

" Note: Allows faster switching between windows with "Ctrl+w"! By Questor
nnoremap <silent> <C-w> <C-w><C-w>
inoremap <silent> <C-w> <Esc><C-w><C-w>
vnoremap <silent> <C-w> <Esc><C-w><C-w>

Vea un ejemplo de uso en https://github.com/eduardolucioac/groovim/blob/master/.vimrc

[]

Eduardo Lucio
fuente