
Tmux là trình multiplexing terminal mã nguồn mở, giúp lập trình viên chạy nhiều terminal trong một cửa sổ, detach session để giữ tiến trình hoạt động, và quản lý workspace hiệu quả. Cài đặt tmux đơn giản mà lợi ích mang lại vượt xa bất kỳ tool nào cùng loại.
Tmux là gì và tại sao cần?
Khi làm việc với server, lập trình viên thường phải mở nhiều SSH session, chạy nhiều tiến trình, và lo lắng về việc mất kết nối mạng. Tmux giải quyết:
- Terminal multiplexing: Một cửa sổ, nhiều tab/pane — giống như tab browser nhưng cho terminal
- Detach/Attach: Disconnect session mà không dừng tiến trình. Reconnect sau bất cứ lúc nào
- Scriptable: Cấu hình bằng file tmux.conf, tự động hóa layout, keybindings
- Persistent: Session giữ sau khi đóng laptop, mất WiFi, hoặc SSH timeout

Cài đặt nhanh
# Ubuntu/Debian
sudo apt install tmux
# macOS
brew install tmux
# Arch
sudo pacman -S tmux
# Kiểm tra phiên bản (hiện tại 3.7c)
tmux -V
Cơ bản: Session, Window, Pane
Tmux có 3 cấp độ tổ chức:
- Server: Quá trình tmux chạy background
- Session: Một workspace (có thể attach/detach)
- Window: Tab trong session (mặc định 1 window)
- Pane: Chia nhỏ window thành nhiều panel (theo chiều ngang/dọc)
Cheat sheet các lệnh thiết yếu
Tất cả lệnh bắt đầu bằng prefix key (mặc định Ctrl+B) rồi nhấn phím:
| Thao tác | Prefix + Phím | Mô tả |
|---|---|---|
| New session | tmux new -s name | Tạo session đặt tên |
| Detach session | Ctrl+B, D | Ngắt kết nối, giữ session |
| List sessions | tmux ls | Liệt kê tất cả session |
| Attach session | tmux attach -t name | Kết nối lại session |
| New window | Ctrl+B, c | Tạo tab mới |
| Next/Prev window | Ctrl+B, n / p | Chuyển tab |
| Split horizontal | Ctrl+B, % | Chia đôi theo chiều dọc |
| Split vertical | Ctrl+B, “ | Chia đôi theo chiều ngang |
| Switch pane | Ctrl+B, Arrow | Di chuyển giữa pane |
| Resize pane | Ctrl+B, Ctrl+Arrow | Thay đổi kích thước |
| Kill pane/window/session | Ctrl+B, x / & / kill-session | Đóng lần lượt |
| Search in scrollback | Ctrl+B, [ | Copy mode, scroll history |
Workflow thực tế: Dev setup
Tạo file ~/.tmux.conf cho workflow cá nhân:
# Cấu hình cơ bản
set -g default-terminal "screen-256color"
set -g base-index 1
setw -g pane-base-index 1
set -g renumber-windows on
set -g mouse on
# Prefix thay đổi thành Ctrl+Space (thoải mái hơn Ctrl+B)
unbind C-b
set -g prefix C-Space
# Speed up terminal
set-option -sg escape-time 10
# Status bar
set -g status-bg "#1a1b26"
set -g status-fg "#c0caf5"
# Plugins (nếu cài tmux-plugin-manager)
@plugin 'tmux-plugins/tmux-yank'
@plugin 'tmux-plugins/tmux-resurrect'
@plugin 'tmux-plugins/tmux-continuum'
Khởi động lại config:
tmux source-file ~/.tmux.conf

Session quản lý dự án
Script tự động setup session theo dự án. Ví dụ ~/.tmux/dev-session.sh:
#!/bin/bash
SESSION="web-dev"
if tmux has-session -t $SESSION 2>/dev/null; then
tmux attach -t $SESSION
exit 0
fi
tmux new-session -d -s $SESSION -n editor
tmux send-keys -t $SESSION:editor "vim" C-m
tmux new-window -t $SESSION -n server
tmux send-keys -t $SESSION:server "npm run dev" C-m
tmux new-window -t $SESSION -n logs
tmux send-keys -t $SESSION:logs "tail -f logs/app.log" C-m
tmux new-window -t $SESSION -n terminal
tmux attach -t $SESSION
Chạy bash ~/.tmux/dev-session.sh — toàn bộ workspace dev sẵn sàng trong 2 giây.
Nâng cao: Tmux + SSH Agent + Tmux Resurrect
SSH Agent trong tmux: Giữ SSH key agent trong session, attach/detach không mất key:
set -g default-command "ssh-agent -t 86400 bash -c 'ssh-add -l >/dev/null 2>&1 || ssh-add; exec bash'"
Auto-save/restore layout: Cài tmux-resurrect plugin — lưu session khi thoát, restore khi mở lại:
set -g @resurrect-capture-pane-contents 'on'
set -g @resurrect-strategy-vim 'session'
So sánh với GNU Screen và Zellij
| Feature | Tmux | GNU Screen | Zellij |
|---|---|---|---|
| Syntax config | Tmux-like (scriptable) | Termcap (cũ) | Rust config |
| Mouse support | ✓ (built-in) | ✗ (cần gpm) | ✓ |
| Plugin system | Plugin manager | ✗ | Built-in |
| Performance | Excellent | Good | Excellent |
| Config file | ~/.tmux.conf | ~/.screenrc | ~/.config/zellij/config.kdl |
| Unicode support | ✓ (256 color) | Limited | ✓ |
Dưới đây là 5 lý do tmux xứng đáng có trong toolkit mọi lập trình viên: (1) session persistence — không bao giờ mất state, (2) multiplexer — một cửa sổ, nhiều terminal, (3) detach/attach — làm việc từ mọi thiết bị, (4) scriptable — tự động hóa workflow, (5) lightweight — tiêu tốn vài MB RAM so với cả trăm MB IDE.
Kết luận
Tmux là tool bắt buộc cho bất kỳ lập trình viên nào làm việc với server. Chỉ cần 10 phút làm quen cơ bản, bạn đã tiết kiệm hàng giờ mỗi tuần khỏi lo lắng mất kết nối, phải re-run command, hoặc quản lý nhiều cửa sổ. Cài tmux ngay hôm nay — regret không bao giờ. Productivity gap giữa người dùng tmux thành thạo và người dùng terminal đơn thuần là khổng lồ, đặc biệt khi làm việc remote, quản lý microservices, hoặc debug production issues.
Tham khảo thêm: Tmux GitHub (source) | Tmux Official Site | Tmux Plugin Manager
