Tmux
tmux is a terminal multiplexer. It lets you switch easily between several programs in one terminal, detach them (they keep running in the background) and reattach them to a different terminal.
— tmux Wiki
Tmux is my daily driver for terminals, CLI and code [[Neovim|editors].
Cheat sheet
- List shortcuts:
? - Copycat search:
/ - Reload config (without killing server):
r - Save environment:
^s, be careful, it will overwrite your current environment - Restore environment:
^r - List paste buffers:
b - Choose which buffer to paste from, and paste from it:
B - Paste from the top paste buffer:
p - Paste into current buffer from clipboard:
C-S-v(without prefix) - Documentation search (cheat.sh):
i - Big clock:
t - Prompt for command:
: 
Sessions and windows
Sessions are the independent workspaces of Tmux.
- Rename window (tab):
,(comma) - Rename session:
$ - New tmux session:
tmuxfrom command line or:new<CR>from tmux session. - New tmux session with name:
tmux new -s mynameor:new -s myname<CR> - Attach:
tmux a(or at, or attach) or usetmaalias. Optionally you can use session name (tma -t myname). - List sessions:
tmux lsor usetmlalias. - Kill specific session:
tmux kill-session -t myname. - You can use ==
tmux kill-server== to cleanly and gracefully kill all tmux open sessions (and server). Alternative isQkeybinding. - You can force kill all tmux processes with ==
pkill -f --bind=enter:replace-query+print-querytmux==. - If you are inside a tmux session you would like to keep, use
==
tmux kill-session -a== to close all other sessions. - Jump next and previous session:
),( - Interactive window/session list.
 
w, S. Use j and k to navigate, and switch by hitting <CR>.
- 
Find window (changed to tmux-sessionizer):
^a - 
Create window (tab) with current path if configured:
c - 
Previous window (custom binding, last-window):
C-6 - 
Next window (tab):
C-n - 
Previous window (tab):
C-p - 
Move window to the left:
P - 
Move window to the right:
N - 
Kill window (tab):
X - 
Kill server:
q - 
Detach:
d - 
List and terminate clients:
:list-clients, to terminate select and pressq 
Panes
- 
Swap pane up, right, left, down:
k,l,h,j - 
Select up, right, left, down pane:
C-k,C-l,C-h,C-j - 
Move the current pane left:
{ - 
Move the current pane right:
} - 
Open tmux context menu (RMB):
C-> - 
Split horizontally/vertically:
s,v - 
Make panes vertical, select layout even-vertical:
+ - 
Make panes horizontal, select layout even-horizontal:
= - 
Last pane (back and forth):
C-w - 
Toggle pane zoom (maximize current pane, other panes are hidden):
oorz - 
Toggle between layouts:
space - 
Swap window left:
C-S-h,:swap-window -t -1; select-window -t -1 - 
Swap window right:
:swap-window -t +1; select-window -t +1 - 
Do I need always use prefix to resize panes?
 
No, if you strike key fast enough (to hold you need to configure repeat-time
option).
- 
Resize pane up (by 5):
M-Up - 
Resize pane down (by 5):
M-Down - 
Resize pane left (by 5):
M-Left - 
Resize pane right (by 5):
M-Right - 
Resize pane up (by 1):
C-Up - 
Resize pane down (by 1):
C-Down - 
Resize pane left (by 1):
C-Left - 
Resize pane right (by 1):
C-Right - 
Join pane:
_TODO: not actually working, need to investigate - 
Kill pane:
x - 
Break pane into a window:
- 
Commands
- Sync panes (show same text in all panes):
:setw synchronize-panes 
Copy mode
- 
With this option set, we can use h, j, k, l, w, e, ^, $, etc. to move
 - 
around our buffer.
 - 
Enter copy mode:
Enter - 
To get out of Copy mode, we just press the ==
Enter== key (oryto yank - 
and exit).
 - 
Jump to character on same line:
f - 
Back to indentation:
^ - 
Clear selection:
Escape - 
Copy selection:
Enter - 
Cursor down:
j - 
Cursor left:
h - 
Cursor right:
l - 
Cursor to bottom line:
L - 
Cursor to middle line:
M - 
Cursor to top line:
H - 
Cursor up:
k - 
End of line:
$ - 
Goto line:
: - 
Half page down:
C-d - 
Half page up:
C-u - 
Next page:
C-f - 
Next word:
w - 
Previous page:
C-b - 
Previous word:
b - 
Quit mode:
q - 
Scroll down:
C-Down or J - 
Scroll up:
C-Up or K - 
Search again:
n - 
Search backward:
? - 
Search forward:
/ - 
Start of line:
0 - 
Start selection:
Space