Ctrl+TAB no funciona en vim con gnome-terminal

Ctrl+TAB no funciona en vim con gnome-terminal

Tengo un serio problema. Por lo general, el editor que uso es vim, aunque no puedo asignar la acción Ctrl+tab. Quiero cambiar de pestaña con Ctrl+Tab (Ctrl + Mayús + Tab). En xterm, esta asignación está habilitada y se utilizará la acción. Pero, en gnome-terminal, la pestaña y la secuencia de escape acaban de aparecer. Dígame cómo cambiar de pestaña en vim con gnome-terminal.

Respuesta1

Debido a la forma en que se maneja internamente la entrada del teclado, desafortunadamente esto generalmente no es posible hoy en día, ni siquiera en GVIM. Algunas combinaciones de teclas, como Ctrl+ no alfabéticas, no se pueden asignar y Ctrl+ letra vs. Ctrl+Shift no se pueden distinguir + letra. (A menos que su terminal envíe un mensaje distintotermcapcódigo para ello, que la mayoría no lo hace). En el modo de inserción o de línea de comandos, intente escribir la combinación de teclas. Si no sucede/se inserta nada, no podrá utilizar esa combinación de teclas. Esto también se aplica a <Tab>/ <C-I>, <CR>// <C-M>/ <Esc>etc. <C-[>(La única excepción es <BS>/ <C-H>.) Este es un problema conocido y el tema de varias discusiones en vim_dev y el canal IRC #vim.

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

Pero a día de hoy, aún no se han presentado parches ni voluntarios, aunque muchos han expresado su deseo de tener esto en una futura versión importante de Vim 8.

Respuesta2

El problema es que en una terminal, un Tabcarácter es ^I( Control- I). Esto significa que presionar control mientras presiona tab no es algo que el terminal ni siquiera se moleste en pasar a Vim. [1] Simplemente envía un carácter de tabulación normal.

GVim puede soportar esto porque no tiene que depender del terminal para decirle qué teclas se presionan en qué combinación; tiene acceso más directo a los eventos del teclado, por lo que no tiene problemas para ver las teclas especiales modificadas.

Le sugiero que encuentre una clave diferente para mapear para que pueda tener coherencia.

[1] Tengo entendido que con los emuladores de terminal "modernos" esto ya no es cierto, peroeraEsto es cierto durante tanto tiempo que existe un enorme obstáculo heredado que superar porque la biblioteca de terminal que usa Vim (Ncurses) ni siquiera maneja este evento, por lo que, aunque técnicamente el terminal puede admitirlo, Vim no puede hacerlo porque la API de la biblioteca lo admite. se basa en no puedo. Aproximadamente una vez al año ha habido una discusión seria en la lista de desarrolladores de Vim sobre cómo solucionar este problema por varios medios, incluido el cambio a una API más capaz, pero nunca surge nada.

Respuesta3

La respuesta más cercana que tengo para esto es crear Leader+ Taby Leader+ Shift+Tab

map <leader><Tab> :bnext<cr>
map <leader><S-Tab> :bprevious<cr>

He asignado mi Leadera ,(coma), por lo que está escribiendo ,+Tab

Sin embargo no funcionan muy bien. No puedes mantener Leaderpresionado y seguir presionando Tabpara desplazarte por las pestañas. Esto tampoco está en el comportamiento de MRU (usado más recientemente).

Para aclarar, estoy usando 'búferes' en lugar de 'páginas con pestañas', ya que encuentro que se corresponden mucho mejor con el concepto de para qué usan las pestañas otros editores.

En lugar de esto, puedes probar lo siguiente:

map <leader><Tab> :b<Space>

Esto abre el comando ex y luego puede presionar Tabpara comenzar a desplazarse por los buffers. Luego también puedes usar y para ir y venir.

Con este enfoque, también puede comenzar a escribir la parte de un búfer abierto y al presionar Tabse recorrerá la lista filtrada de búferes abiertos.

Personalmente, solo mapeo Leader+ Tabpara darme el comportamiento básico de MRU:

map <leader><Tab> :b#<cr>

información relacionada