2010-11-12 14:02:16 +0000 2010-11-12 14:02:16 +0000
271
271

Scrollen der Shell-Ausgabe mit der Maus in tmux

Der Mausbildlauf funktioniert in tmux nicht so, wie er funktioniert, wenn ich die Shell ohne tmux ausführe (in Gnome Terminal). Es scheint, dass tmux Maus-Scroll-Ereignisse sendet, als ob ich Auf/Ab-Tasten drücken würde. Ich möchte aber, dass es durch die Shell Output History scrollt. Gibt es eine Möglichkeit, tmux so arbeiten zu lassen?

Anmerkung: Ich weiß, wie man mit der Tastatur scrollt (dank andere Frage hier).

Ich habe Maus-Scrollen in zwei Versionen von tmux ausprobiert:

Antworten (10)

264
264
264
2010-12-01 18:48:45 +0000

Um in der Historie der Ausgabe zu blättern, würden Sie ^b + [ verwenden. Sie können dann M+V verwenden, um nach oben zu blättern und ^V, um nach unten zu blättern. Ich weiß allerdings nicht, ob Sie die echten PgUp und PgDown verwenden können. Mein Terminal sendet diese Tasten nicht an den tmux. Stattdessen scrollt es selbst und nicht die tmux-Historie.

Um den Kopiermodus zu verlassen, drücken Sie ESC

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

setw -g mouse on

Hinweis: In tmux < 2.1 hieß die Option mode-mouse und nicht mouse

Wenn Sie nun in den Kopiermodus wechseln, können Sie mit der Maus durch die Datei blättern. Sie können diesen Befehl in Ihre ~/.tmux.conf einfügen, wenn Sie möchten, damit er bei jedem Start von tmux geladen wird.

Update: Ab tmux 1.5 bewirkt diese Option, dass bei Verwendung des Scrollrads automatisch in den Kopiermodus gewechselt und der tmux-Scrollback-Puffer zurückgescrollt wird. Es ist nicht mehr notwendig, zuerst Ctrl-B + [ zu drücken. Das Zurückblättern bis zur Eingabeaufforderung beendet den Kopiermodus ebenfalls automatisch.

127
127
127
2015-10-19 11:02:01 +0000

Es gibt einige Änderungen für Tmux 2.1

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

Das wäre dann

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'"
64
64
64
2011-11-15 20:05:50 +0000

In der aktuellen Version von tmux (1.5) kann man einfach die Option mode-mouse einschalten und kann dann 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
59
59
59
2012-10-24 16:55:07 +0000

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

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

16
16
16
2011-06-22 17:10:05 +0000

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

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 in den Kopiermodus von tmux gehen zu müssen; ich scrolle einfach das Rad und BAM! es funktioniert. Beachten Sie, dass ich terminal.app verwende, aber ich erinnere mich, dass der OP die Antwort speziell für die Verwendung mit gnome-terminal gab.

5
5
5
2015-12-15 23:44:29 +0000

tmux 2.1 führt neue Maus-Binds ein.

Ich habe diese Binds gerade heute geschrieben. Sie bindet das Mausrad nahtlos an die Pfeile, wenn es nicht in Vim ist, weil Vim in der Lage ist, die rohen Mausrad-Codes zu interpretieren (für Zwecke wie die Auswahl, welches Vim-Fenster für Sie scrollen soll, abhängig davon, über welchem Ihre Maus ist).

Dies bedeutet, dass wir endlich die Maus nur zum Betrachten von mehreren Manpages und was sonst noch Pfeiltasten akzeptiert, benutzen können. Sie können die if-Logik nach Bedarf erweitern und verketten, um weitere 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, dem Mausrad jedes beliebige kontextabhängige Verhalten zuzuweisen, das Sie wünschen.

5
5
5
2019-04-23 15:29:55 +0000

Wenn Sie sich bereits in einer tmux-Sitzung befinden, können Sie den Befehl

set mouse on

ausführen Erinnerung: Um Befehle auszuführen, verwenden Sie Ihr Präfix und dann :.

3
3
3
2010-12-07 07:03:31 +0000

Gnome-Terminal führt einige nette Tricks aus, indem es Maus-Scroll-Ereignisse in Aufwärts- und Abwärts-Pfeiltasten übersetzt, wenn der “normale” Bildlauf eingeschränkt ist. Wenn Sie z. B. einen Text mit less anzeigen (dies geschieht insbesondere, wenn Sie einen Mann lesen), können Sie den Inhalt mit j, k und den Pfeiltasten scrollen. Aber aucho mit gnome-terminal können Sie das mit dem Scrollen mit der Maus tun, dank des erwähnten Tricks.

Ich vermute also, dass tmux das Terminal genauso “einfängt” wie less - und der gleiche Mechanismus in gnome-terminal greift: Mausscrollen wird in das Drücken der Pfeiltasten nach oben/unten übersetzt.

Sie können diese Funktion in den Profileinstellungen abschalten und so den normalen Bildlauf unter allen Umständen erhalten. Deaktivieren Sie einfach das letzte Kontrollkästchen auf der Registerkarte “Scrollen”:

.

1
1
1
2018-01-02 23:48:52 +0000

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

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

Wahrscheinlich wollen Sie auch

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

damit verwenden.

0
0
0
2018-02-12 23:02:10 +0000

Sie können die Bindungsideen aus den anderen Antworten kombinieren, um ein ziemlich zufriedenstellendes Scroll-Verhalten zu erhalten: funktioniert in vim, wechselt im Terminal automatisch in den Kopiermodus und beendet ihn, wenn Sie das Ende erreichen, erlaubt Ihnen aber trotzdem, Ihr Mausrad in man, less und journalctl zu benutzen.

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 andere Befehle hinzufügen, die Pfeiltasten zum Scrollen im grep -e ‘man’ Teil benötigen

ich habe die Send-Tasten mehrfach hinzugefügt, so dass ein Ticken auf dem Mausrad 4 Zeilen auf einmal scrollen wird