Zusammenfassung

Zusammenfassung

Ich verwende eine Kombination aus PuTTY, tmux und vim. Wenn ich einfach eine SSH-Verbindung mit PuTTY öffne und dann vim öffne, funktioniert das Scrollen mit der Maus wie erwartet. Aber wenn ich tmux öffne und dann vim innerhalb von tmux öffne, funktioniert das Scrollen nur teilweise, d. h. ich kann wie üblich nach unten scrollen, aber nicht nach oben. Wenn ich nach oben scrolle, ruckelt der Puffer einfach „auf und ab“ und bleibt einfach an derselben Stelle. „set -g mode-mouse on“ scheint keinen Unterschied zu machen (ich lade die Konfiguration anschließend mit „tmux source-file ~/.tmux.conf“ neu), funktioniert in beiden Fällen gleich.

Bearbeiten: Mir ist auch aufgefallen, dass das Scrollen im Terminal in tmux wie erwartet funktioniert, in vim jedoch nicht. Die einzigen Optionen in Bezug auf Maus/Terminal, die ich in vim habe, sind „set mouse=a“ und „set t_Co=256“.

Irgendwelche Ideen?

Antwort1

Zusammenfassung

Das Problem beginnt eindeutig mit PuTTY, aber es endet nicht unbedingt dort. Unten finden Sie einen Link zu einer möglichen Lösung für das PuTTY-Problem sowie eine Analyse des gesamten Problems.


Fehlerbeschreibung

Aufbau

vimmit mouse=aaktiviertem Scrollen, Auswählen und Cursorbewegung

tmux, ohne tmuxaktivierte Mausfunktionalität, also Folgendes:

set -g mode-mouse off
set -g mouse-select-pane off
set -g mouse-resize-pane off
set -g mouse-select-window off

Anwendungsfall

Ein typischer Anwendungsfall ist die Verwendungvim innenvon tmux. Die Vermeidung negativer Interaktionen zwischen tmuxund vimist einer der Hauptgründe für das Deaktivieren tmuxdes Scrollens.

Verhalten

Bitte beachten Sie, dass das Folgende nur auftritt, wenn PuTTY als Terminalemulator verwendet wird, und nicht im Gnome-Terminal oder einem anderen getesteten Linux-Terminalemulator reproduzierbar ist.

Beim Versuch, mit der Maus nach oben zu scrollen, invim inneneiner tmuxSitzung schlägt die Aktion einfach fehl. Wie OP beschreibt, ist es oft möglich, den Puffer „auf und ab“ ruckeln zu sehen, als ob bei jedem Scrollversuch eine Gegenaktion stattfindet (mehr dazu weiter unten).

Dies entspricht im Wesentlichen der Beschreibung des OP, wurde aber für den Fall noch einmal zusammengefasst, dass in meiner Erklärung oder der Frage des OP etwas nicht klar ist.


Mögliche Lösung – PuTTY

Es scheint ein Problem zu geben, bei dem PuTTY bei jedem ScrollDown/ScrollUp-Ereignis ein überflüssiges ScrollDown-Ereignis sendet. Das bedeutet, dass jeder Versuch, nach oben zu scrollen, abgebrochen wird und nichts passiert. Umgekehrt wird beim Scrollen nach unten jedes Scroll-Ereignis verdoppelt. Das Verhalten lässt sich leicht validieren, indem man sich das vimScrollverhalten ansieht.zuerst draußenvon tmux(wo das Scrollen richtig funktioniert) undzweite innenvon tmux(wobei das Scrollen nach oben nicht funktioniert und ein einzelner Versuch, nach unten zu scrollen, doppelt so viel scrollt).

Laut folgendem Gmane-Threadwird das oben beschriebene Problem mit einem Patch von Putty-X (https://github.com/atsepkov/putty-X/commit/bbcedf5a85ca1ccaa27005e7f7ebeb4c8a783b88):

Link zum Gmane-Thread:http://comments.gmane.org/gmane.comp.terminal-emulators.tmux.user/5498.

NOTIZ:Ich habe die obige Lösung nicht selbst validiert. Lesen Sie daher für weitere Informationen bitte den Gmane-Thread.


Zusätzliche Beobachtungen

Wo esWirklichInteressant ist, dass dies ein neues Problem ist, das mit älteren Versionen von tmux/ nicht reproduzierbar vimist. Mit derselben Version von PuTTY (0.63) kann das Problem auf einem Ubuntu 13.10-System aktiv demonstriert werden, während es auf einem Ubuntu 12.04-System nicht auftritt.

Zunächst scheint das Problem auf ein Systemkonfigurationsdelta hinzuweisen (z. B. fehlender ncurses-term oder ähnliches), aber mit dieser Art von Lösung konnte kein Fix gefunden werden. Darüber hinaus stützen die zahlreichen Berichte zu diesem Problem (einschließlich dieses Threads) tendenziell die Existenz des Problems.

Aufgrund der Abhängigkeit des Problems von den Versionen der zugehörigen Software scheint das Problem nicht auf eine einzelne Anwendung beschränkt zu sein. Es kann sein, dass eine neuere Version von tmux/ vimetwas „behoben“ hat, das eine Regression verursacht hat. Oder es kann sein, dass eine neuere Version von tmux/ vimeinfach das bestehende Problem in PuTTY aufgedeckt hat. In jedem Fall sind weitere Untersuchungen erforderlich, um das Problem vollständig zu beheben. Nachfolgend finden Sie einige relevante Versionsinformationen, falls diese jemandem bei seiner Untersuchung helfen können.


Versionsinformation

Ubuntu 12.04Versionsinfo ('nach oben scrollen' innerhalb vimvontmux Werke):

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

Ubuntu 13.10Versionsinfo ('nach oben scrollen' innerhalb vimvon tmuxistgebrochen):

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

Bemerkenswert ist auch: Der gmane-Poster berichtete, dass das Problem bei tmux1.7 + vim7.3 nicht beobachtet wurde. Der Poster bemerkte das Problem erstmals auch bei tmux1.8 + vim7.4.


Hoffentlich bietet diese Antwort zumindest jedem, der sich mit PuTTY beschäftigt (oder damit feststeckt), eine Möglichkeit, dieses Problem zu umgehen. Darüber hinaus kann hoffentlich jemand die zusätzlichen Beobachtungen oben verstehen und dazu beitragen, das Thema zu einer angemessenen Lösung zu bringen.

Antwort2

Ich habe kein Problem mit einer Ubuntu 16.04-Installation. tmux ist die standardmäßig installierte Version von apt-get. Vim ist Version 8. PuTTY ist Version 0.67

Sowohl das Scrollen als auch das Klicken funktionieren in vim, wenn es in einer tmux-Sitzung gehostet wird.

~/.tmux.conf

set-option -g mouse on

Beachten Sie, dass sich die Tmux-Optionen zur Maussteuerung gegenüber früheren Versionen geändert haben.

~/.vimrc

set mouse=a

Beachten Sie, dassdiese Antwortlegt nahe, dass ein Vim-Plugin die Ursache des Problems sein könnte.

Antwort3

Für alle, die hier landen: Dies wurde in der Vorabversion 0.64 behoben, die Sie von der offiziellen PuTTY-Website herunterladen können.

Antwort4

Nur so konnte ich das Scrollen zum Laufen bringen:

Setzen:

set -g terminal-overrides 'xterm*:smcup@:rmcup@'

In der Datei:~/.tmux.conf

verwandte Informationen