tmux memungkinkan beberapa terminal dalam satu session, dan — yang paling penting — session yang tetap hidup saat kamu disconnect dari SSH.
Tiga level hierarki:
Session
├── Window 1
│ ├── Pane (split kiri)
│ └── Pane (split kanan)
├── Window 2
│ └── Pane
└── Window 3
├── Pane atas
├── Pane tengah
└── Pane bawah
Prefix key: Default Ctrl+b. Setiap shortcut tmux dimulai dengan prefix ini. Banyak user remap ke Ctrl+a (lebih ergonomis).
Perintah wajib hafal:
Session:
tmux new -s dev # session baru bernama "dev"
tmux ls # list sessions
tmux attach -t dev # reconnect ke session
tmux kill-session -t dev
Di dalam tmux (pakai prefix + key):
| Shortcut | Aksi |
|---|---|
prefix d |
Detach — keluar tapi session tetap jalan |
prefix c |
Buat window baru |
prefix n / p |
Window berikutnya / sebelumnya |
prefix 0-9 |
Jump ke window nomor tersebut |
prefix , |
Rename window |
prefix % |
Split pane vertikal (kiri-kanan) |
prefix " |
Split pane horizontal (atas-bawah) |
prefix arrow |
Pindah antar pane |
prefix x |
Kill pane (dengan konfirmasi) |
prefix z |
Zoom pane (fullscreen toggle) |
prefix [ |
Scroll mode (q untuk keluar) |
Kenapa tmux penting untuk SSH?
# SKENARIO 1: Tanpa tmux
ssh server
npm run build # build 10 menit
# koneksi putus karena wifi → build terbunuh
# SKENARIO 2: Dengan tmux
ssh server
tmux new -s build
npm run build
# koneksi putus → build TERUS jalan
ssh server
tmux attach -t build # kembali, lihat output build selesai
Config dasar (~/.tmux.conf):
# Remap prefix ke Ctrl+a (lebih enak)
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# Mouse support
set -g mouse on
# Mulai numbering dari 1, bukan 0
set -g base-index 1
setw -g pane-base-index 1
# Split dengan karakter lebih intuitif
bind | split-window -h
bind - split-window -v
# Reload config dengan prefix r
bind r source-file ~/.tmux.conf \; display "Reloaded!"
Reload: tmux source-file ~/.tmux.conf.
Alternatif yang sering dibandingkan:
- screen — pendahulu tmux, masih populer tapi kurang feature
- zellij — tmux modern berbasis Rust, UI lebih ramah pemula
- Terminal tabs — cukup untuk lokal, tapi tidak survive disconnect
Workflow tipikal developer di tmux:
- Window 1 "editor": Neovim fullscreen
- Window 2 "server": dev server running
- Window 3 "git": git commands + logs
- Prefix + nomor untuk loncat antar-task
Copy-paste di tmux:
prefix [ → navigasi ke teks → Space untuk mulai select → Enter untuk copy → prefix ] untuk paste. Sistem clipboard terpisah dari clipboard OS (bisa di-bridge dengan plugin).