tmux
Complete tmux management for terminal multiplexing.
Core Concepts
┌─────────────────────────────────────────────────────────────┐
│ SERVER (one per socket) │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ SESSION ($0, $1, ...) │ │
│ │ ┌─────────────────┐ ┌─────────────────┐ │ │
│ │ │ WINDOW (@0) │ │ WINDOW (@1) │ ... │ │
│ │ │ ┌────┬────┐ │ │ ┌────────────┐ │ │ │
│ │ │ │PANE│PANE│ │ │ │ PANE │ │ │ │
│ │ │ │ %0 │ %1 │ │ │ │ %2 │ │ │ │
│ │ │ └────┴────┘ │ │ └────────────┘ │ │ │
│ │ └─────────────────┘ └─────────────────┘ │ │
│ └───────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
- Server: Background process managing all state
- Session (
$id): Named container of windows, persists after detach
- Window (
@id): Tab-like container of panes within a session
- Pane (
%id): Individual terminal within a window
- Client: Terminal attached to a session
Router
| User says | Load reference | Do |
|---|
| list sessions / status | references/session-management.md | inspect sessions |
| new session / create session | references/session-management.md | create session |
| attach / detach | references/session-management.md | attach/detach |
| kill session | references/session-management.md | terminate session |
| new window / create window | references/window-management.md | create window |
| rename window | references/window-management.md | rename window |
| kill window / close window | references/window-management.md | close window |
| switch window | references/window-management.md | navigate windows |
| split / new pane | references/pane-management.md | split pane |
| resize pane | references/pane-management.md | resize pane |
| move pane / swap pane | references/pane-management.md | rearrange panes |
| kill pane / close pane | references/pane-management.md | close pane |
| layout | references/layouts.md | apply/manage layouts |
| copy / paste / buffer | references/copy-mode.md | copy mode operations |
| config / tmux.conf / settings | references/configuration.md | configure tmux |
| keybind / bind / unbind | references/keybindings.md | key bindings |
| script / automate / send-keys | references/scripting.md | scripting/automation |
| capture / log / output | references/scripting.md | capture pane content |
| help / keys / cheatsheet | inline | show key reference |
Default Key Bindings (Prefix: C-b)
Session
| Key | Action |
|---|
d | Detach from session |
s | List/switch sessions |
$ | Rename session |
( / ) | Previous/next session |
Window
| Key | Action |
|---|
c | Create window |
& | Kill window (confirm) |
, | Rename window |
0-9 | Switch to window N |
n / p | Next/previous window |
l | Last window |
w | List windows |
f | Find window |
Pane
| Key | Action |
|---|
% | Split horizontally (left/right) |
" | Split vertically (top/bottom) |
x | Kill pane (confirm) |
o | Cycle panes |
q | Show pane numbers |
z | Toggle zoom |
{ / } | Swap pane left/right |
! | Break pane to window |
| Arrows | Navigate panes |
Space | Cycle layouts |
C-o | Rotate panes |
Copy Mode
| Key | Action |
|---|
[ | Enter copy mode |
] | Paste buffer |
= | Choose paste buffer |
# | List buffers |
Quick Reference
# Session
tmux new -s name # Create named session
tmux attach -t name # Attach to session
tmux ls # List sessions
tmux kill-session -t name # Kill session
# Window
tmux new-window -n name # Create named window
tmux select-window -t :N # Go to window N
tmux rename-window name # Rename current window
# Pane
tmux split-window -h # Split horizontal
tmux split-window -v # Split vertical
tmux select-pane -t :.N # Go to pane N
tmux resize-pane -D 5 # Resize down 5 lines
# Info
tmux list-keys # All key bindings
tmux info # Server info
Safety Rules
- Confirm before kill: Always confirm before
kill-session, kill-window, kill-pane
- Check attachments: Before killing, check if session has active clients
- Preserve work: Warn if panes have running processes
- Config backup: Before editing
~/.tmux.conf, suggest backup
Confirmation Policy
Read-only (always OK):
tmux ls, list-sessions, list-windows, list-panes
tmux info, show-options, display-message
tmux list-keys, list-buffers
Requires confirmation:
kill-session, kill-window, kill-pane
kill-server
- Editing
~/.tmux.conf
send-keys to panes (can affect running processes)
Environment Variables
| Variable | Description |
|---|
TMUX | Socket path (set inside tmux) |
TMUX_PANE | Current pane ID |
Check if inside tmux: [ -n "$TMUX" ]
Troubleshooting
| Issue | Solution |
|---|
| "no server running" | Start with tmux or tmux new |
| "sessions should be nested" | Unset $TMUX or use tmux -u |
| Detached session lost | Check tmux ls, attach with tmux attach |
| Colors not working | Set TERM=xterm-256color or set -g default-terminal "tmux-256color" |
| Mouse not working | set -g mouse on in config |