Problema al usar Ctrl + teclas de flecha en Vim cuando se usa Byobu con tmux


12

En Vim, había configurado las teclas Ctrl + Flecha para omitir palabras. Esto funciona bien cuando se ejecuta Vim dentro del terminal gnome.

Sin embargo, cuando se usa byobu (tmux), muestra un comportamiento extraño: elimina todo después del cursor.

Como referencia, estos son mis ajustes de vim:

:inoremap <C-Left> <C-\><C-O>b
:inoremap <C-Right> <C-\><C-O>w

Respuestas:


7

El problema es doble. Primero, tmuxpor defecto convierte las teclas de flecha de control de un tipo de secuencia de escape a otro. Así teclas especiales como controlleftson enviados a vimsin el modificador, por ejemplo, left. Si usa cat -vpara ver las diferentes secuencias de escape, es posible que vea algo como esto

^[OD

versus esto (fuera de tmux):

^[[1;5D

La línea

set-window-option -g xterm-keys on

corrige ese aspecto. La otra parte es que tmuxpor defecto usa la descripción del terminal para screen. Esa descripción de terminal no describe las teclas de flecha de control. Estas entradas de la base de datos del terminal serían las más apropiadas para VTE (gnome-terminal):

Hay otros, como

que sería seleccionado automáticamente cuando se ejecuta en screensi el correspondiente TERMfuera eran vte, vte-256color, etc. tmuxno hace esto-selección automática; tienes que modificar su archivo de configuración.

Por cierto, no hay una entrada "screen.xterm" porque interferiría con algunos usos de screen. No hay conflicto con TERM=xterm-new.

Si tiene una base de datos de terminal predeterminada (mínima) como ncurses-baseen Debian, es posible que no la tenga. Más común sería xterm-256color, que está lo suficientemente cerca como para usar con vim y tmux.

Por ejemplo, si agrego esto a mi .tmux.confarchivo, se comporta como espera en vim:

set -g default-terminal "xterm-256color"

Otras lecturas:


Hmmm ... Esto funciona :) Pero solo parcialmente. Solo Control+ Leftestá funcionando; Control+ Rightno lo es. Probaré y actualizaré más tarde.
Shivams

1
Puede tener alguna otra unión que interfiera con el control + derecho (detalles dados, puedo ofrecer consejos).
Thomas Dickey

Gracias por la oferta :) Investigué un poco y descubrí que algunas otras combinaciones de teclas están causando interferencias. Por ejemplo, en mi Mac esto funciona bien, mientras que en Linux (usando Guake) no lo es. Sin embargo, estoy fuera de la estación y no puedo acceder a mi Linux. Actualizaré cuando resuelva el problema.
Shivams

@Thomam Dickey: Mientras tanto, acepto su respuesta, ya que de hecho resuelve el problema.
Shivams

@ThomasDickey Me gustaría decir: "Go raibh míle maith agat", que en irlandés se traduce literalmente como "Que tengas mil cosas buenas". Muchas gracias por esta respuesta. Eres una estrella.
Rob

2

Desde aquí puede desvincular la combinación de teclas en byobu:

Cree un archivo ~/.byobu/.tmux.confcon (o agregue si el archivo existe):

set-window-option -g xterm-keys on

Luego agregue lo siguiente a ~/.byobu/keybindings.tmux:

unbind-key -n C-Left
unbind-key -n C-Right

Esto no funciona Sin embargo, me ha dado un liderazgo sólido. Intentaré seguir el ejemplo y encontrar alguna solución. Gracias :)
shivams
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.