it-swarm.com.de

Scrolle die Shell-Ausgabe mit der Maus in tmux

Das Scrollen mit der Maus funktioniert in tmux nicht so, wie es funktioniert, wenn ich Shell ohne tmux (in Gnome Terminal) ausführe. 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 output -Historie scrollt. Gibt es eine Möglichkeit, tmux so funktionieren zu lassen?

Hinweis: Ich kann mit der Tastatur scrollen (dank einer weiteren Frage hier).

Ich habe versucht, mit der Maus in zwei Versionen von tmux zu scrollen:

243
user31494

So scrollen Sie im Verlauf der Ausgabe Sie würden ^b + [ verwenden Sie können dann M + V zum Blättern und ^ V zum Blättern verwenden. Ich weiß nicht, ob Sie das echte verwenden können PgUp 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 geben Sie Folgendes ein:

setw -g mouse on

Hinweis: In tmux <2.1 wurde die Option mode-mouse und nicht mouse genannt.

Wenn Sie jetzt in den Kopiermodus wechseln, können Sie mit der Maus einen Bildlauf durchführen. Sie können diesen Befehl in Ihre ~/.tmux.conf einfügen, wenn Sie möchten, dass er jedes Mal geladen wird, wenn Sie tmux ausführen.

pdate: Ab tmux 1.5 schaltet diese Option mit dem Scrollrad automatisch in den Kopiermodus und scrollt den tmux-Scrollback-Puffer zurück. Es ist nicht mehr erforderlich, zuerst Ctrl-B + [ zu drücken. Wenn Sie zurück zur Eingabeaufforderung scrollen, wird der Kopiermodus ebenfalls automatisch beendet.

233
Pavlo

Es gibt einige Änderungen für Tmux 2.1

  • Maus-Modus wurde umgeschrieben. Es gibt jetzt keine Optionen mehr für:

    • maus-Resize-Bereich
    • maus-Auswahl-Bereich
    • maus-Auswahl-Fenster
    • modus-Maus

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

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'"
119
DannyRe

In der aktuellen Version von tmux (1.5) können Sie einfach die Option mode-mouse aktivieren und mit dem Mausrad scrollen.

         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
62
bukzor

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:[email protected]:[email protected]: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

Entnommen aus http://brainscraps.wikia.com/wiki/Extreme_Multitasking_with_tmux_and_PuTTY

52

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

set -g terminal-overrides 'xterm*:[email protected]:[email protected]'

Ich habe keine Ahnung, wie es funktioniert oder was es tut, aber jetzt kann ich mit dem Mausrad in einer tmux-Sitzung scrollen, ohne in den Kopiermodus von tmux wechseln zu müssen. Ich drehe nur das 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 gnome-terminal gegeben hat.

14
Jed Daniels

mit tmux 2.1 werden neue Mausbindungen eingeführt.

Ich habe diese Binds gerade heute geschrieben. Das Mausrad wird nahtlos an Pfeile gebunden, wenn Sie nicht in Vim sind, da Vim in der Lage ist, die unformatierten Mausradcodes zu interpretieren (z. B. um auszuwählen, welches Vim-Fenster für Sie gescrollt werden soll, je nachdem, über welches sich Ihre Maus befindet).

Dies bedeutet, dass wir endlich die Maus nur zum Anzeigen mehrerer Manpages und für alle anderen Arten von Pfeiltasten verwenden können. Sie können die if-Logik nach Bedarf erweitern und verketten, 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 Radbindungsfunktion ist es möglich, das Mausrad mit Skripts zu versehen, um ein beliebiges kontextsensitives Verhalten auszuführen.

5
Steven Lu

Gnome-Terminal macht einige nette Tricks, um Maus-Scroll-Ereignisse unter eingeschränkten "normalen" Scrollbedingungen in Auf- und Ab-Pfeiltasten zu übersetzen. Wenn Sie beispielsweise Text mit less anzeigen (dies geschieht insbesondere beim Lesen eines Mannes), können Sie den Inhalt mit j, k und den Pfeiltasten scrollen. Aber auch , mit gnome-terminal können Sie das dank des erwähnten Tricks mit der Maus tun.

Also ich denke, tmux hat einige „Einfangen“ des Terminals wie less - und den gleichen Mechanismus in gnome-terminal Tritte in: Maus Scrollen in oben übersetzt/Ab-Taste drückt Pfeil.

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

3
ulidtko

https://github.com/NHDaly/tmux-better-mouse-mode

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.

1
Steven Lu

Sie können die verbindlichen Ideen aus den anderen Antworten kombinieren, um ein ziemlich zufriedenstellendes Bildlaufverhalten zu erhalten: Funktioniert in vim, wechselt der Kopiermodus automatisch in das Terminal und beendet es, wenn Sie den unteren Rand erreichen, und ermöglicht Ihnen weiterhin, Ihr Mausrad in man, less und journalctl zu verwenden.

Mein Code:

bind -n WheelUpPane if -t = "test $(echo #{pane_current_command} |grep -e 'man' -e 'less' -e 'journalctl')" "select-pane -t = ; send-keys Up Up Up Up"  "if-Shell -F -t = '#{?mouse_any_flag,1,#{pane_in_mode}}' 'send-keys -M' 'select-pane -t = ; copy-mode -e; send-keys -M'"
bind -n WheelDownPane if -t = "test $(echo #{pane_current_command} |grep -e 'man' -e 'less' -e 'journalctl')" "select-pane -t = ; send-keys Down Down Down Down"  "if-Shell -F -t = '#{?mouse_any_flag,1,#{pane_in_mode}}' 'send-keys -M' 'select-pane -t = ; copy-mode -e; send-keys -M'"

sie können weitere Befehle hinzufügen, für die Pfeiltasten zum Scrollen im grep -e 'man'-Teil erforderlich sind

ich habe die Send-Tasten mehrmals hinzugefügt, so dass ein Häkchen auf dem Mausrad 4 Zeilen auf einmal scrollen wird

0
stealz