- Có thể tự do tùy chỉnh phím tắt, màu sắc, thanh trạng thái, thao tác chuột thông qua tệp cấu hình
~/.tmux.conf
- Có thể đổi phím Prefix mặc định
C-b sang C-a và remap Caps Lock thành Ctrl để tăng hiệu quả nhập liệu
- Có thể chia cửa sổ một cách trực quan bằng
|, - thay cho ", %, và dùng phím r để nạp lại tệp cấu hình ngay lập tức
- Chuyển pane bằng Alt + phím mũi tên, bật chế độ chuột, tắt tự động đổi tên cửa sổ để cải thiện trải nghiệm thao tác
- Có thể tinh chỉnh chi tiết các yếu tố hiển thị như màu sắc, thanh trạng thái, thông báo, đường viền để tạo một giao diện nhất quán
Khái niệm cơ bản về tùy biến tmux
- Tệp cấu hình tmux là
tmux.conf; nếu đặt tại ~/.tmux.conf trong thư mục home của người dùng thì sẽ được áp dụng như cấu hình cá nhân
- Nếu muốn nhiều người dùng cùng chia sẻ thì có thể đặt ở thư mục hệ thống toàn cục, và vị trí sẽ khác nhau tùy hệ điều hành
- Có thể kiểm tra vị trí chính xác trong phần mô tả tùy chọn
-f của man tmux
- Có thể chỉnh sửa tệp cấu hình để tự do thay đổi phím tắt, màu sắc, thanh trạng thái, thao tác chuột
Thiết lập phím Prefix bớt bất tiện hơn
Lệnh chia cửa sổ trực quan
Nạp lại nhanh tệp cấu hình
Chuyển pane nhanh
Bật chế độ chuột
- Có thể chọn cửa sổ, điều chỉnh kích thước pane bằng chuột
- Dù mặc định ưu tiên thao tác bằng bàn phím, tính năng này vẫn hữu ích khi làm việc cộng tác
- Có thể dùng thường xuyên trong pair programming
set -g mouse on
Tắt tự động đổi tên cửa sổ
Thay đổi giao diện của tmux
- Có thể tinh chỉnh chi tiết màu sắc, thanh trạng thái, thông báo, đường viền pane
- Xem mục
STYLES để biết cách thiết lập nhiều yếu tố hiển thị khác nhau
- Nếu dùng các màu terminal mặc định (
red, yellow, black...) thì giao diện sẽ hòa hợp tự nhiên với theme
- Khi dùng chế độ 256 màu, có thể chỉ định
colour0~colour256
- Cấu hình ví dụ bao gồm các mục sau
-
Tắt thông báo chuông**,** đặt màu đồng hồ là yellow**,** kiểu copy mode là fg=black bg=red bold
-
Màu đường viền pane là red**,** đường viền pane đang hoạt động là yellow
-
Vị trí thanh trạng thái là bottom**,** khoảng trống bên trái**,** hiển thị thời gian ở bên phải
-
Kiểu cửa sổ hiện tại là fg=black bg=red**,** kiểu cửa sổ thường là fg=red bg=black
- Kiểu thông báo là fg=yellow bg=red bold
- Những thiết lập này giúp tạo bảng màu nhất quán và phân tách trực quan rõ ràng
Tài liệu tham khảo thêm
- Có thể tham khảo nhiều ví dụ cấu hình tmux trong các kho GitHub
tmux.conf hoặc dotfiles
- Cũng có thể tham khảo trên Reddit tại
/r/dotfiles, /r/unixporn
- Toàn bộ cấu hình được công khai trong kho dotfiles trên GitHub
- Để tìm hiểu sâu hơn, nên tham khảo trang man của tmux và mục Configuring tmux trên wiki tmux
- Bao quát đầy đủ các tính năng mới nhất và tùy chọn chi tiết
- Nếu muốn tự thiết kế theme màu cho terminal, có thể dùng Root Loops(https://rootloops.sh/)
- Hỗ trợ tạo cấu hình màu terminal theo nhu cầu cá nhân
1 bình luận
Ý kiến trên Hacker News
Trước đây tôi từng dùng tmux, nhưng từ khi biết đến Zellij thì đã chuyển hẳn sang
Việc thiết lập tab và panel trực quan hơn nhiều, và cuộn cũng như chọn văn bản bằng chuột rất tiện nên copy/paste dễ dàng
Liên kết dạng nút không thể sao chép bằng chuột phải, và cũng không tốt về mặt accessibility
Trong tmux tôi dùng tính năng này mỗi 1~2 phút, nhưng phía dev Zellij lại bảo hãy pipe dữ liệu vào editor, mà cách đó không tương thích với system clipboard
Vì vậy cuối cùng tôi quay lại tmux
Zellij khoảng 50MB còn tmux chỉ tầm 2MB kể cả thư viện phụ thuộc, nên chênh lệch dung lượng rất lớn
Zellij ngày càng phình to nên thấy bất tiện, còn giờ tôi cấu hình session bằng tmuxp và giữ kết nối bằng autossh, thấy hài lòng hơn nhiều
Nói về key binding thì ^a là truyền thống của screen, còn ^b là của tmux
Nếu là quản trị viên phải xử lý nhiều hệ thống thì việc nắm keymap mặc định là rất quan trọng
Tôi chỉ đổi những thứ như màu sắc, nền panel đang hoạt động, đồng hồ timestamp, bật chuột, còn key binding thì giữ nguyên
Khi đã quen rồi thì mặc định lại tiện hơn
Tôi từng bỏ tmux và sang Zellij vì Shift+Enter không hoạt động
Nhưng rồi Zellij làm crash kiểu panic và thổi bay process, nên cuối cùng tôi quay lại tmux
Cách giải quyết là
"bind-key -T root S-Enter send-keys C-j", tôi tìm thấy trong issue này"bind -n S-Enter send-keys Escape '[13;2u'"pi.dev có cảnh báo là không có thiết lập extended-keys, nhưng vẫn hoạt động tốt
Với tmux thì chỉ cần kill server là các process bên dưới cũng được dọn luôn, khá tiện
\\ + EnterTừ khi biết đến Control Mode của tmux, tôi thấy nó đúng là thứ thay đổi cuộc chơi
Chạy
tmux -CCtrong iTerm2 thì tab, cuộn, copy/paste, phím tắt, v.v. đều hoạt động theo kiểu native của terminalTab cũng hiển thị đầy đủ về mặt trực quan, đặc biệt hữu ích cho người mới
Tôi dùng Alt+số trong tmux để chuyển cửa sổ nhanh
Ví dụ cấu hình kiểu
bind-key -n M-1 select-window -t :1Alt-/ cũng có thể mở copy mode kiểu vi
Trong môi trường Wayland, dùng
wl-copythì có thể sao chép bằng kéo chuột hoặc phímyTôi còn thêm thiết kế kiểu Powerline, nhưng cần powerline-fonts
Tôi đã tùy biến tmux quá nhiều đến mức mỗi lần ssh vào server mới lại quên mất cách dùng mặc định
Giờ tôi dùng cấu hình mặc định. Chỉ có mỗi thiết lập cuộn chuột là lần nào cũng phải đổi
Một khái niệm liên quan là The Lisp Curse
Ví dụ vẫn giữ Ctrl-b và thêm Ctrl-space làm phím tắt bổ sung
Tôi rất ấn tượng với Control Mode của tmux trong iTerm2
Nó cho phép điều khiển cửa sổ terminal từ xa thông qua trình quản lý cửa sổ cục bộ
Bên ghostty cũng đang triển khai tính năng này nên tôi rất mong chờ
Nhiều người cho rằng phím prefix mặc định của tmux (C-b) khá khó chịu, nhưng tôi lại thấy chính sự awkward đó là ưu điểm
Gần như không thể bấm nhầm
Với tôi, các lệnh chia khung cũng rất trực quan —
%gợi cảm giác là đường ngang, còn"giống đường dọcViệc reload cấu hình chỉ hay làm lúc đầu, còn giờ thì hầu như không nữa
Nếu cần thì chỉ việc thêm vào
.tmux.conflà được. Nếu chỉ dùng local thì cũng không phải lo xung độtTôi yêu tmux, nhưng cái bẫy là nó cần tới file cấu hình 400 dòng
Trạng thái mặc định thì không thân thiện lắm, nhưng nếu chịu chỉnh nhiều thì nó thực sự rất tuyệt
Có thể tham khảo file cấu hình của tôi
Chỉ cần nhớ khoảng 9 phím tắt cần thiết
Tôi cũng định thêm phiên bản PowerShell
Chỉ trả binding prefix về như cũ
Trước đây tôi từng dành cả cuối tuần để đọc cuốn “tmux 2: mouse-free productivity”, và đó là một trong những cuốn sách ảnh hưởng lớn nhất đến năng suất của tôi
Bản mới nhất vẫn đang được cập nhật → tmux 3: productive mouse-free development