Reputation: 5654
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.
Upvotes: 533
Views: 259471
Reputation: 8736
Plus the answers above; for the "current window buffer" you can increase buffer-limit using command:
tmux set-option buffer-limit 3000
because in document you will see:
history-limit [lines]: Set the maximum number of lines held in window history. This setting applies only to new windows - existing window histories are not resized and retain the limit at the point they were created.
buffer-limit [number]: Set the number of buffers; as new buffers are added to the top of the stack, old ones are removed from the bottom if necessary to maintain this maximum length.
For me I prefer to use buffer-limit only for tmux-sessions that I really need history checkups and this helps to manage multiple jobs with limited resources and prevent unpredicted memory loss.
Upvotes: 0
Reputation: 16484
I'm adding this answer because it isn't generally a good idea to just create a new configuration file and put your new configuration inside it, without first checking to see if there is an existing configuration file.
tmux
The reason for this is if you create a new configuration file, it is likely that this will clobber any configuration being loaded from files elsewhere in your system.
find / -type f -name '*tmux.conf*' 2>/dev/null
*tmux.conf*
2>/dev/null
ensures any Permission denied
errors are discarded to avoid cluttering the outputOn my system, it doesn't look like there is any existing configuration. But I do have this:
/usr/share/doc/tmux/example_tmux.conf
If we inspect the contents we can see it has some potentially useful presets.
However, since I don't appear to have a default configuration file being loaded from somewhere else in the system, it would seem ok for me to go ahead and create ~/.tmux.conf
.
To give an example of a case where this is important (at least in my experience, on most systems) consider the case of vim
.
$ find / -type f -name '*vimrc*' 2>/dev/null
/usr/share/vim/vim90/gvimrc_example.vim
/usr/share/vim/vim90/vimrc_example.vim
/etc/vim/vimrc
/etc/vim/vimrc.tiny
/home/me/.vimrc
Again, on this system there isn't a huge amount of stuff returned, however we do have /etc/vim/vimrc
.
To create the file /home/me/.vimrc
I copied the file /etc/vim/vimrc
. This avoids losing any sensible default configuration which is preconfigured there.
If you were to just create ~/.vimrc
, when vim
loads, it will check for this file with higher priority than checking for general system-wide configuration files such as /etc/vim/vimrc
.
That means, it won't read /etc/vim/vimrc
.
If you have ever created a configuration file from scratch for tumx
, vim
, or any other program and wondered why the behavior changed in strange ways, this might be why.
Upvotes: 1
Reputation: 8243
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'
Upvotes: 1
Reputation: 3276
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)
Upvotes: 12
Reputation: 71
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
Upvotes: 7
Reputation: 1382
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.
Upvotes: 72
Reputation: 224571
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).
Upvotes: 650