Wie scrolle ich in tmux?

608117
chadoh

Ich habe gerade erst mit tmux angefangen und es gefällt mir wirklich gut, aber ich muss in der Lage sein, innerhalb der Puffer / Fenster / Fenster 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, finde ich nur zwei Instanzen des Wortes "scroll", die sogar auftauchen, und beide haben mit dem Kopiermodus zu tun. Gibt es eine Möglichkeit zum Scrollen, ohne den gesamten Kopiermodus aufzurufen?

1108
Um welchen Aufwand handelt es sich? Mit dem Kopiermodus können Sie den Verlauf anzeigen (und optional Sachen daraus kopieren). Chris Johnsen vor 13 Jahren 7
für mich können Sie f7 für den Bildlaufmodus und q zum Beenden drücken JohnMerlino vor 10 Jahren 1
"set -g mode-mouse on" per @ chaiyachaiyas Antwort war der Gewinner für mich Peter Berg vor 8 Jahren 2

11 Antworten auf die Frage

1350
Dennis Williamson

Ctrl- bdann [können Sie mit Ihren normalen Navigationstasten blättern (z. B. Up Arrowoder PgDn). 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). Ohne Verschiebung bewegt sich der Cursor anstelle der Seite.

Auszüge aus der Manpage :

tmux kann von einem angeschlossenen Client aus gesteuert werden, indem standardmäßig die Tastenkombination Präfixschlüssel 'C-b' (Ctrl-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 Option für die Seite nach oben verwenden, da C-bsie als Befehlstaste gebunden ist. Informationen zum Voranstellen eines Kopiermodusbefehls mit einer Wiederholungszählung finden Sie auf der Manpage.

Sie können den Tastenbindungsmodus mit Ctrl- bund dann einstellen

:set-window-option mode-keys emacs 

oder vi.

Ich denke, dass "Cb =" standardmäßig "select-buffer" ist. Meinten Sie `Cb [` (was standardmäßig `Kopiermodus` ist)? Sie können auch `Cb PageUp` verwenden, um den Kopiermodus direkt auf der vorherigen Seite zu starten (sehr praktisch, wenn Sie wissen, was Sie sehen / kopieren möchten, und die aktuelle Seite bereits gescrollt wurde). Chris Johnsen vor 13 Jahren 14
@ Chris: In meinem tmux 0.8 (und seiner Manpage) ist `Cb =` `scroll-mode`. [Anscheinend] (http://tmux.cvs.sourceforge.net/viewvc/tmux/tmux/CHANGES), neuere Versionen haben das verworfen. Dennis Williamson vor 13 Jahren 0
Ahh, das erklärt es. Ich glaube, ich habe mit 1.1 angefangen, was bereits nach dem "scroll-mode" subsummiert wurde. Das OP sagt "nur zwei Instanzen des Wortes" scroll "[in der Manpage]", daher ist die Version wahrscheinlich eine ohne "scroll-mode". Chris Johnsen vor 13 Jahren 1
Richtig, mein tmux hat keinen Scroll-Modus. Um in den Kopiermodus zu gelangen, müssen Sie Cb [] und dann entweder die emacs- oder die vi-Tastenkombination verwenden, um einen Bildlauf durchzuführen. Dies scheint eine Menge Schritte zu sein, nur um zu scrollen, aber die Vorteile von tmux überwiegen diese Belästigungen. Ich bin auf einem Macbook und es gibt keinen PageUp-Schlüssel: - \. (Wie mache ich auch Schlüssel mit Markdown wie Sie, Dennis?) chadoh vor 13 Jahren 4
@chadoh: Probiere diese auf deinem Macbook: Home: fn-LeftArrow; Ende: fn-RightArrow; Bild auf: Fn-UpArrow; Bild runter: fn-downArrow. Tastenkappen erstellen: ` Ctrl` Dennis Williamson vor 13 Jahren 34
auf dem macbook geht der fn + up direkt zur terminal-app und schlägt niemals tmux Tyler vor 13 Jahren 4
Auf einem Macbook können Sie im Bildlaufmodus mit Fn + Shift + LeftArrow eine Seite nach oben scrollen. Nick Hammond vor 11 Jahren 14
Mit den vi-Modus-Tasten können Sie auch die typischen Werte verwenden: Cy und Ce, um Zeile für Zeile nach oben / unten zu scrollen wik vor 11 Jahren 0
@ chaiyachaiyas Antwort ist viel besser (Wenn Sie es ertragen können, nach der Maus zu greifen) Jonathan Hartley vor 10 Jahren 0
Drücken Sie die Escape-Taste oder die Q-Taste, um den Bildlaufmodus zu verlassen. Graham Perks vor 9 Jahren 0
Gibt es nicht eine bessere Möglichkeit als nur Pfeile nach oben und unten zu scrollen? Wie Batch-Scrolling wie in Strg + B, ähnlich wie bei VIM? Charlie Parker vor 8 Jahren 0
@ CharlieParker: Ich habe meine Antwort um einige Navigationstasten-Bindungen erweitert. Sie können numerische Zähler-Präfixe wie in "vim" verwenden. Sie können also (auf vi-Tastenkombinationen gesetzt) ​​2 drücken, dann "PageUp" (oder zweimal "Strg-b") und dann nach oben zwei bildschirmfüllungen. Dennis Williamson vor 8 Jahren 1
So viel Aufwand, nur um grundlegende Dinge zu erledigen - warum muss die Benutzeroberfläche so arm sein? Dima Knivets vor 8 Jahren 0
Sind zeilenweises Scrollen von "Shift-j" und "Shift-k" standardmäßig aktiviert? Es scheint, als ob es auf meiner Maschine ist. mbigras vor 7 Jahren 0
@mbigras: Es scheint zu sein. Dennis Williamson vor 7 Jahren 0
@DennisWilliamson bedeutet das, dass sich tmux standardmäßig im vi-Modus befindet? Oder hat es nur einen Teil der Funktionalität? Zeilenweises Scrollen in diesem Fall. mbigras vor 7 Jahren 0
@mbigras: Von der Manpage: "mode-keys [vi | emacs] Verwenden Sie im Kopiermodus Tastenbindungen im vi- oder emacs-Stil. Die Standardeinstellung ist emacs, sofern nicht VISUAL oder EDITOR 'vi' enthält." Dennis Williamson vor 7 Jahren 0
@DennisWilliamson danke! Ist sinnvoll, $ echo $ EDITOR # => vim. Wonach haben Sie in der Manpage gesucht? Zum Beispiel `: / foobar ' mbigras vor 7 Jahren 0
@mbigras Ich suchte nach "Modus-Tasten" und schaute mich um. Dennis Williamson vor 7 Jahren 0
Um zu entkommen, tippen Sie 'Q' oder 'Strg' + 'J'. Mateen Ulhaq vor 7 Jahren 0
"CTRL-B" und dann "PgUp" funktionieren einwandfrei. Dann kann ich `PgUp`,` PgDn` oder `ArrUp`,` ArrDn` verwenden. Um zu verlassen und automatisch bis zum Ende zu blättern, drücken Sie 'Esc' Markus Zeller vor 5 Jahren 0
252
chaiyachaiya

Nun, Sie sollten überlegen, wie Sie das Scrollen richtig einstellen: fügen Sie in Ihrem hinzu tmux.conf

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

oder

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

Es funktionierte für mich in Fenstern und Scheiben. Jetzt ist tmux einfach perfekt.

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

Wenn ich dies tue, werden Mausklicks und Bildlauf dazu geführt, dass Kauderwelsch-Zeichen im Eingabeaufforderungsbereich des Terminals gedruckt werden, das ich mit tmux verwende. Irgendwelche Ideen? ely vor 11 Jahren 4
Das funktioniert gut für mich. Wenn wir nur Tastenkombinationen finden können, um dasselbe zu tun (vielleicht einen Bildschirm zu einer Zeit), wäre ich ein sehr glücklicher Camper. Jonathan Hartley vor 10 Jahren 0
Zukünftige Tmux-Mausbenutzer: Damit Sie nicht vor dem Tippen noch einmal nach unten scrollen müssen, drücken Sie die Taste q, um den Bildlaufmodus zu beenden. Jezen Thomas vor 10 Jahren 10
Das Scrollen mit der Maus funktioniert gut, aber leider kann ich die Maus nicht mehr zum Auswählen von Text verwenden. Verwendung von Tilda und Tmux. friederbluemle vor 9 Jahren 10
Beachten Sie, dass dies in tmux 2.1 durch "set -g mouse on" ersetzt wird und beim Scrollen nicht automatisch der Kopiermodus aktiviert wird. thrnio vor 9 Jahren 26
Wichtiger Hinweis: Diese Einstellung unterbricht das Hervorheben und Kopieren von Text. Verwenden Sie die Umschalttaste, um diese Funktionalität zu erhalten. Shadoninja vor 8 Jahren 16
@ Mr.F probiere `set mouse-utf8 off` Gareth Davidson vor 7 Jahren 0
1) Wir können Text nicht mehr mit Klicks auswählen. 2) Wir können nicht in vim blättern pltrdy vor 6 Jahren 1
Das hat für mich funktioniert, aber erst nachdem der tmux-Server mit `tmux kill-server 'getötet wurde. Blaine Lafreniere vor 6 Jahren 0
129
togdon

Von meiner .tmux.conf:

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

Dies ermöglicht das native Xterm-Scrollen.

Kannst du erklären, was das genau macht? Ivo vor 13 Jahren 27
Ich weiß nicht, was es tut, aber es ist reines Genie. Schließlich funktioniert Tmux-Scrollen, yay! oneself vor 12 Jahren 9
Vielleicht hilft das, es zu erklären? http://blogs.oracle.com/samf/entry/smcup_rmcup_hate Denilson Sá Maia vor 12 Jahren 0
Das funktioniert bei mir unter OS X nicht ... Nick vor 12 Jahren 5
Lösung: https://gist.github.com/1297707 Nick vor 12 Jahren 17
Wenn Sie über die Antwort von togdon verwirrt sind, überprüfen Sie Folgendes: http://superuser.com/questions/310251/use-terminal-scrollbar-with-tmux?lq=1 IMO. Wenn Sie nur einen einzigen Bereich haben, funktioniert diese Lösung besser als die akzeptierte Antwort. thameera vor 11 Jahren 5
Schön, aber es bricht (für mich) ab, nachdem einige Dateien mit dem Befehl "less" angezeigt wurden. Das Bildlaufrad des Mausrads zeigt N leere Zeilen an, wobei N = Länge der mit "less" angezeigten Datei. dehmann vor 10 Jahren 2
Funktioniert wie erwartet in Ubuntu. Mit den Tasten Pgup und Pgdn können Sie blättern. Vielen Dank. Shnkc vor 10 Jahren 0
Das ist wirklich komisch. Wenn Sie sich die Bildlaufleiste ansehen, bleibt sie oben, bis Sie mit dem Bildlauf beginnen. dann schießt es nach oben. Ich bin irgendwie froh, dass das funktioniert. dylnmc vor 9 Jahren 0
https://wiki.archlinux.org/index.php/Tmux#Scrolling_issues Brian Maltzan vor 9 Jahren 1
Ich dachte, dass es zuerst funktionierte, aber am Ende musste ich es deaktivieren, was meine Ausgabe manchmal durcheinander bringt. nha vor 9 Jahren 0
Der Scrollback-Puffer wird nach einem (erneuten) Anhängen nicht beibehalten Ray vor 8 Jahren 0
Dies funktioniert nicht für mehrere Fenster. Es wird das Haupt-Host-Terminal anstelle der emulierten Terminals innerhalb von tmux durchlaufen Shadoninja vor 8 Jahren 1
Dies funktioniert für mich unter OS X. Für `screen` habe ich in meinem` .screenrc` auch etwas Ähnliches gemacht, um den gleichen Effekt zu erzielen: `termcapinfo xterm * ti @: te @` nishanths vor 8 Jahren 0
Dies scheint nicht mehr zu funktionieren. Wenn ich scrolle, fehlen der Ausgabe Zeilen und sind unvollständig. Ashesh Kumar Singh vor 6 Jahren 0
Für neuere Versionen ist die Antwort unter mir die richtige. togdon vor 6 Jahren 0
43
Flov

Für das neueste tmux 2.1 ist es die richtige Antwort, wenn Sie mit Ihrer Maus sanft scrollen möchten:

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

es reicht nicht aus, nur die .tmux.conf neu zu laden, wenn Sie den tmux neu starten möchten, z tmux kill-server && tmux

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

Wie ist das nicht die akzeptierte Antwort? Marcel vor 7 Jahren 1
Der Hinweis in dieser Antwort, dass "nicht genug ist, um die .tmux.conf einfach neu zu laden, hat geholfen" und das Beenden aller tmux-Sitzungen für mich (vielleicht hat der Kill-Server funktioniert) hat geholfen! Colin D vor 7 Jahren 2
Könnten Sie erläutern, wie das funktioniert? oligofren vor 7 Jahren 1
Es scheint, Mausereignisse weiterzuleiten, wenn auf die Maus geklickt wird / gescrollt wird / etc. Wenn sich der Bereich in einem indirekten / gepufferten Zustand befindet (nur im Kopiermodus?), und die Maus eine Taste drückt, einen Bildlauf ausführt usw. Der letzte Abschnitt behandelt das Blättern im Direktmodus, indem zuerst in einen indirekten Modus gewechselt wird. Wenn diese Steuerelemente nicht vorhanden sind, interpretiert das Terminal die Ereignisse möglicherweise als Bildlauf für den Verlauf, wenn überhaupt. Ich weiß nicht, ob ich es jemals geschafft habe, dass mein Pager und Vim gleichzeitig korrekt gescrollt werden, und ich habe ein paar Schnipsel ausprobiert. John P vor 6 Jahren 0
12
Yth

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

@ fixer1234 Die Frage erwähnt Linux überhaupt nicht. `tmux` kann auch unter OS X verwendet werden. slhck vor 9 Jahren 0
@slhck: Danke. Zu trübe Augen; Astigmatismus trat ein. Ich hatte den tmux-Tag als Linux-Tag falsch gelesen. fixer1234 vor 9 Jahren 0
10
Emanuel Berg

Auf diese Weise habe ich es funktionieren lassen und die Gründe, warum ich denke, dass es besser ist als die Standardmethode.

Um es auszuprobieren, fügen Sie alle Codeabschnitte ein ~/.tmux.conf.

Schritt 1. Ändern Sie den Präfixschlüssel, damit Sie kein Bit erreichen müssen. 'B' ist scheinbar eine nahe Taste, liegt jedoch in der Mitte der beiden Zeigefinger (bei 'F' bzw. 'J'). Da diese Abkürzung in tmux unabdingbar ist, ist Cj viel besser, da es keine Handbewegung gibt (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) close (der gleiche Grund wie oben), 2) die andere Hand (vergleiche: 1-2 in Boxing oder den lsBefehl zum Anzeigen von Dateien in einem Verzeichnis) ) und 3) könnte man sich als Mnemonik für "Scrollen" vorstellen (obwohl der Kopiermodus nicht nur das Scrollen betrifft).

bind s copy-mode 

Schritt 3. Der letzte Teil, das eigentliche Scrollen. 'P' und 'N' sind den Emacs-Benutzern zu diesem Zweck bekannt. Sie sind nah, intuitiv ("P" steht auf der Tastatur über "N") und Mnemonik ("Vorheriges" und "Nächstes"). Wenn Sie in Emacs nur einen Bildlauf durchgeführt haben und dann zu tmux gehen, ist es sinnvoll, diese Abkürzungen zu verwenden.

Ich fand jedoch, dass 'I' und 'K' noch besser sind - sie sind sogar noch näher als 'P' und 'N' und intuitiv (aus demselben Grund). Was die Mnemonik angeht - da das Scrollen so üblich ist, spielen Mnemonik keine Rolle, da die Abkürzungen Ihr Gehirn bald überbrücken 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 
6
muneeb

Ich habe viel danach gesucht und die beste Lösung für mich funktioniert wie in diesem ausführlichen Handbuch erwähnt: 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 Fenstern eines Fensters kopieren, indem Sie zunächst mithilfe von Präfix + in jeden Bereich zoomen .

Ein wichtiges Detail, das im Mausmodus fehlte, ist das Drücken der Umschalttaste, bevor Sie einen zu kopierenden Bereich auswählen. Dadurch wird es in den herkömmlichen Terminalpuffer anstelle des Tmux-Kopierpuffers kopiert. ( https://wiki.archlinux.org/index.php/Tmux#Scrolling_issues )

Schätzen Sie Ihre Antwort. Oftmals brechen die genannten Links jedoch. Es wäre immer von Vorteil, wenn Sie hier den Kern Ihrer Antwort hinzufügen und den Link nur als Referenz angeben. Prasanna vor 8 Jahren 0
5
aymericbeaumet

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

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

Danke, das ist die beste Lösung für mich. Es deckt alle meine Mausrad-Bindungen ab, die ich manuell hinzugefügt habe (also brauche ich sie nicht mehr), und es gibt zwei Killer-Funktionen, die ich sehr wollte: `Scroll-ohne-Wechsel-Fenster 'in Kombination mit` Bildlauf ohne Wechselfenster und "Emulieren-Bildlauf ohne Maus-Alternativ-Puffer". Jetzt ist meine tmux-Nutzungserfahrung viel besser. selurvedu vor 6 Jahren 1
4
phocks

Das Einzige, was für mich funktioniert, ist das Folgende ~/.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" 

(Sie müssen möglicherweise 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-Typ in "Putty" (zur Behebung einiger Formatierungsprobleme) von "xterm" ändern.

Update 2:

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

Dieses löst eigentlich mein Scrolling-Problem in der iPhone-App. NathaneilCapital vor 8 Jahren 1
Das letzte, was ich ausprobiert hatte, funktionierte nicht mehr, aber das funktionierte. Seltsam. `set -ga terminal-overrides ', xterm *: smcup @: rmcup @'` phocks vor 8 Jahren 0
1
Chhetri

Das hat für mich funktioniert:

vim ~/.tmux.conf set -g mode-mouse on ###Insert this setting with vim, then source the file. tmux source-file ~/.tmux.conf