159 lines
4.0 KiB
Markdown
159 lines
4.0 KiB
Markdown
# 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
|