How do I increase the scrollback buffer size in tmux
?
If I enter copy mode, the number of available scrollback lines is always below 2000.
How do I increase the scrollback buffer size in tmux
?
If I enter copy mode, the number of available scrollback lines is always below 2000.
The history limit is a pane attribute that is fixed at the time of pane creation and cannot be changed for existing panes. The value is taken from the history-limit
session option (the default value is 2000).
To create a pane with a different value you will need to set the appropriate history-limit
option before creating the pane.
To establish a different default, you can put a line like the following in your .tmux.conf
file:
set-option -g history-limit 3000
Note: Be careful setting a very large default value, it can easily consume lots of RAM if you create many panes.
For a new pane (or the initial pane in a new window) in an existing session, you can set that session’s history-limit
. You might use a command like this (from a shell):
tmux set-option history-limit 5000 \; new-window
For (the initial pane of the initial window in) a new session you will need to set the “global” history-limit
before creating the session:
tmux set-option -g history-limit 5000 \; new-session
Note: If you do not re-set the history-limit
value, then the new value will be also used for other panes/windows/sessions created in the future; there is currently no direct way to create a single new pane/window/session with its own specific limit without (at least temporarily) changing history-limit
(though show-option
(especially in 1.7 and later) can help with retrieving the current value so that you restore it later).
Open tmux configuration file with the following command:
vim ~/.tmux.conf
In the configuration file add the following line:
set -g history-limit 5000
Log out and log in again, start a new tmux windows and your limit is 5000 now.
This will fix it in one liner:
echo "set -g history-limit 5000" >> ~/.tmux.conf
For those of you that don't know where to find .tmux.conf
file, you can simply create a new file at ~/.tmux.conf
, then add this single line into the file set-option -g history-limit 50000
if above command will throw error. (comment taken from @C.Lee on this answer)
This builds on ntc2 and Chris Johnsen's answer. I am using this whenever I want to create a new session with a custom history-limit. I wanted a way to create sessions with limited scrollback without permanently changing my history-limit for future sessions.
tmux set-option -g history-limit 100 \; new-session -s mysessionname \; set-option -g history-limit 2000
This works whether or not there are existing sessions. After setting history-limit for the new session it resets it back to the default which for me is 2000.
I created an executable bash script that makes this a little more useful. The 1st parameter passed to the script sets the history-limit for the new session and the 2nd parameter sets its session name:
#!/bin/bash
tmux set-option -g history-limit "${1}" \; new-session -s "${2}" \; set-option -g history-limit 2000
As the scrollback buffer size (i.e., history-limit
) can't be re-set for existing panes, the workaround that worked for me thus far is using the pipe-pane
command (which is similar to screen
's log
command).
Quoting this Unix & Linux answer:
You can use the
pipe-pane
command after thetmux
prefix (with the default prefix, this would be CTRL+b:pipe-pane
).Example 1
The example found here will overwrite the target file (in this case,
myfile
):
pipe-pane "cat >myfile"
Example 2
The example in the
tmux
manual will bind a key combo to toggle logging and to append to the specified file instead of overwriting it:The
-o
option only opens a new pipe if no previous pipe exists, allowing a pipe to be toggled with a single key, for example:bind-key C-p pipe-pane -o 'cat >>~/output.#I-#P'