Frage Scroll-Shell-Ausgabe mit der Maus in tmux


Das Mausscrollen funktioniert nicht tmux wie es funktioniert, wenn ich Shell ohne tmux (in Gnome Terminal) ausführen. Es scheint, dass tmux Maus-Scroll-Ereignisse sendet, als ob ich die Auf- / Ab-Tasten gedrückt hätte. Aber ich möchte, dass es durch die Shell scrollt Ausgabe Geschichte. Gibt es eine Möglichkeit, tmux so zu machen?

Hinweis: Ich kann mit der Tastatur blättern (Danke an eine andere Frage Hier).

Ich habe das Mouse Scrollen in zwei Versionen von tmux versucht:


222
2017-11-12 14:02


Ursprung


Ich denke, dass die Antwort von bukzor Ihr Problem für tmux 1.5 und neuer löst. - kynan


Antworten:


Um im Verlauf der Ausgabe zu blättern, würden Sie verwenden ^b + [  Sie können dann mit M + V blättern und mit ^ V blättern. Ich weiß nicht, ob du das Reale benutzen kannst Bild auf und PgDown obwohl. Mein Terminal sendet diese Schlüssel nicht an den tmux. Stattdessen scrollt es sich selbst und nicht die tmux Geschichte.

Um den Kopiermodus zu verlassen, drücken Sie ESC

Um Ihre Maus in diesem Modus (Kopiermodus genannt) zu verwenden, drücken Sie ^b + : und gib folgendes ein:

setw -g mouse on

Hinweis: In tmux <2.1 wurde die Option benannt mode-mouse, und nicht mouse

Wenn Sie nun in den Kopiermodus wechseln, können Sie mit der Maus durch den Kopiermodus blättern. Sie können diesen Befehl in Ihre ~ / .tmux.conf setzen, wenn Sie möchten, dass er jedes Mal geladen wird, wenn Sie tmux ausführen.

Aktualisieren: Ab tmux 1.5 schaltet diese Option das Scrollrad automatisch in den Kopiermodus und scrollt den tmux scrollback buffer zurück. Es ist nicht notwendig, zuerst zu treffen Ctrl-B + [ nicht mehr. Wenn Sie zurück zur Eingabeaufforderung blättern, wird der Kopiermodus automatisch beendet.


206
2017-12-01 18:48



Beachten Sie, dass Sie die Konfigurationsdatei möglicherweise neu laden müssen, wenn Sie bereits einen laufenden tmux-Server haben. blog.sanctum.geek.nz/wiederladen-tmux-config  tmux Quelldatei ~ / .tmux.conf - Allan Nienhuis
Unter OS X funktioniert es nicht. - Ain
@Ain - Es gibt jetzt 11 Hauptversionen von OS X. Über welche Version sprechen wir genau? - Ramhound
Für tmux> = 2.1, siehe @ DannyRe's Antwort (momentan ziemlich weit unten). - Joel Ostblom
set -g mouse on hat für mich auf macOS tmux 2.1 gearbeitet - Miguel Mota


Es gibt einige Änderungen für Tmux 2.1

  • Der Mausmodus wurde neu geschrieben. Es gibt jetzt keine Optionen mehr für:

    • Maus-Größe-Fenster
    • Mausauswahlbereich
    • Maus-Auswahlfenster
    • Modus-Maus

    Stattdessen gibt es nur eine Option: 'Maus', die Mausunterstützung aktiviert vollständig.

Das wäre

set -g mouse on
# to enable mouse scroll, see https://github.com/tmux/tmux/issues/145#issuecomment-150736967
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"

111
2017-10-19 11:02



Danke, jetzt Fenster auswählen usw. funktioniert, aber Scrollen nicht. Verwenden Sie Folgendes, um das Scrollen wieder zu ermöglichen: github.com/NHDaly/tmux-scroll-copy-mode - Mahdi
genial - das funktioniert sogar auf cygwin - tmux unter WINDOWS 7 - WD11
@Mahdi Das scheint bei OSX nicht zu funktionieren. Irgendwelche Hinweise? - SolidSnake
@SolidSnake: Ich kann mich nicht erinnern, dass ich Probleme mit diesem Plugin hatte. Es funktionierte reibungslos, ich habe den Mausmodus aktiviert und dann installiert. Sie sollten Ihre tmux config neu laden tmux source-file ~/.tmux.conf - Mahdi
bind scheint auf tmux 2.3 nicht mehr notwendig zu sein - Theron Luhn


In der aktuellen Version von tmux (1.5) können Sie einfach die Modusmaus-Option aktivieren und mit dem Mausrad blättern.

         mode-mouse [on | off]
                 Mouse state in modes.  If on, the mouse may be used to
                 enter copy mode and copy a selection by dragging, to
                 enter copy mode and scroll with the mouse wheel, or to
                 select an option in choice mode.

In meiner .tmux.conf:

set-window-option -g mode-mouse on

61
2017-11-15 20:05



Das ist das Verhalten, das du wirklich willst! Mouse Scroll aktivieren Kopiermodus, nicht nur den Shell-Alternativ-Puffer scrollen. Das war schließlich der Anreiz, von ihm abzuweichen Bildschirm zu tmux für mich. Gibt es eine Möglichkeit, das gleiche Verhalten auch mit Shift + PgUp zu bekommen? - kynan
@kynan: Ich persönlich drücke einfach C-A PgUp das zu tun. Sie können den Page-up-Schlüssel direkt mit verknüpfen tmux bind-key -n PPage copy-mode -u. Das ähnliche Thign sollte für shift + pageup funktionieren, wenn Sie es von Ihrem lokalen Terminal lösen. - bukzor
Dies führt zu einem seltsamen Verhalten, bei dem beim Zurückscrollen zur Befehlszeile ein zusätzliches Zeichen in die CLI eingefügt wird, was normalerweise dazu führt, dass mein erster Befehl fehlerhaft ist. Es ist ziemlich nervig. - Chris R
Beachten Sie, dass dies jedoch für das Auslösen des Bildlaufs mit der Maus geeignet ist. Dies führt zu merkwürdigem Verhalten bei der Auswahl von Text, der mit der mittleren Maustaste eingefügt werden soll. Ich habe am Ende C-b pg-up / down (Standard), da der Kompromiss nicht akzeptabel war. - h7r
@ChrisR Ich bekomme das auch ein bisschen und es ist nicht ganz konsistent. Ist es ein [M [M # [M [M # [M [M # [M [M # [M Art der Schnur? - Elijah Lynn


Versuchen Sie dies in Ihrer .tmux.conf

# Make mouse useful in copy mode
setw -g mode-mouse on

# Allow mouse to select which pane to use
set -g mouse-select-pane on

# Allow xterm titles in terminal window, terminal scrolling with scrollbar, and setting overrides of C-Up, C-Down, C-Left, C-Right
set -g terminal-overrides "xterm*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"

# Scroll History
set -g history-limit 30000

# Set ability to capture on start and restore on exit window data when running an application
setw -g alternate-screen on

# Lower escape timing from 500ms to 50ms for quicker response to scroll-buffer access.
set -s escape-time 50

Genommen von http://brainscrasps.wikia.com/wiki/Extreme_Multitasking_with_tmux_and_PuTTY


51
2017-10-24 16:55



+1 für escape-time Rahmen - Dakusan


Jemand (aus einer Quelle, die ich verloren habe) schlug vor, Folgendes hinzuzufügen ~.tmux.conf:

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

Ich habe keine Ahnung, wie es funktioniert oder was es tut, aber das erlaubt mir jetzt, mit dem Mausrad innerhalb einer tmux-Sitzung zu scrollen, ohne den tmux-Kopiermodus eingeben zu müssen; Ich scrolle nur am Rad und BAM! Es klappt. Beachten Sie, dass ich terminal.app verwende, aber ich erinnere mich, dass das OP die Antwort speziell für die Verwendung mit gab gnome-terminal.


14
2018-06-22 17:10



Jed, danke! Dein Ratschlag funktioniert auch im gnome-terminal. Ich werde versuchen, dieses Setup für einige Zeit zu verwenden. Aber es hat einen Nachteil: Maus Scrollen funktioniert jetzt nicht wie erwartet in less. Wenn ich lade less Innerhalb tmuxBeim Scrollen mit der Maus wird die geöffnete Datei nicht gescrollt less. Es scrollt das gesamte Terminal. Seltsam, vim verhält sich wie erwartet im Inneren tmux mit deiner Einrichtung. - user31494
Beachten Sie, dass dies ab tmux 1.5 durch die ersetzt wird setw -g mode-mouse on Option, die den Scrollback-Modus mit dem Mausrad kopiert. - kynan
Die Erklärung ist, dass diese Option die Bildlaufsperre auf dem alternativen Bildschirm des Terminals deaktiviert, was in den meisten Fällen wünschenswert ist, da Anwendungen, die den alternativen Bildschirmpuffer anfordern (vi, weniger, tmux usw.) ihre eigenen Scrollfunktionen bereitstellen. Durch Überschreiben dieser Sperre in tmux kann gescrollt werden alternativer Bildschirmpuffer des Terminals was nicht in allen Fällen das gewünschte Ergebnis liefert. Sehen diese Antwort für ein Zitat von man xterm alternativen Bildschirm erklären. - kynan
Leider funktioniert das in iTerm nicht - Suan
Ich habe damit in iTerm 2 positive Ergebnisse erzielt - Keith Smiley


tmux 2.1 führt neue Maus-Bindungen ein.

Ich habe diese Bindungen gerade heute geschrieben. Es verbindet das Mausrad nahtlos mit Pfeilen, wenn es nicht in Vim ist, da Vim in der Lage ist, die rohen Mausradcodes zu interpretieren (z. B. um auszuwählen, welches Vim-Fenster für Sie je nach dem, über dem Ihre Maus liegt).

Dies bedeutet, dass wir die Maus schließlich nur verwenden können, um mehrere Manpages und alles, was andere Pfeiltasten akzeptieren, anzuzeigen. Du kannst das verlängern und verketten if Logik, um mehr Logik für Ihre Anwendungen zu implementieren.

bind -n WheelUpPane if "[[ #{pane_current_command} =~ vim ]]" "select-pane -t = ; send-keys -M" "select-pane -t = ; send-keys Up"
bind -n WheelDownPane if "[[ #{pane_current_command} =~ vim ]]" "select-pane -t = ; send-keys -M" "select-pane -t = ; send-keys Down"

Mit dieser neuen Radbindefähigkeit ist es möglich, das Mausrad so zu skripten, dass jedes beliebige kontextsensitive Verhalten ausgeführt wird.


5
2017-12-15 23:44



Ich spiele jetzt nur noch mit der Idee, mit dem Mausrad auf dem Fensterrand etwas Interessantes zu tun. Wahrscheinlich werde ich das Rad nicht an der Grenze abbilden, sondern es zuordnen, um die tmux-Fenster zu zyklisieren, wenn es über die Statuszeile erfolgt. - Steven Lu
Was ist der Link zu deinem Github? Ich würde gerne über Ihre Bemühungen auf dem Laufenden bleiben! Eine weitere Funktion, nach der ich suche, ist ein Doppelklick, um das Wort in die X-Zwischenablage zu kopieren, wie es außerhalb von Tmux der Fall ist. - joeytwiddle
@joeytwiddle Ich kann es nur wärmstens empfehlen github.com/NHDaly/tmux-better-mouse-mode, siehe meine andere Antwort - Steven Lu


Gnome-terminal macht einige nette Tricksereien, die Maus-Scroll-Ereignisse in die Bedingungen von eingeschränktem "normalem" Scrollen zu Auf- und Ab-Pfeiltasten übersetzen. Zum Beispiel, wenn Sie einen Text mit anzeigen less (Dies passiert insbesondere, wenn Sie einen Mann lesen), Sie können den Inhalt mit scrollen j, kund Pfeiltasten. Aber ebenfallsmit gnome-terminalSie können das mit dem Mausscrollen tun, dank dem erwähnten Trick.

Also denke ich tmux tut etwas "Gefangennahme" des Terminals genau so less - und der gleiche Mechanismus in gnome-terminal kickt in: Maus Scrolling übersetzt in Up / Down Pfeiltasten drücken.

Sie können diese Funktion in den Profileinstellungen deaktivieren und das normale Scrollen unter allen Umständen ausführen. Deaktivieren Sie einfach das letzte Kontrollkästchen auf der Registerkarte "Scrollen": the checkbox.


3
2017-12-07 07:03



Danke für die Erklärung, Uldtko! Aber es hilft nicht mit dem Maus-Scroll-Problem. Ja, bei deaktivierter Option gnome-terminal hört auf, dreifach zu senden ^[[A und ^[[B auf der Maus scrollen. Es ist schöner drin tmux (nicht hässlich ^[[A^[[A^[[A in einigen Programmen, kein hässliches Kommando-History-Scrolling), aber jetzt less stoppt das Scrollen mit der Maus. - user31494
Ukrainisch? (Raten durch die i Figuren) - dotancohen


https://github.com/NHDaly/tmux-besser-Maus-Modus

Konfigurierbare und funktionsreiche Implementierung der Maussteuerung für neuere tmuxes. sehr empfehlenswert.

Sie möchten wahrscheinlich verwenden

set -g @emulate-scroll-for-no-mouse-alternate-buffer "on"

damit auch.


0
2018-01-02 23:48