Quản lý và Điều hướng Terminal với Tmux

Tran Van Ngoc|

TL;DR

Tmux (Terminal Multiplexer) giúp quản lý nhiều phiên làm việc (Sessions), tab (Windows) và phân mảnh màn hình (Panes) trên một cửa sổ Terminal duy nhất. Bằng cách tích hợp vim-tmux-navigator, ta có thể di chuyển liền mạch giữa các split windows của Neovim và các panes của Tmux bằng tổ hợp phím Ctrl + h/j/k/l trực tiếp mà không cần bấm phím Prefix (Ctrl + a). Đồng thời, hệ thống hỗ trợ lưu trạng thái tự động qua tmux-resurrect giúp khôi phục toàn bộ môi trường làm việc khi khởi động lại máy.

Core Concept

Môi trường Tmux được phân cấp từ lớn đến nhỏ: Session → Window → Pane.

Session (Một dự án độc lập, chạy ngầm)
├── Window 1 (Tab số 1 - ví dụ: Code)
│   ├── Pane 1 (Trái - chạy Neovim)
│   └── Pane 2 (Phải - chạy test/shell)
└── Window 2 (Tab số 2 - ví dụ: Server Logs)
    ├── Pane 1 (Trên - chạy Server Dev)
    └── Pane 2 (Dưới - chạy Docker)
  • Session (Phiên làm việc): Quản lý mức cao nhất. Mỗi dự án nên chạy ở một Session riêng (ví dụ: web-dev, sys-admin). Khi bạn Detach (thoát ra ngoài), mọi tiến trình bên trong vẫn tiếp tục chạy ngầm.
  • Window (Cửa sổ): Là các Tab hiển thị ở thanh trạng thái dưới cùng màn hình. Tại một thời điểm chỉ hiển thị một Window.
  • Pane (Phân mảnh): Chia nhỏ một Window thành nhiều ô nhỏ hiển thị đồng thời (Split dọc | hoặc ngang -).

Practical Implementation

1. Điều hướng và Phím tắt Cấu hình sẵn

Phím tắtThao tácChức năng
Ctrl + h/j/k/lGõ trực tiếp (Không cần Prefix)Di chuyển liền mạch giữa các split Neovim và các pane Tmux
Prefix + H/J/K/LPrefix (Ctrl+a) + Shift + h/j/k/lCo dãn kích thước Pane (Nhấn giữ/nhấn liên tiếp để resize tiếp)
**Prefix + `** / **-`**Shift + \ / Dấu trừ
Prefix + zGõ phím zPhóng to (Zoom) Pane hiện tại lên toàn màn hình / thu nhỏ lại
Prefix + $Gõ phím $Đổi tên Session hiện tại
Prefix + ,Gõ phím ,Đổi tên Window hiện tại
Prefix + < / >Shift + , / Shift + .Di chuyển/Thay đổi vị trí thứ tự của Window (Tab) sang trái/phải (Nhấn giữ/gõ liên tục phím để dịch chuyển tiếp)
Prefix + sGõ phím sHiện danh sách Session (Nhấn x trên một dòng để xóa session đó)
Prefix + rGõ phím rReload lại file cấu hình Tmux

2. Lưu & Khôi phục Phiên làm việc

  • Lưu trạng thái thủ công: Nhấn Prefix + Ctrl + s.
  • Khôi phục trạng thái thủ công: Nhấn Prefix + Ctrl + r.
  • Tự động: Hệ thống tự động lưu mỗi 15 phút (qua tmux-continuum). Khi mở Tmux, layout gần nhất sẽ tự phục hồi.
  • Lưu ý với Neovim: Tmux-resurrect chỉ khôi phục panel trống. Bạn cần lưu session Neovim bên trong bằng <leader>ss (trong Neovim) và khôi phục lại bằng <leader>sr.

Related Notes: