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).
2 ** (25 - 7) = 256K or 250 thousand lines.set-option -g history-limit 50000:source ~/.tmux.conf), which will make new windows/panes in that session obey the new config.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.
~/.tmux.conf in each session (& then launch new windows in those sessions & close any old windows).seq 1 5100 and scroll back with ^B+PgUpThis 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)
~/.tmux.conf seems to work for meThis 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-panecommand after thetmuxprefix (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
tmuxmanual will bind a key combo to toggle logging and to append to the specified file instead of overwriting it:The
-ooption 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'
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.
tmuxThe 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.
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.