To duplicate a pane in TMUX while preserving its scrollback history, use the split-window -v command for horizontal splits or split-window -h for vertical ones. This creates a new window sharing the same process and buffer, allowing you to view long outputs on wider screens without losing previous terminal data.
Understanding Pane Splitting Mechanics
Many users confuse the default key bindings when trying to divide their workspace. By default, pressingCtrl+b % splits the current pane vertically, creating two panes side-by-side. Pressing Ctrl+b " (or Ctrl+b : split-window -h) splits the pane horizontally, stacking them top-to-bottom. The confusion often arises because "horizontal" and "vertical" can be interpreted differently depending on whether you describe the cut line or the resulting orientation. A vertical cut produces horizontal panes. A horizontal cut produces vertical panes.
When you split a pane using these standard methods, the new pane is an exact clone of the original at that moment. It shares the same file descriptor and, crucially, the same scrollback buffer. This means if your original pane has scrolled through thousands of lines of log output, the duplicated pane will also contain that entire history from the beginning. This feature is essential for developers who need to reference past commands while working on new tasks in a separate view.
For more details on managing multiple panes efficiently, consider reading our guide on How to Change Tmux Tile Layout to Arrange 8 Panes into 3x3 Instead of 4x2.
Duplicating Panes with History via Copy Mode
While splitting creates a structural copy, sometimes you need to explicitly capture the state including the visual history in a way that feels like a true duplication. You can achieve this by entering copy mode. PressCtrl+b [ to enter copy mode. In this mode, you can scroll up through your history using the mouse wheel or arrow keys. Once you have reviewed the necessary content, you can exit copy mode by pressing q.
The key benefit here is that the new pane created via splitting automatically inherits the scrollback buffer. Unlike a fresh shell session, which starts empty, the duplicated pane retains all previously printed characters. This allows you to scroll up in the new pane and see exactly what was displayed in the old one before the split occurred. If you need to select and copy specific text from this history, you can do so within copy mode by clicking and dragging or using keyboard shortcuts, then paste it elsewhere using Ctrl+b ].
It is important to note that if you are experiencing issues where your session state seems lost or inconsistent after splitting, check our troubleshooting article on Tmux Sessions Disappearing to ensure your configuration files are not inadvertently clearing buffers.
Configuring Scrollback Limits
To ensure that your duplicated panes actually contain useful history, you must configure the scrollback limit appropriately. By default, TMUX limits the scrollback buffer to 2000 lines. For many development workflows, this is insufficient. You can increase this limit by adding the following line to your.tmux.conf file:
set-option -g history-limit 50000
This setting increases the buffer to 50,000 lines, which should cover most extensive build logs or database query results. After updating the configuration, reload it by pressing Ctrl+b : and typing source-file ~/.tmux.conf. Without this adjustment, your duplicated pane may only show the last few thousand lines, cutting off earlier critical information.
Additionally, enabling persistent scrolling is vital for navigating large outputs. Refer to How to Enable Scrolling in Tmux Copy Mode for tips on optimizing your scrolling experience within these duplicated environments.
Managing Pane Titles for Clarity
When you have multiple panes showing similar or identical history, distinguishing between them becomes difficult. To solve this, you can dynamically update the pane title to reflect the current directory or command being executed. This helps you identify which pane contains which context. You can set this up by configuring your shell prompt or using TMUX hooks. A common approach is to use thePROMPT_COMMAND variable in Bash or Zsh to send escape sequences that update the pane title. For example, adding the following to your .bashrc ensures the title updates instantly as you navigate directories:
PROMPT_COMMAND='echo -ne "\033]0;${PWD}\007"'
This makes it easier to manage wide and tall screen layouts where you might have four or more panes open simultaneously. Each pane will display its current working directory in the status bar or title, providing immediate visual feedback. For advanced users looking to automate this further, see our tutorial on tmux: Instantly Updating Pane Title to Match Terminal Output.
Frequently Asked Questions
Does splitting a pane kill the original process?
No, splitting a pane does not terminate the original process. Both panes share the same underlying process ID and file descriptors. The new pane is essentially a new view into the same terminal stream.How do I clear the scrollback history in a specific pane?
You can clear the visible screen by pressingCtrl+l, but this does not remove the scrollback buffer. To truly clear the history, you would need to restart the shell or use a tool like tput reset, though this may affect other panes sharing the same session.
Can I save the scrollback history to a file?
Yes, you can copy the contents of the scrollback buffer by entering copy mode (Ctrl+b [), selecting the text, and pasting it into a file editor. Alternatively, you can redirect output to a file using script command before starting your session.
What happens if I close one of the duplicated panes?
Closing a pane simply removes that view. The underlying process continues to run in the remaining pane(s). If all panes associated with a window are closed, the window itself may be closed depending on yourremain-on-exit settings.
Is there a way to synchronize input across duplicated panes?
Yes, you can enable synchronized panes by running:setw synchronize-panes in the TMUX command prompt. This ensures that any keystrokes typed in one pane are mirrored in all other panes within the same window, which is useful for running the same commands in multiple locations.