How do I scroll with either the keyboard or mouse? The tmux man page indicates one must enter copy-mode to scroll. Is there a way to quickly scroll without manually entering copy-mode?
- 24,246
- 64
- 231
- 400
- 20,789
- 3
- 18
- 9
15 Answers
Ctrl-b then [ then you can use your normal navigation keys to scroll around (eg. Up Arrow or PgDn). Press q to quit scroll mode.
Alternatively you can press Ctrl-b PgUp to go directly into copy mode and scroll one page up (which is what it sounds like you will want most of the time)
In vi mode (see below), you can also scroll the page up/down line by line using Shift-k and Shift-j (if you're already in scroll mode). Unshifted, the cursor moves instead of the page.
Excerpts from the man page:
tmux may be controlled from an attached client by using a key combination of a prefix key, ‘C-b’ (Ctrl-b) by default, followed by a command key.
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 a bunch more. Note that you have to press C-b twice if you use that for page up since C-b is bound as the command key. See the man page for information on prefacing a copy mode command with a repeat count.
You can set the key binding mode using Ctrl-b, then
:set-window-option mode-keys emacs
or vi.
- 111,445
Well, you should consider the proper way to set scrolling:
add in your ~/.tmux.conf
set -g mouse on #For tmux version 2.1 and up
or
set -g mode-mouse on #For tmux versions < 2.1
It worked for me in windows and panes. Now tmux is just perfect.
Practical tmux has more info on tmux.conf files.
- 9,886
- 5,719
For the newest tmux 2.1, to scroll with your mouse sanely, this is the right answer:
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'"
it's not enough to just reload your .tmux.conf you need to restart your tmux, e.g. tmux kill-server && tmux or just quit the services that are using tmux.
taken from https://github.com/tmux/tmux/issues/145
This is the way I made it work, and the reasons why I think it is better than the default way.
To try it out, put all the code sections in ~/.tmux.conf.
Step 1. Change the prefix key so you won't have to reach one bit. 'B' is seemingly a close key, but it is in the middle of the two index fingers (at 'F' and 'J', respectively). Because that shortcut is essential in tmux, C-j is much better as it involves zero hand movement (apart from hitting the key).
set -g prefix C-j
unbind C-b
bind C-j send-prefix
Step 2. 'S' (to enter copy-mode) is: 1) close (same reason as above), 2) involves the other hand (compare: the 1-2 in boxing, or the ls command to view files in a directory), and 3) could be thought of as mnemonic for "scroll" (although the copy-mode isn't just about scrolling).
bind s copy-mode
Step 3. The last part, the actual scrolling. 'P' and 'N' are familiar for this purpose to the Emacs users. They are close, intuitive ('P' is above 'N' on the keyboard), and mnemonic ("previous" and "next"). If you just did some scrolling in Emacs, and then go to tmux, it makes sense to have those shortcuts.
However, I found that 'I' and 'K' are even better - they are even closer than 'P' and 'N', and intuitive (for the same reason); as for mnemonics - as scrolling is such a common thing to do, mnemonics won't really matter as the shortcuts will soon bypass your brain and enter the muscle memory.
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
- 529
On OSX Mojave and newer, after entering copy mode with ctrl + b [, you can do:
- up arrow for line up
- down arrow for line down
- fn + up arrow for page up
- fn + down arrow for page down
- q to quit copy mode
- 133
- 241
I'd recommend giving a try to the tmux-better-mouse-mode plugin to solve most of your tmux mouse related issues.
It's compatible with Tmux 2.1+ and the new set-option -g mouse on approach.
- 231
I searched around a lot for this and the best solution for me works as mentioned in this detailed guide: http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/
Add these bindings in ~/.tmux.conf:
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
With the above approach implemented, you can copy from panes in a window as well by zooming into each pane first using Prefix +.
One important detail that was missing with the mouse mode is to press Shift before selecting an area to copy. This will copy it to traditional terminal buffer instead of the tmux copy buffer. (https://wiki.archlinux.org/index.php/Tmux#Scrolling_issues)
- 131
The only thing that works for me is putting the following in ~/.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"
(you may need to reboot for this to take effect)
Update:
I found that if you change the setting in Putty Connection > Data > Terminal-type to "putty" (used to fix some formatting issues) from "xterm" then this solution stops working.
Update 2:
Use this if you want "putty" as your terminal type: set -g terminal-overrides "putty*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"
- 274
Prefix + [ mine key is Ctrl + a the default key is Ctrl + b
after that its easy to navigate with vim config
- 167
- 121
The answers above did not work for me to enable keyboard scrolling, but this answer from a different question worked:
bind -n Pageup copy-mode -u
bind -n S-Pageup copy-mode -u
bind -n S-Pagedown send-keys Pagedown
- 241
The top answers already explain how to scroll. I'd like to add an option to avoid the need for scrolling: Pipe the output of long commands into less. less is a program to navigate through text files.
superlongcommand | less
Then you can use vim-like bindings (d/u) or PgUp/PgDn to scroll and q to exit. See Less Cheatsheet
- 19
- 1