Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
tmux cheatsheet

tmux cheat sheet

(C-x means ctrl+x, M-x means alt+x)

Prefix key

The default prefix is C-b. If you (or your muscle memory) prefer C-a, you need to add this to ~/.tmux.conf:

# remap prefix to Control + a
set -g prefix C-a
# bind 'C-a C-a' to type 'C-a'
bind C-a send-prefix
unbind C-b

I'm going to assume that C-a is your prefix.

Sessions, windows, panes

Session is a set of windows, plus a notion of which window is current.

Window is a single screen covered with panes. (Once might compare it to a ‘virtual desktop’ or a ‘space’.)

Pane is a rectangular part of a window that runs a specific command, e.g. a shell.

Getting help

Display a list of keyboard shortcuts:

C-a ?

Navigate using Vim or Emacs shortcuts, depending on the value of mode-keys. Emacs is the default, and if you want Vim shortcuts for help and copy modes (e.g. j, k, C-u, C-d), add the following line to ~/.tmux.conf:

setw -g mode-keys vi

Any command mentioned in this list can be executed as tmux something or C-a :something (or added to ~/.tmux.conf).

Managing sessions

Creating a session:

tmux new-session -s work

Create a new session that shares all windows with an existing session, but has its own separate notion of which window is current:

tmux new-session -s work2 -t work

Attach to a session:

tmux attach -t work

Detach from a session: C-a d.

Switch between sessions:

C-a (          previous session
C-a )          next session
C-a L          ‘last’ (previously used) session
C-a s          choose a session from a list

Other:

C-a $          rename the current session
C-a

Managing windows

Create a window:

C-a c          create a new window

Switch between windows:

C-a 1 ...      switch to window 1, ..., 9, 0
C-a 9
C-a 0
C-a p          previous window
C-a n          next window
C-a l          ‘last’ (previously used) window
C-a w          choose window from a list

Switch between windows with a twist:

C-a M-n        next window with a bell, activity or
               content alert
C-a M-p        previous such window

Other:

C-a ,          rename the current window
C-a &          kill the current window

Managing split panes

Creating a new pane by splitting an existing one:

C-a "          split vertically (top/bottom)
C-a %          split horizontally (left/right)

Switching between panes:

C-a left       go to the next pane on the left
C-a right      (or one of these other directions)
C-a up
C-a down
C-a o          go to the next pane (cycle through all of them)
C-a ;          go to the ‘last’ (previously used) pane

Moving panes around:

C-a {          move the current pane to the previous position
C-a }          move the current pane to the next position
C-a C-o        rotate window ‘up’ (i.e. move all panes)
C-a M-o        rotate window ‘down’
C-a !          move the current pane into a new separate
               window (‘break pane’)
C-a :move-pane -t :3.2
               split window 3's pane 2 and move the current pane there

Resizing panes:

C-a M-up, C-a M-down, C-a M-left, C-a M-right
               resize by 5 rows/columns
C-a C-up, C-a C-down, C-a C-left, C-a C-right
               resize by 1 row/column

Applying predefined layouts:

C-a M-1        switch to even-horizontal layout
C-a M-2        switch to even-vertical layout
C-a M-3        switch to main-horizontal layout
C-a M-4        switch to main-vertical layout
C-a M-5        switch to tiled layout
C-a space      switch to the next layout

Other:

C-a x          kill the current pane
C-a q          display pane numbers for a short while

Other config file settings

Force a reload of the config file on C-a r:

unbind r
bind r source-file ~/.tmux.conf

Some other settings that I use:

setw -g xterm-keys on
@fjfish

This comment has been minimized.

Show comment Hide comment
@fjfish

fjfish Jun 4, 2013

^A is beginning of line - personally leave it at ^B

fjfish commented Jun 4, 2013

^A is beginning of line - personally leave it at ^B

@oeeckhoutte

This comment has been minimized.

Show comment Hide comment
@oeeckhoutte

oeeckhoutte Sep 6, 2013

It's the same for me it's ^B. Thanks for the tips :)

It's the same for me it's ^B. Thanks for the tips :)

@LeftyBC

This comment has been minimized.

Show comment Hide comment
@LeftyBC

LeftyBC Sep 23, 2013

I change the prefix to ^A, but "^A a" passes through that ^A to do beginning-of-line, so I don't miss it.

LeftyBC commented Sep 23, 2013

I change the prefix to ^A, but "^A a" passes through that ^A to do beginning-of-line, so I don't miss it.

@amiel

This comment has been minimized.

Show comment Hide comment
@amiel

amiel Sep 25, 2013

I use ^T, which is pretty handy in dvorak

amiel commented Sep 25, 2013

I use ^T, which is pretty handy in dvorak

@igbanam

This comment has been minimized.

Show comment Hide comment
@igbanam

igbanam Oct 14, 2013

Thanks for the recipe (:

igbanam commented Oct 14, 2013

Thanks for the recipe (:

@djblue

This comment has been minimized.

Show comment Hide comment
@djblue

djblue Oct 24, 2013

Very handy. Thanks!

djblue commented Oct 24, 2013

Very handy. Thanks!

@anselmo

This comment has been minimized.

Show comment Hide comment
@anselmo

anselmo Jan 15, 2014

Ace!

anselmo commented Jan 15, 2014

Ace!

@droope

This comment has been minimized.

Show comment Hide comment
@droope

droope Feb 19, 2014

This is great! thanks

droope commented Feb 19, 2014

This is great! thanks

@sukima

This comment has been minimized.

Show comment Hide comment
@sukima

sukima Feb 25, 2014

I wouldn't mind going for ^B but my muscle memory is so used to the old days with screen that I can't undo ^A. 😞

sukima commented Feb 25, 2014

I wouldn't mind going for ^B but my muscle memory is so used to the old days with screen that I can't undo ^A. 😞

@ryanwilsonperkin

This comment has been minimized.

Show comment Hide comment
@ryanwilsonperkin

ryanwilsonperkin Mar 14, 2014

Had my own reservations about switching to ^A since I'm used to using it for start of line in bash & zsh, however tapping it twice (^A^A) mimics the old ^A behaviour. Since discovering that I've been happy with the change.

Had my own reservations about switching to ^A since I'm used to using it for start of line in bash & zsh, however tapping it twice (^A^A) mimics the old ^A behaviour. Since discovering that I've been happy with the change.

@xavierartot

This comment has been minimized.

Show comment Hide comment
@xavierartot

xavierartot Mar 21, 2014

How reload the tmux.conf ?

33 unbind r
34 bind r source-file ~/.tmux.conf

Then i hit r + return ?
Thanks

How reload the tmux.conf ?

33 unbind r
34 bind r source-file ~/.tmux.conf

Then i hit r + return ?
Thanks

@akartynnik

This comment has been minimized.

Show comment Hide comment
@akartynnik

akartynnik Mar 26, 2014

Close all tmux sessions, or run: tmux kill-server. Then start new session: tmux new -s session_name
Session is closed by pressing Ctrl-d

Close all tmux sessions, or run: tmux kill-server. Then start new session: tmux new -s session_name
Session is closed by pressing Ctrl-d

@hauleth

This comment has been minimized.

Show comment Hide comment
@hauleth

hauleth Apr 11, 2014

Personally I use ^Q as I often use ^A in Vim.

hauleth commented Apr 11, 2014

Personally I use ^Q as I often use ^A in Vim.

@EvanCarroll

This comment has been minimized.

Show comment Hide comment
@EvanCarroll

EvanCarroll May 26, 2014

You should say what setw -g xterm-keys on actually does.

You should say what setw -g xterm-keys on actually does.

@mattaudesse

This comment has been minimized.

Show comment Hide comment
@mattaudesse

mattaudesse May 28, 2014

This is great! Very handy.

This is great! Very handy.

@denji

This comment has been minimized.

Show comment Hide comment
@giangnguyennet

This comment has been minimized.

Show comment Hide comment
@giangnguyennet

giangnguyennet Jul 19, 2014

It's strange I can't resize the panes in tmux. For example to resize left a pane, I tried:

^b ^h
^b alt-<arrow-left>
^b ^<arrow-left>

This works

^b : resize-pane -L

but I prefer a shortcut to having to type too much.

Any ideas?

ps: I don't have ~/.tmux.conf file

It's strange I can't resize the panes in tmux. For example to resize left a pane, I tried:

^b ^h
^b alt-<arrow-left>
^b ^<arrow-left>

This works

^b : resize-pane -L

but I prefer a shortcut to having to type too much.

Any ideas?

ps: I don't have ~/.tmux.conf file

@josephrexme

This comment has been minimized.

Show comment Hide comment
@josephrexme

josephrexme Aug 4, 2014

I find this so useful

I find this so useful

@stoddart

This comment has been minimized.

Show comment Hide comment
@stoddart

stoddart Dec 4, 2014

@xavierartot @akartynnik You can also run:

killall tmux

...to insure that all tmux sessions are closed.

stoddart commented Dec 4, 2014

@xavierartot @akartynnik You can also run:

killall tmux

...to insure that all tmux sessions are closed.

@stoddart

This comment has been minimized.

Show comment Hide comment
@stoddart

stoddart Dec 4, 2014

@EvanCarroll What #setw -g xterm-keys on does is insure keyboard shortcuts inside vim still work by enabling xterm keybindings.

stoddart commented Dec 4, 2014

@EvanCarroll What #setw -g xterm-keys on does is insure keyboard shortcuts inside vim still work by enabling xterm keybindings.

@rakgenius

This comment has been minimized.

Show comment Hide comment
@rakgenius

rakgenius Feb 23, 2015

I have problem switching between last used session. C-a L switches to last used window rather than last used session which is the same as C-a l. Is there a way to switch to last used session?

I have problem switching between last used session. C-a L switches to last used window rather than last used session which is the same as C-a l. Is there a way to switch to last used session?

@kibromGB

This comment has been minimized.

Show comment Hide comment
@kibromGB

kibromGB Aug 4, 2015

Am I supposed to create the config file manually as it is not there on my home directory ( ~/.tmux.conf )?

PS: Output of: /# whereis tmux.conf
is: tmux: /usr/bin/tmux /usr/bin/X11/tmux /usr/share/man/man1/tmux.1.gz

kibromGB commented Aug 4, 2015

Am I supposed to create the config file manually as it is not there on my home directory ( ~/.tmux.conf )?

PS: Output of: /# whereis tmux.conf
is: tmux: /usr/bin/tmux /usr/bin/X11/tmux /usr/share/man/man1/tmux.1.gz

@tsrivishnu

This comment has been minimized.

Show comment Hide comment
@tsrivishnu

tsrivishnu Sep 28, 2015

C-a " split vertically (top/bottom) Is that right? Shouldn't that be called as splitting horizontally ?

C-a " split vertically (top/bottom) Is that right? Shouldn't that be called as splitting horizontally ?

@mslaraba

This comment has been minimized.

Show comment Hide comment
@mslaraba

mslaraba Mar 18, 2016

very nice & helpful

very nice & helpful

@wolfhammer

This comment has been minimized.

Show comment Hide comment
@wolfhammer

wolfhammer Mar 29, 2016

I run tmux local and screen remote so the Ctrl-B, Ctrl-A defaults are best for me.

I run tmux local and screen remote so the Ctrl-B, Ctrl-A defaults are best for me.

@lmj0011

This comment has been minimized.

Show comment Hide comment
@lmj0011

lmj0011 Jun 29, 2016

I always find myself coming back to this gist after viewing at this one: https://gist.github.com/MohamedAlaa/2961058

lmj0011 commented Jun 29, 2016

I always find myself coming back to this gist after viewing at this one: https://gist.github.com/MohamedAlaa/2961058

@longkai

This comment has been minimized.

Show comment Hide comment
@longkai

longkai Aug 3, 2016

thx!

longkai commented Aug 3, 2016

thx!

@griffinqiu

This comment has been minimized.

Show comment Hide comment
@griffinqiu

griffinqiu Aug 18, 2016

Good

Good

@FliiFe

This comment has been minimized.

Show comment Hide comment
@FliiFe

FliiFe Oct 24, 2016

I use C-Space as prefix, it does not interfere with anything I have (C-b drives me insane, I use vim, and C-a too).

FliiFe commented Oct 24, 2016

I use C-Space as prefix, it does not interfere with anything I have (C-b drives me insane, I use vim, and C-a too).

@williamboman

This comment has been minimized.

Show comment Hide comment
@williamboman

williamboman Nov 24, 2016

How do I cancel "C-a mode" after switching panes? E.g. after doing C-a right I want to be able to press left without going to another pane.

How do I cancel "C-a mode" after switching panes? E.g. after doing C-a right I want to be able to press left without going to another pane.

@Perterually

This comment has been minimized.

Show comment Hide comment
@Perterually

Perterually Dec 23, 2016

Good

Good

@tony

This comment has been minimized.

Show comment Hide comment
@tony

tony Feb 15, 2017

(I posted this message on another gist too), but I've recently written a book called The Tao of tmux and made it available for free to read online. It covers tmux by the way of its server, down to its sessions, window and panes. It also covers details on configuration and usage shortcuts. All are welcome to check it out!

tony commented Feb 15, 2017

(I posted this message on another gist too), but I've recently written a book called The Tao of tmux and made it available for free to read online. It covers tmux by the way of its server, down to its sessions, window and panes. It also covers details on configuration and usage shortcuts. All are welcome to check it out!

@ElijahLynn

This comment has been minimized.

Show comment Hide comment
@ElijahLynn

ElijahLynn Mar 9, 2017

I found C-\ to be a good prefix, stays out of the way and is easy to reach quickly.

I found C-\ to be a good prefix, stays out of the way and is easy to reach quickly.

@oridgar

This comment has been minimized.

Show comment Hide comment
@oridgar

oridgar Jul 12, 2017

Still useful, thanks!

oridgar commented Jul 12, 2017

Still useful, thanks!

@semidog

This comment has been minimized.

Show comment Hide comment
@semidog

semidog Oct 23, 2017

A very useful feature is to broadcast keyboard input to multiple panes. I use it extensively when I want to type the same bunch of commands into multiple console sessions. When multiple panes are open, use

C-a : 
setw synchronize-panes on

I've also mapped this to "C-a C-x" by adding this to .tmux.conf :

bind -n C-x setw synchronize-panes

semidog commented Oct 23, 2017

A very useful feature is to broadcast keyboard input to multiple panes. I use it extensively when I want to type the same bunch of commands into multiple console sessions. When multiple panes are open, use

C-a : 
setw synchronize-panes on

I've also mapped this to "C-a C-x" by adding this to .tmux.conf :

bind -n C-x setw synchronize-panes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment