No se puede cambiar el tamaño de las divisiones vim dentro de tmux

47

Todo funciona bien fuera de tmux. Pero en tmuxno puedo cambiar el tamaño de las divisiones vim con el mouse. Tengo set mouse=aen mi .vimrc. ¿Existe alguna solucion para esto?

.tmux.conf:

$ cat ~/.tmux.conf
set-option -g mode-mouse on
set-option -g mouse-resize-pane on
set-option -g mouse-select-pane on
set-option -g mouse-select-window on
holms
fuente
AFAIK este es un problema conocido / no resuelto. Por supuesto, si deja caer el mouse a favor de su teclado, esto se convierte prácticamente en un problema.
romainl
11
¿Has probado también ttymouse=xterm2en Vim ? Eso me permite arrastrar las divisiones de Vim dentro de tmux (parece estar predeterminado xterm2cuando se ejecuta con TERM=xterm, lo que probablemente sea el caso fuera de tmux ).
Chris Johnsen
@ChrisJohnsen funciona !! por favor publique este comentario como respuesta y lo aceptaré :)
holms
@romainl Hola! Cambiar el tamaño de las ventanas con las asignaciones de teclas vim predeterminadas es bastante engorroso en mi humilde opinión. xD
trusktr
Esto no es un problema de masilla
jasonszhao

Respuestas:

69

Parece que arrastrar la línea de estado para cambiar el tamaño de una división no es posible cuando la opción Vimttymouse es xterm; funciona cuando el valor es xterm2sin embargo. El último valor configura Vim para solicitar un modo de informe de mouse extendido que (entre otras cosas) proporciona un mejor soporte de arrastre. Este modo extendido solo funciona con versiones más recientes de xterm (y otros emuladores de terminal compatibles, incluido tmux ), por lo que no es el valor predeterminado.

Puede usar algo como lo siguiente en su .vimrcpara configurar la opción:

set mouse+=a
if &term =~ '^screen'
    " tmux knows the extended mouse mode
    set ttymouse=xterm2
endif

(Sin embargo, no estoy seguro de cómo esto afectará las instancias de pantalla reales , que también usan un TERM que comienza con screen).

Cuando esté fuera de tmux , la variable de entorno TERM probablemente sea un xtermvalor -ish, y Vim buscará la versión xterm utilizando la t_RVsecuencia de control.

Chris Johnsen
fuente
3
Usted menciona no saber cómo afectará esto a la pantalla (a diferencia de tmux ). La respuesta es: la pantalla tiene el mismo problema, y ​​esta solución exacta también funciona allí.
Moss Collum
1
la condición no se cumple en mi Tmux, sino que simplemente funciona setla variable.
jasonszhao
1
Si trabaja en un terminal que cuenta con más de 223 columnas, que tendrá que configurar ttymousepara sgrque xterm2no vaya más allá de eso. Puede verificar si su vim es compatible sgrcon has("mouse_sgr"). Siempre debe ser seguro configurarlo en sgrlugar de xterm2porque es compatible con versiones anteriores. Ver:help ttymouse
Sudo Bash
14

En mi caso, resolvió ambos casos: el tamaño del mouse dividido y el problema de la posición del mouse para la pantalla panorámica.

La solución es:

if has("mouse_sgr")
    set ttymouse=sgr
else
    set ttymouse=xterm2
end
tojocky
fuente
Esto funcionó para mí.
Paul Brannan