Learning Tmux

Introduction

I've been using linux a long time, and know a pretty decent amount about it - however my fluency with some of the more 'slick' ways of doing things is pretty bad.

Tmux is a 'terminal multiplexer' which means instead of relying on your favourite GUI tool to manage your terminal windows you can do this right from the linux CLI. It's also super useful for avoiding situations like your PC losing connectivity to the machine you're SSH'd onto and screwing up that script you've been running for the last hour.

Anyway I'll not ramble much more - google has plenty of information about this topic, and this page is designed to act as my brain dump as I become more familiar with the tool.

Usage

Shell Commands

  • tmux new - New Session
    • tmux new -s <name> - Name the session something
  • tmux a - Attach to existing session
    • tmux a -t <name>

Key Bindings

When inside a tmux session, there is a control sequence which must be used before using a binding, the default is CTRL+B

The below bindings can be viewed with a man tmux

C-b         Send the prefix key (C-b) through to the application.
C-o         Rotate the panes in the current window forwards.
C-z         Suspend the tmux client.
!           Break the current pane out of the window.
"           Split the current pane into two, top and bottom.
#           List all paste buffers.
$           Rename the current session.
%           Split the current pane into two, left and right.
&           Kill the current window.
'           Prompt for a window index to select.
,           Rename the current window.
-           Delete the most recently copied buffer of text.
.           Prompt for an index to move the current window.
0 to 9      Select windows 0 to 9.
:           Enter the tmux command prompt.
;           Move to the previously active pane.
=           Choose which buffer to paste interactively from a list.
?           List all key bindings.
D           Choose a client to detach.
[           Enter copy mode to copy text or view the history.
]           Paste the most recently copied buffer of text.
c           Create a new window.
d           Detach the current client.
f           Prompt to search for text in open windows.
i           Display some information about the current window.
l           Move to the previously selected window.
n           Change to the next window.
o           Select the next pane in the current window.
p           Change to the previous window.
q           Briefly display pane indexes.
r           Force redraw of the attached client.
s           Select a new session for the attached client interactively.
L           Switch the attached client back to the last session.
t           Show the time.
w           Choose the current window interactively.
x           Kill the current pane.
{           Swap the current pane with the previous pane.
}           Swap the current pane with the next pane.
~           Show previous messages from tmux, if any.
Page Up     Enter copy mode and scroll one page up.
Up, Down
Left, Right
            Change to the pane above, below, to the left, or to the right of the current pane.
M-1 to M-5  Arrange panes in one of the five preset layouts: even-horizontal, even-vertical, main-horizontal, main-vertical, or tiled.
M-n         Move to the next window with a bell or activity marker.
M-o         Rotate the panes in the current window backwards.
M-p         Move to the previous window with a bell or activity marker.
C-Up, C-Down
C-Left, C-Right
            Resize the current pane in steps of one cell.
M-Up, M-Down
M-Left, M-Right
            Resize the current pane in steps of five cells.

Commands within Tmux

You can enter the tmux command prompt using the control sequence CTRL+B followed by a colon (: )

  • setw -g mouse on - Enables mouse scrolling (it may be mouse-mode on older versions)
  • setw synchronize-panes on / off - Syncs text between panes
    • setw sync on / off - This shorter version also works