Last years I’ve been using Tmux extensively. Tmux is a terminal multiplexer, i.e. Tmux enables you to create, access, and control multiple terminal from a single screen. Additionally Tmux can be detached from a screen and continue running in the background. Therefore the Tmux session can be reattached later in time, and not in particular in the same screen. For example you could run a Tmux session on a server, detach the session, logout in the evening, sleep, login the next morning, and reattach the same session as you detached the previous day.
Because I use Tmux on many different systems: laptops, home pcs, servers, IoTs, I rarely change anything to the default Tmux settings. Hence I know that all Tmux multiplexers have the same key bindings and commands. To my surprise 98% of the time I use less than 20 commands of Tmux. I took some time to summarize these Tmux commands. This list is by no means complete, nor is it meant to serve as a cheat sheet.
Sessions are used for separating different projects. To handle sessions outside Tmux.
tmux new -s session-name, creates a new session named
tmux ls, show the list of existing sessions.
tmux attach -t session-name, opens an existing session named
session-name. Without the parameter
-t session-name, Tmux will select the first session.
Inside Tmux sessions can be managed as well.
C+b s, shows the list of all existing sessions. This list can be used to switch sessions.
C+b :new -s session-name, creates a new session. This session can be renamed with
C+b d, detaches the session. And you’ll end up in the original terminal.
Inside each session you can create windows.
C+b c, creates a new window.
C+b w, list all existing windows in the session.
C+b p, will move to the next and previous window respectively.
C+b 0-9, moves to the window with the given id-number.
C+b &, kills the current window. The window is also killed if all panes are killed.
Inside each window you can create panes.
C+b ", split pane horizontally.
C+b %, split pane vertically.
C+b o, switch to next pane. You can also use
C+b <arrow>to move to another pane. But usually I don’t have more than three panes open in one window. Therefore I rarely use the arrows to switch panes.
C+b+<arrow>, increases or decreases the size of a pane. If you hold down the arrow key the pane continues to increase or decrease.
C+b x, close current pane. You can also close the pane by killing the terminal inside the pane.
I’m not using copy mode that often. Usually I pipe output of commands with tee to a text file instead. But if I use it the most used commands are:
C+b [, enter copy mode. You can move around the pane with the arrow keys. I usually use the arrow keys to read back older messages.
C+<space>, will start selection. Hit
Alt+wwhen you’re done selecting the text. The selection is moved to the copy buffer. With
C+b ]the buffer is copied in to the current cursor position.
C+b :list-buffers, show the list of buffers stored.
tmux show-buffer -n buffer_n foo.txtor
C+b :show-buffer -n buffer_n foo.txt, outputs buffer_n to foo.txt.
qexists copy mode.