Terminal Multitasking with Tmux

As software developers, we use terminal emulators for tasks like compiling, version control, and remote machine management. Normally, we
do these concurrently in different terminal windows.

If you're using iTerm 2 for macOS, you can use its tabs and split panes feature. But
for any other Linux/Unix and SSH terminal emulators, you can use tmux (terminal multiplexer).

Tmux is an alternative to GNU Screen that allows you to multiplex several virtual consoles
in a single window, useful for running multiple CLI programs at the same time.


Package Manager

Install the tmux package using your system's package manager.

macOS (Homebrew)

brew install tmux


sudo apt-get install -y tmux

From Source

git clone https://github.com/tmux/tmux.git
cd tmux
sh autogen.sh
./configure && make

Important: requires at least a working C compiler, make, autoconf, automake, pkg-config as well as libevent and ncurses
libraries and headers.

How to Use

Type tmux in your terminal to start a new session. The display will be cleared and a status bar with time and date will appear at the bottom
of the terminal screen indicating tmux is running.

You send commands to tmux via shortcut keys, which are prefixed by Ctrl-b. That is, you press the prefix (Ctrl-b) keys first then the
desired shortcut command.

Basic Commands

Below are the default basic commands in Tmux. This can be configured in a tmux.conf file in your $HOME directory.


Active windows are listed on the tmux status bar.

Command Shortcut
Create window Ctrl-b, c
Rename current window Ctrl-b, ,
Close current window Ctrl-b, &
Next window Ctrl-b, n
Previous window Ctrl-b, p
Last active window Ctrl-b, l
Select window by number Ctrl-b, 0...9


Panes are divisions/splits of independent virtual terminals inside a window.

Command Shortcut
Split pane vertically Ctrl-b, %
Split pane horizontally Ctrl-b, "
Switch to last active pane Ctrl-b, ;
Move current pane left Ctrl-b, {
Move current pane right Ctrl-b, }
Switch to pane to the direction Ctrl-b, or or or
Close current pane Ctrl-b, x
Toggle pane zoom (aka maximize) Ctrl-b, z
Move to next pane Ctrl-b, o
Convert pane to window Ctrl-b, !
Switch to pane by number Ctrl-b, q, 0...9


Command Shortcut
Enter command mode Ctrl-b, :
Show shortcuts list Ctrl-b, ?

More Shortcuts

For advanced shortcuts, you can visit this cheat sheet for reference.


This Arch Linux Wiki contains a comprehensive guide on how
to configure your tmux setup such as adding or modifying shortcut keys, layouting tricks, Vim/Emacs keybinding,
mouse support, etc.


Here's a demo of tmux in action.