
Estoy usando una combinación de PuTTY, tmux y vim. Si simplemente abro una conexión SSH con PuTTY y luego abro vim, el desplazamiento del mouse funciona como se esperaba. Pero si abro tmux y luego abro vim dentro de tmux, el desplazamiento solo funciona parcialmente, lo que significa que puedo desplazarme hacia abajo como de costumbre pero no puedo desplazarme hacia arriba. Si me desplazo hacia arriba, el búfer simplemente se mueve "arriba y abajo" y permanece en el mismo lugar. "set -g mode-mouse on" no parece hacer una diferencia (luego recargo la configuración con "tmux source-file ~/.tmux.conf"), funciona de la misma manera en cualquier caso.
Editar: También noté que el desplazamiento funciona como se esperaba en tmux en la terminal pero no en vim. Las únicas opciones relacionadas con el mouse/terminal que tengo en vim son "set mouse=a" y "set t_Co=256".
¿Algunas ideas?
Respuesta1
Resumen
El problema claramente comienza con PuTTY, pero no necesariamente termina ahí. Hay un enlace a una posible solución para el problema de PuTTY a continuación, así como un análisis del problema en su conjunto.
descripcion del problema
Configuración
vim
con mouse=a
habilitado para desplazamiento, selección y movimiento del cursor
tmux
, sin tmux
la funcionalidad del mouse habilitada, es decir, lo siguiente:
set -g mode-mouse off
set -g mouse-select-pane off
set -g mouse-resize-pane off
set -g mouse-select-window off
Caso de uso
Un caso de uso típico es utilizarvim
adentrode tmux
. Evitar interacciones negativas entre tmux
y vim
es una de las principales razones para desactivar tmux
el desplazamiento.
Comportamiento
Tenga en cuenta que lo siguiente solo ocurre cuando se utiliza PuTTY como emulador de terminal y no es reproducible en gnome-terminal ni en ningún otro emulador de terminal de Linux probado.
Al intentar 'desplazarse hacia arriba' usando el mouse envim
adentrode una tmux
sesión, la acción simplemente falla. Como describe OP, a menudo es posible ver el búfer sacudiéndose "arriba y abajo" como si se estuviera produciendo una contraacción con cada intento de desplazamiento (más sobre esto a continuación).
Esto es básicamente lo mismo que la descripción de OP, pero resumido en caso de que algo no quede claro en mi explicación o en la pregunta de OP.
Posible solución: PuTTY
Parece haber un problema por el cual PuTTY envía un evento ScrollDown extraño con cada evento ScrollDown/ScrollUp. Esto significa que cada intento de desplazarse hacia arriba se cancela y no sucede nada. Por el contrario, al desplazarse hacia abajo, cada evento de desplazamiento se duplica. El comportamiento es fácil de validar observando el vim
comportamiento de desplazamiento.primero afuerade tmux
(donde el desplazamiento funciona correctamente), ysegundo adentrode tmux
(donde desplazarse hacia arriba no funciona y un solo intento de desplazarse hacia abajo se desplaza el doble).
Según el siguiente hilo de gmane, el problema descrito anteriormente se resuelve con un parche de Putty-X (https://github.com/atsepkov/putty-X/commit/bbcedf5a85ca1ccaa27005e7f7ebeb4c8a783b88):
Enlace al hilo de gmane:http://comments.gmane.org/gmane.comp.terminal-emulators.tmux.user/5498.
NOTA:Yo mismo no he validado la solución anterior, así que revise el hilo de gmane para obtener información adicional.
Observaciones adicionales
Donde seen realidadLo interesante es que se trata de un problema nuevo que no se puede reproducir con versiones anteriores de tmux
/ vim
. Usando la misma versión de PuTTY (0.63), el problema se puede demostrar activamente en un sistema Ubuntu 13.10, mientras que un sistema Ubuntu 12.04 no presenta el problema.
Al principio, el problema parece apuntar a una configuración delta del sistema (es decir, falta el término ncurses o similar), pero no se ha identificado ninguna solución utilizando este tipo de solución. Además, los múltiples informes sobre este mismo problema (incluido este hilo) tienden a respaldar la existencia del problema.
Debido a la naturaleza codependiente del problema y las versiones del software relacionado, parece que el problema no se limita a una sola aplicación. Puede ser que una versión más nueva de tmux
/ vim
'arregló' algo que creó una regresión. O puede ser que una versión más nueva de tmux
/ vim
simplemente exponga el problema existente en PuTTY. De cualquier manera, será necesaria una investigación adicional para solucionarlo por completo. Encuentre información de la versión pertinente a continuación si esto puede ayudar a alguien en su investigación.
Información de versión
ubuntu 12.04información de la versión ('desplazarse hacia arriba' dentro vim
detmux
obras):
tmux
: 1,6-1vim
: 7.3.429-2
Ubuntu 13.10información de la versión ('desplazarse hacia arriba' en el vim
interior de tmux
esroto):
tmux
: 1,8-4vim
: 7.4.000-1
También es de destacar que el usuario de gmane informó que no había observado el problema en tmux
1.7 + vim
7.3. La primera observación del problema por parte de Poster también fue con tmux
1,8 + vim
7,4.
Con suerte, al menos esta respuesta brinda a cualquiera que se dedique (o se quede con) PuTTY una opción para solucionar este problema. Más allá de eso, es de esperar que alguien pueda entender las observaciones adicionales anteriores y ayudar a llevar el tema a una resolución adecuada.
Respuesta2
No tengo ningún problema con la instalación de ubuntu 16.04. tmux es la versión instalada predeterminada de apt-get. Vim es la versión 8. PuTTY es la versión 0.67
Tanto el desplazamiento como el clic funcionan dentro de vim cuando se alojan en una sesión tmux.
~/.tmux.conf
set-option -g mouse on
Tenga en cuenta que las opciones de tmux para el control del mouse han cambiado con respecto a versiones anteriores.
~/.vimrc
set mouse=a
Sé consciente deesta respuestasugiere que un complemento vim podría ser la causa del problema.
Respuesta3
Para cualquiera que termine aquí: esto se solucionó en la versión preliminar 0.64, que puede descargar desde el sitio web oficial de PuTTY.
Respuesta4
Esta es la única manera en la que he podido hacer que el desplazamiento funcione correctamente:
Poner:
set -g terminal-overrides 'xterm*:smcup@:rmcup@'
En el archivo:~/.tmux.conf