Skip to content

Instantly share code, notes, and snippets.

@andreyvit
Created June 13, 2012 03:41
Show Gist options
  • Save andreyvit/2921703 to your computer and use it in GitHub Desktop.
Save andreyvit/2921703 to your computer and use it in GitHub Desktop.
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
@stoddart
Copy link

stoddart commented Dec 4, 2014

@xavierartot @akartynnik You can also run:

killall tmux

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

@stoddart
Copy link

stoddart commented Dec 4, 2014

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

@ravening
Copy link

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
Copy link

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
Copy link

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

@seddik
Copy link

seddik commented Mar 18, 2016

very nice & helpful

@wolfhammer
Copy link

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

@lmj0011
Copy link

lmj0011 commented Jun 29, 2016

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

@longkai
Copy link

longkai commented Aug 3, 2016

thx!

@griffinqiu
Copy link

Good

@FliiFe
Copy link

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
Copy link

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
Copy link

Good

@tony
Copy link

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
Copy link

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

@oridgar
Copy link

oridgar commented Jul 12, 2017

Still useful, thanks!

@semidog
Copy link

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

@R3DDY97
Copy link

R3DDY97 commented Oct 29, 2018

@semidog

synchronize-panes
Thats cool one

@R3DDY97
Copy link

R3DDY97 commented Oct 29, 2018

@tsrivishnu

The -v and -h flags on split-window stand for “vertical” and “horizontal” splits,
but to tmux,
a vertical split means creating a new pane below the existing pane so the panes are stacked vertically on top of each other.

A horizontal split means creating a new pane next to the existing one so the panes are stacked horizontally across the screen.

So, in order to divide the window vertically, we use a “horizontal” split,
and to divide it horizontally, we use a “vertical” split

@asison-witekio
Copy link

asison-witekio commented Nov 8, 2018

Here is an easy to follow cheatsheet. HERE

@hktalent
Copy link

hktalent commented Dec 19, 2018

@asison-witekio @andreyvit @tsrivishnu
how ?

#tmux new -s xxx -d
tmux send -t xxx 'C-a "' Enter

https://superuser.com/questions/492266/run-or-send-a-command-to-a-tmux-pane-in-a-running-tmux-session

session=whatever
window=${session}:0
pane=${window}.4
tmux send-keys -t "$pane" C-z 'some -new command' Enter
tmux select-pane -t "$pane"
tmux select-window -t "$window"
tmux attach-session -t "$session"

@shikari7
Copy link

shikari7 commented Jul 28, 2019

A good alternative prefix key that I use with screen instead of C-a is C-\. I'll make this switch with tmux too.

@yuis-ice
Copy link

yuis-ice commented Feb 2, 2022

What a helpful doc. Thanks mate.

@MarkBennett
Copy link

I wish I could react to the original gist, but will comment to say cheers instead! 🍻

@ttycelery
Copy link

Nice mate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment