Wie scrolle ich in tmux?

1297

Ich habe gerade angefangen, tmux zu verwenden, und es gefällt mir sehr gut, aber ich muss in der Lage sein, in den Puffern / Fenstern / Fenstern zu scrollen, die ich geöffnet habe. Es ist mir egal, ob es mit der Maus funktioniert oder nicht. Wenn ich die tmux-Manpage durchsuche, werden nur zwei Instanzen des Wortes "scroll" angezeigt, und beide haben mit dem Kopiermodus zu tun. Gibt es eine Möglichkeit, einen Bildlauf durchzuführen, ohne den gesamten Aufwand für den Kopiermodus aufzuwenden?

Chadoh
quelle
8
Mit welchem ​​Aufwand beschäftigen Sie sich? copy-modeist die Möglichkeit, den Verlauf anzuzeigen (und optional Inhalte daraus zu kopieren).
Chris Johnsen
2
Für mich können Sie F7 für Scroll-Modus und Q drücken, um zu beenden
JohnMerlino
7
set -g mode-mouse onDie Antwort von per @ chaiyachaiya war der Gewinner für mich
Peter Berg

Antworten:

1575

Ctrl- bDann [können Sie mit den normalen Navigationstasten (z. B. Up Arrowoder PgDn) navigieren . Drücken Sie, qum den Bildlaufmodus zu beenden.

Alternativ können Sie die Taste Ctrl- b PgUpdirekt in den Kopiermodus zu gehen und eine Seite nach oben (was es klingt wie Sie die meiste Zeit wollen)

Im viModus (siehe unten) können Sie die Seite auch mit Shift- kund Shift- zeilenweise nach oben / unten scrollen j(wenn Sie sich bereits im Scroll-Modus befinden). Unverschoben bewegt sich der Cursor anstelle der Seite.

Auszüge aus der Manpage :

tmux kann von einem angeschlossenen Client aus gesteuert werden, indem eine Tastenkombination aus dem Präfixschlüssel 'C-b' (Strg-b) gefolgt von einer Befehlstaste verwendet wird.

 The default command key bindings are:

[           Enter copy mode to copy text or view the history.

Function                     vi              emacs
--------                     --              -----
Half page down               C-d             M-Down
Half page up                 C-u             M-Up
Next page                    C-f             Page down
Previous page                C-b             Page up
Scroll down                  C-Down or C-e   C-Down
Scroll up                    C-Up or C-y     C-Up
Search again                 n               n
Search again in reverse      N               N
Search backward              ?               C-r
Search forward               /               C-s

Plus ein paar mehr. Beachten Sie, dass Sie C-bzweimal drücken müssen, wenn Sie diese C-bTaste zum Blättern verwenden, da sie als Befehlstaste gebunden ist. Informationen zum Voranstellen eines Kopiermodusbefehls mit einer Wiederholungszahl finden Sie auf der Manpage.

Sie können den Schlüsselbindungsmodus mit Ctrl- bund dann einstellen

:set-window-option mode-keys emacs

oder vi.

Dennis Williamson
quelle
14
Ich denke das C-b =ist choose-buffervoreingestellt. Meinten Sie C-b [(was copy-modestandardmäßig ist)? Sie können auch verwenden C-b PageUp, um den Kopiermodus direkt auf der vorherigen Seite zu starten (sehr praktisch, wenn Sie wissen, was Sie anzeigen / kopieren möchten, ist die aktuelle Seite bereits gescrollt).
Chris Johnsen
4
Richtig, mein tmux hat keinen Scroll-Modus. Sie müssen C-b [in den Kopiermodus wechseln und dann entweder die emacs-Taste oder die vi-Taste verwenden, um einen Bildlauf durchzuführen. Dies scheint eine Menge von Schritten zu sein, nur um zu scrollen, aber die Vorteile von tmux überwiegen immer noch diese Belästigungen. Ich habe ein Macbook und es gibt keinen PageUp-Key: - \. (Wie mache ich Schlüssel mit Abschriften wie du, Dennis?)
chadoh
44
@chadoh: Probieren Sie diese auf Ihrem Macbook aus: Home: fn-LeftArrow; Ende: fn-RightArrow; Bild auf: fn-UpArrow; Bild runter: fn-DownArrow. So machen Sie Tastenkappen:<kbd>Ctrl</kbd>
Dennis Williamson
5
direkt zum Terminal App auf macbook, geht die fn + und nie trifft tmux
Tyler
15
Wenn Sie sich auf einem MacBook im Bildlaufmodus befinden, können Sie mit Fn + Shift + LeftArrow einen Bildlauf nach oben durchführen.
Nick Hammond
306

Nun, Sie sollten sich überlegen, wie Sie das Scrollen richtig einstellen können: Fügen Sie Ihre tmux.conf

set -g mouse on        #For tmux version 2.1 and up

oder

set -g mode-mouse on   #For tmux versions < 2.1

Bei mir hat es in Fenstern und Scheiben geklappt. Jetzt ist tmux einfach perfekt.

Praktisches tmux enthält weitere Informationen zu tmux.conf-Dateien.

chaiyachaiya
quelle
5
Wenn ich dies tue, werden durch Mausklicks und Scrollen Kauderwelschzeichen in den Eingabeaufforderungsbereich des Terminals gedruckt, das ich mit tmux verwende. Irgendwelche Ideen?
Ely
22
Zukünftige Benutzer von tmux-Mäusen: Um zu vermeiden, dass Sie vor der Eingabe erneut nach unten scrollen müssen, können Sie den qScroll-Modus durch Drücken von beenden .
Jezen Thomas
15
Das Scrollen mit der Maus funktioniert einwandfrei, aber ich kann den Text leider nicht mehr mit der Maus markieren. Mit Tilda und tmux.
Friederblümle
27
Beachten Sie, dass dies in tmux 2.1 und höher durch ersetzt set -g mouse onwird und das Scrollen nicht automatisch wie zuvor in den Kopiermodus wechselt.
Thrnio
25
Wichtiger Hinweis: Diese Einstellung unterbricht das Hervorheben und Kopieren von Text. Verwenden Sie Umschalt + Klicken, um diese Funktionalität beizubehalten.
Shadoninja
141

Aus meiner .tmux.conf:

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

Dies ermöglicht natives XTerm-Scrollen.

togdon
quelle
28
Können Sie erklären, was das genau macht?
Ivo
11
Ich weiß nicht, was es tut, aber es ist reines Genie. Endlich funktioniert tmux scrolling, yay!
selbst
5
Unter OS X funktioniert das nicht ...
Nick
17
Lösung: gist.github.com/1297707
Nick
6
Aktivieren Sie diese Option aus , wenn Sie über togdon Antwort verwirrt sind: superuser.com/questions/310251/... IMO, wenn Sie nur eine einzige Scheibe haben, funktioniert diese Lösung besser als die akzeptierte Antwort.
Thameera
57

Für den neuesten tmux 2.1 ist dies die richtige Antwort, um mit der Maus zu scrollen:

set -g mouse on
" sane scrolling:
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e; send-keys -M'"

Es reicht nicht aus, nur Ihre .tmux.conf neu zu laden, sondern Sie müssen Ihre tmux neu starten, z tmux kill-server && tmux

entnommen aus https://github.com/tmux/tmux/issues/145

Flov
quelle
1
Wie ist das nicht die akzeptierte Antwort?
Marcel
2
der hinweis in dieser antwort über "nicht genug zu sein, um einfach .tmux.conf neu zu laden hat geholfen" und das beenden aller tmux-sitzungen für mich (vielleicht würde kill-server funktionieren) hat geholfen!
Colin D
1
Könnten Sie näher erläutern, wie das funktioniert?
Oligofren
Es scheint Mausereignisse weiterzuleiten, wenn die Maus geklickt / gescrollt / etc. Wird. Befindet sich der Bereich in einem indirekten / gepufferten Zustand (nur im Kopiermodus?) und drückt die Maus eine Taste, scrollt usw. Der letzte Abschnitt behandelt das Scrollen im direkten Modus, indem zuerst in einen indirekten Modus gewechselt wird. Wenn diese Steuerelemente nicht berücksichtigt werden, interpretiert das Terminal die Ereignisse möglicherweise als Bildlauf im Verlauf, wenn überhaupt. Trotzdem weiß ich nicht, ob es mir jemals gelungen ist, meinen Pager und Vim dazu zu bringen, gleichzeitig einen korrekten Bildlauf durchzuführen, und ich habe ein paar der Schnipsel ausprobiert.
John P
2
@chefarov - Per Kommentar zu einer anderen Antwort können Sie dies tun, Shift+clickwenn Sie den Mausmodus aktiviert haben.
Brendan Moore
14

In meinem Fall nur opt+ UpArrowund opt+ DownArrowunter OSX.

ythdelmar
quelle
@ fixer1234 Die Frage erwähnt Linux überhaupt nicht. tmuxkann auch unter OS X verwendet werden.
Slhck
@slhck: Danke. Zu trübe Augen; Astigmatismus setzte ein. Ich hatte das tmux-Tag als Linux-Tag falsch verstanden.
Fixer1234
11

Dies ist die Art und Weise, wie ich es gemacht habe, und die Gründe, warum ich denke, dass es besser ist als die Standardmethode.

Um es auszuprobieren, geben Sie alle Codeabschnitte ein ~/.tmux.conf.

Schritt 1. Ändern Sie den Präfixschlüssel, damit Sie kein Bit erreichen müssen. 'B' scheint eine enge Taste zu sein, befindet sich jedoch in der Mitte der beiden Zeigefinger (bei 'F' bzw. 'J'). Da diese Abkürzung in tmux von wesentlicher Bedeutung ist, ist Cj viel besser, da es sich um eine Null-Hand-Bewegung handelt (abgesehen vom Drücken der Taste).

set -g prefix C-j
unbind C-b
bind C-j send-prefix

Schritt 2. 'S' (um in den Kopiermodus zu gelangen) ist: 1) Schließen (gleicher Grund wie oben), 2) beinhaltet die andere Hand (vergleiche: das 1-2 in Boxing oder den lsBefehl zum Anzeigen von Dateien in einem Verzeichnis ) und 3) könnten als Mnemonik für "scrollen" angesehen werden (obwohl der Kopiermodus nicht nur das Scrollen zum Gegenstand hat).

bind s copy-mode

Schritt 3. Der letzte Teil, das eigentliche Scrollen. 'P' und 'N' sind den Emacs-Benutzern für diesen Zweck vertraut. Sie sind nah, intuitiv ('P' steht über 'N' auf der Tastatur) und mnemonisch ("Vorherige" und "Nächste"). Wenn Sie nur in Emacs gescrollt haben und dann zu tmux gegangen sind, ist es sinnvoll, diese Verknüpfungen zu haben.

Ich fand jedoch, dass 'I' und 'K' noch besser sind - sie sind noch näher als 'P' und 'N' und intuitiv (aus dem gleichen Grund); Was Mnemonics betrifft - da das Scrollen so häufig vorkommt, spielt Mnemonics keine Rolle, da die Verknüpfungen bald Ihr Gehirn umgehen und in das Muskelgedächtnis gelangen.

bind -t emacs-copy 'p' scroll-up
bind -t emacs-copy 'n' scroll-down
bind -t emacs-copy 'i' scroll-up
bind -t emacs-copy 'k' scroll-down
Emanuel Berg
quelle
7

Ich habe viel nach dieser und der für mich besten Lösung gesucht, die in diesem ausführlichen Handbuch aufgeführt ist: http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/

Fügen Sie diese Bindungen in ~ / .tmux.conf hinzu:

set -g mode-mouse on

unbind +
bind + \
  new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \;\
  swap-pane -s tmux-zoom.0 \;\
  select-window -t tmux-zoom

unbind -
bind - \
  last-window \;\
  swap-pane -s tmux-zoom.0 \;\
  kill-window -t tmux-zoom

Wenn der oben beschriebene Ansatz implementiert ist, können Sie auch aus Bereichen in einem Fenster kopieren, indem Sie zunächst mit Präfix + in jeden Bereich zoomen .

Ein wichtiges Detail, das im Mausmodus fehlte, ist das Drücken der Umschalttaste, bevor ein zu kopierender Bereich ausgewählt wird. Dies kopiert es in den traditionellen Terminal-Puffer anstatt in den tmux-Kopierpuffer. ( https://wiki.archlinux.org/index.php/Tmux#Scrolling_issues )

muneeb
quelle
7

Ich würde empfehlen, das tmux-better-mouse-mode- Plugin auszuprobieren, um die meisten Probleme mit der tmux-mouse zu lösen.

Es ist kompatibel mit Tmux 2.1+ und dem neuen set-option -g mouse onAnsatz.

aymericbeaumet
quelle
1
Danke, das ist die beste Lösung für mich. Es deckt alle meine Mausrad-Bindungen ab, die ich manuell hinzugefügt habe (damit ich sie nicht mehr benötige), und es gibt zwei Killer-Features, die ich mir sehr gewünscht habe: scroll-without-changing-panein Kombination mit scroll-without-changing-paneund emulate-scroll-for-no-mouse-alternate-buffer. Jetzt ist meine Erfahrung mit tmux viel besser.
Selurvedu
6

Das Einzige, was für mich funktioniert, ist Folgendes ~/.tmux.conf

# 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"

(Möglicherweise müssen Sie einen Neustart durchführen, damit dies wirksam wird.)

Aktualisieren:

Ich habe festgestellt, dass diese Lösung nicht mehr funktioniert, wenn Sie die Einstellung in Putty Connection> Data> Terminal-type in "putty" (zur Behebung einiger Formatierungsprobleme) von "xterm" ändern.

Update 2:

Verwenden Sie dies, wenn Sie "Kitt" als Terminaltyp wünschen: set -g terminal-overrides "putty*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"

Phocks
quelle
2
Dieser löst mein Scrolling-Problem auch in der iPhone-App.
NathaneilCapital
Das letzte Mal, als ich es versuchte, funktionierte es nicht mehr, aber es funktionierte. Seltsam. set -ga terminal-overrides ',xterm*:smcup@:rmcup@'
Phocks
4

Das hat bei mir funktioniert:

vim ~/.tmux.conf
set -g mode-mouse on      ###Insert this setting with vim, then source the file.
tmux source-file ~/.tmux.conf
Chhetri
quelle
2
Seit der Version 2.1 (18. Oktober 2015) sollte die Optionset -g mouse on
naoko
+1 für die tatsächliche Angabe des vollständigen Pfads in der Konfigurationsdatei. @ Chaiyachaiya Antwort wäre sonst perfekt.
John McFarlane
1

FWIW, auf einem MacBook / OSX Mojave, nach dem Ausführen von ctrl+[:

  • up arrow für die Aufstellung
  • down arrow für die Linie nach unten
  • fn + up arrow für die Seite nach oben
  • fn + down arrow zum runterblättern
  • q, um den Ansichtsmodus zu verlassen
mithunpaul
quelle
0

Das einzige, was bei mir funktioniert hat, war, dass vim ~ / .tmux.conf -g mode-mouse auf ### gesetzt hat. Fügen Sie diese Einstellung mit vim ein und geben Sie dann die Quelle für die Datei ein. tmux-Quelldatei ~ / .tmux.conf

Sarika Soni
quelle
Könnten Sie eine Formatierung verwenden, um dies klarer zu machen? Verwenden Sie die Schaltfläche BEARBEITEN und sehen Sie sich die im Editor verfügbaren Optionen an, um die hilfreichen Formate hinzuzufügen.
music2myear
-2
  • Ctrl+ A-, um den Bildlauf zu starten
  • Ctrl+ C- um das Scrollen zu stoppen
user656723
quelle
3
Dieser Beitrag ist zu kurz, um die Frage sinnvoll zu beantworten. Es werden nur sehr wenige neue Informationen zu bereits geposteten Antworten hinzugefügt. Es sagt nichts darüber aus, wie man einen Bildlauf durchführt (nur wie man den Kopiermodus ein- und ausschaltet). Die Standard-Befehlspräfix-Tastenkombination lautet Ctrl-B( Ctrl-Aist die Standardeinstellung für den GNU-Bildschirm).
Anthony Geoghegan
1
Ich bin nicht sicher, ob der Autor dieser Antwort die Frage überhaupt verstanden hat. Es ist nicht hilfreich und einfach falsch.
Vik
2
Ich habe so lange nach einer Möglichkeit gesucht, mit dem Scrollen aufzuhören, danke, dass Sie darauf hingewiesen haben!
PERR0_HUNTER