Resumen

Resumen

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

vimcon mouse=ahabilitado para desplazamiento, selección y movimiento del cursor

tmux, sin tmuxla 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 tmuxy vimes una de las principales razones para desactivar tmuxel 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 tmuxsesió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 vimcomportamiento 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/ vimsimplemente 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 vimdetmux obras):

  • tmux: 1,6-1
  • vim: 7.3.429-2

Ubuntu 13.10información de la versión ('desplazarse hacia arriba' en el viminterior de tmuxesroto):

  • tmux: 1,8-4
  • vim: 7.4.000-1

También es de destacar que el usuario de gmane informó que no había observado el problema en tmux1.7 + vim7.3. La primera observación del problema por parte de Poster también fue con tmux1,8 + vim7,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

información relacionada