This is where tmux’s Copy Mode comes in. This mode allows you to navigate through your terminal’s history, effectively enabling scrolling. However, scrolling in tmux is not as straightforward as in other applications. Therefore, it’s crucial to learn the proper way to do it.
TL;DR: Scrolling in tmux is achieved through entering the “Copy Mode” by pressing ‘Ctrl-b’ followed by the square bracket key ‘[‘. Once you are in Copy Mode, you can navigate using the arrow keys or Page Up/Down keys.
Scroll down to get a detailed answer
However, there’s much more to this process than meets the eye, and mastering these steps will make your tmux experience much more efficient.
Table of Contents
Entering Copy Mode
I recommend starting with the simplest and most essential step: entering Copy Mode. This is the mode that allows you to scroll through the terminal’s buffer.
To enter Copy Mode, press ‘Ctrl-b’ followed by the square bracket key ‘[‘. Once you are in Copy Mode, you can move around using the arrow keys, just like you would in any text editor.
Scrolling in Copy Mode
Once you’re in Copy Mode, you can use the up and down arrow keys to scroll line by line. For faster scrolling, you can use ‘Page Up’ and ‘Page Down’ to move through entire pages.
Note: Keep in mind that you will need to exit Copy Mode to resume your normal tmux commands. To do this, simply press ‘q’.
Searching in Copy Mode
In addition to scrolling, Copy Mode also allows you to search for specific text. To do this, enter Copy Mode, then press ‘Ctrl-r’ followed by the text you wish to search. Press ‘Enter’ to begin the search.
Setting Mouse Mode
If you prefer using your mouse for scrolling, tmux also supports this. However, you will need to enable Mouse Mode. To do this, add the following line to your tmux configuration file (.tmux.conf):
setw -g mouse on
Now, you can use your mouse wheel to scroll up and down in tmux!
Useful Scrolling Shortcuts
To make your tmux experience even better, I recommend familiarizing yourself with these shortcuts:
- ‘Ctrl-b’ + ‘[‘ + ‘Arrow keys’ to scroll line by line
- ‘Ctrl-b’ + ‘[‘ + ‘Page Up/Down’ to scroll by pages
- ‘Ctrl-b’ + ‘[‘ + ‘Ctrl-r’ + ‘text’ to search for specific text
- ‘q’ to exit Copy Mode
A Common Misconception: Using Native Scroll
One common misunderstanding is that you can use the native scroll bar to scroll in tmux. This is not true. tmux captures and handles all input and output, meaning the scroll bar will not work as expected. The only way to scroll is by entering Copy Mode or enabling Mouse Mode.
Taking Advantage of tmux’s Pane Scrolling
Beyond scrolling within a single tmux pane, you might also want to navigate between different tmux panes. This is another feature that makes tmux stand out as a terminal multiplexer.
To switch between panes, you would typically use ‘Ctrl-b’ followed by an arrow key pointing to the direction of the desired pane. But what if you want to scroll between these panes?
With Mouse Mode enabled (setw -g mouse on
in your .tmux.conf file), you can scroll within the active pane using the mouse wheel. But did you know that simply moving your cursor to another pane and scrolling will make that pane active and instantly let you scroll within it? This feature often goes unnoticed but can significantly enhance your workflow when dealing with multiple panes.
Scrolling in Detached tmux Sessions
Now, let’s talk about a somewhat advanced topic: scrolling in detached tmux sessions. Detached sessions are one of the reasons tmux is incredibly powerful. You can detach from a tmux session, leave it running in the background, and later reattach to it.
But what happens when you want to scroll through the output of a detached session after reattaching to it? As always, tmux has got you covered. The output is preserved in the buffer, and you can scroll through it using the same method we discussed earlier, entering the Copy Mode (‘Ctrl-b’ followed by ‘[‘).
Scrolling and tmux’s Configuration
Scrolling in tmux is very customizable. All the commands and shortcuts related to scrolling can be customized in your tmux configuration file (.tmux.conf). The key bindings for entering Copy Mode, scrolling up and down, or searching within the buffer can be altered to your liking.
For instance, if you prefer using Vim keybindings, you can change the configuration to allow for ‘h’, ‘j’, ‘k’, ‘l’ navigation in Copy Mode. To do this, you would add the following lines to your .tmux.conf file:
setw -g mode-keys vi
set -g status-keys vi
With these settings, ‘k’ would scroll up and ‘j’ would scroll down, mimicking the behavior of Vim.
Scrollback Buffer Limitations and Solutions
One often overlooked aspect of tmux’s scrolling feature is the limit of the scrollback buffer. By default, tmux keeps 2000 lines of history for each pane.
This means that you can only scroll up to the last 2000 lines. However, you can increase this limit in your .tmux.conf file. For instance, to set the history limit to 10000 lines, you would add the following line:
set-option -g history-limit 10000
I recommend setting this value according to your needs, but be cautious. Increasing the history limit will consume more memory.
Conclusion
Scrolling in tmux is a bit more complicated than in other applications, but once you get the hang of it, it’s incredibly efficient. By understanding and using Copy Mode, setting Mouse Mode, and utilizing the provided shortcuts, you can take full advantage of tmux’s capabilities.
FAQs
Why can’t I scroll in tmux like I do in other applications?
tmux handles all input and output within its interface. As such, it bypasses the usual scrolling mechanisms of your terminal emulator. To scroll in tmux, you have to use Copy Mode or enable Mouse Mode.
I can’t get Copy Mode to work, what could be the problem?
Make sure you’re pressing the correct key combination, ‘Ctrl-b’ followed by ‘[‘. If this doesn’t work, your tmux configuration file may have different key bindings. Check your .tmux.conf file to confirm.
How do I enable Mouse Mode permanently?
To enable Mouse Mode permanently, add the line setw -g mouse on
to your tmux configuration file (.tmux.conf). This will allow you to scroll using your mouse every time you start a new tmux session.