vimrc plugin para example best vim keyboard-shortcuts keymapping

plugin - vimrc example



El mapeo de<C-Tab> en mi vimrc falla en Ubuntu (3)

Quiero asignar ctrl-tab a: tabn, y ctrl-shift-tab a: tabp.

Lo tenía trabajando para gVim en Windows XP, pero lo moví a mi .vimrc en Ubuntu 9.10 y no funciona (vim 7.2).

Aquí está la sección relevante de mi .vimrc:

nmap <C-Tab> :tabn<CR> nmap <C-S-Tab> :tabp<CR> nmap <C-t> :tabnew<CR>

<Ct> funciona bien, por lo que mapear la tecla ctrl no parece ser un problema. ¡Realmente, no tengo ni idea de por dónde empezar! ¿Qué podría estar yendo mal aquí, considerando que funcionó bien en Windows?

Más información: estoy ejecutando el servidor Ubuntu 9.10, con xorg y fluxbox instalados en la parte superior. Estoy usando xterm como mi terminal.

La asignación Ctrl-tab funciona en fluxbox: puedo mapear ctrl-tab y ctrl-shift-tab con éxito en mi administrador de ventanas; si empiezo a tabular mis xterms, puedo recorrer esas pestañas como se esperaba. No estoy seguro de lo que esto significa, pero creo que el problema no es un problema de administrador de ventanas / xorg.

Las teclas no parecen estar asignadas a otra cosa, y pueden reconocerse juntas correctamente.

Respuesta: Es un problema de xterm : no intercepta y envía un código clave único para ctrl-tab . Ver mi respuesta completa a continuación para más detalles.


Definitivamente es un problema terminal.

Aparentemente xterm, y muchos otros emuladores de terminal, no interceptan ctrl-tab por defecto y solo envían una señal de tabulación. Esta página wiki de Vim indica que ctrl-tab no funciona para xterm, Eterm y aterm. También hay esta publicación en Arch Linux que afirma que es un problema terminal.

La solución se puede encontrar combinando la información de esta publicación de blog con esta wiki de vim para mapear códigos clave . La esencia de esto es que necesitas configurar xterm para interceptar y enviar un código único para ctrl-tab y ctrl-shift-tab en tu archivo .Xresources , luego lo .vimrc en tu .vimrc con algunas asignaciones funky.

Para resumir, es difícil de hacer (todavía no lo tengo trabajando aquí) porque tanto xterm como vim deben ser engañados para hacerlo. Personalmente voy a seguir adelante y usar otro mapeo ... ¡este problema es una gran trampa para el tiempo y no creo que valga la pena presionar para que funcione!

Gracias por la ayuda chicos.


Si está utilizando Ubuntu, probablemente tenga algo así como Compiz habilitado.

No puedo estar seguro, pero debería echar un vistazo a las extensiones de Compiz y si una de ellas define ese acceso directo. Tuve un problema similar una vez, no con vim, pero aún así.

También podría ser el servidor X que intercepta algunas pulsaciones de teclas (ejemplo: xbindkeys ).


Utilicé las publicaciones de blog y wiki de la respuesta de @ nfm y lo resolví:

Pon esto en tu archivo .Xresources (puedes copiar y pegar en este caso):

xterm*VT100.Translations: #override / Ctrl ~Shift <Key>Tab: string(0x1b) string("[27;5;9~") /n/ Ctrl Shift <Key>Tab: string(0x1b) string("[27;6;9~")

Entonces haz cd ; xrdb .Xresources cd ; xrdb .Xresources y reinicie xterm.

Pon esto en tu .vimrc :

!! Importante : en lugar de XXXX, debe escribir CTRL-V y luego Esc o copiar y pegar todo el texto y ejecutar %s//(set <F1[34]>=/)XXXX//=submatch(1) . "/33"/g %s//(set <F1[34]>=/)XXXX//=submatch(1) . "/33"/g que es copiable (insértelo con <CTRL-R> + ).

set timeout timeoutlen=1000 ttimeoutlen=100 set <F13>=XXXX[27;5;9~ nnoremap <F13> gt set <F14>=XXXX[27;6;9~ nnoremap <F14> gT

Y reinicia vim.

Hecho.