tmux — Terminal Multiplexer — Terminal

tmux memungkinkan beberapa terminal dalam satu session, dan — yang paling penting — session yang tetap hidup saat kamu disconnect dari SSH. Tiga level hierarki:

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:

Workflow tipikal developer di tmux:

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).