Tmux: Trình Multiplexer Terminal Tốc Độ Cao Cho Lập Trình Viên

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

Screenshot tmux hiển thị nhiều pane trong một cửa sổ terminal

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:

  1. Server: Quá trình tmux chạy background
  2. Session: Một workspace (có thể attach/detach)
  3. Window: Tab trong session (mặc định 1 window)
  4. 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

Demo tmux trên hệ điều hành Rio với nhiều session

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

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Cách Dùng Git Worktree Quản Lý Nhiều Nhánh Song Song

Git worktree là tính năng ít được biết đến nhưng vô cùng hữu ích, cho phép một repository Git đăng ký nhiều thư mục làm việc riêng biệt cùng lúc….

Xem thêm

Top 15 Extension VS Code Năng Suất Cho Lập Trình Viên

Khi nói đến trình soạn thảo mã phổ biến nhất hiện nay, Visual Studio Code (VS Code) luôn đứng đầu nhờ hệ sinh thái extension phong phú. Với hơn 60.000…

Xem thêm

Caddy Web Server: Tự Động HTTPS Với Config Đơn Giản

NixOS: Quản Lý Hệ Thống Khai Báo Kiểu Functional Trên Linux NixOS là một phân phối Linux độc đáo sử dụng ngôn ngữ khai báo Nix để quản lý toàn…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất