Bắt đầu nhanh: Chạy Zellij trong vòng 5 phút
Tmux và Screen đã là tiêu chuẩn vàng trong nhiều thập kỷ. Nhưng hãy thành thật: việc ghi nhớ hàng tá phím tắt “prefix” chỉ để chia màn hình mang lại cảm giác rất nặng nề. Zellij là một giải pháp thay thế hiện đại được viết bằng Rust, hoạt động trực quan ngay lập tức. Tôi đã chuyển sang dùng nó vì muốn một công cụ không yêu cầu phải in sẵn bảng phím tắt chỉ để quản lý ba cửa sổ terminal.
Cài đặt
Nếu bạn đang dùng Arch Linux, bạn sẽ tìm thấy Zellij ngay trong kho lưu trữ cộng đồng (community repositories). Với hầu hết các bản phân phối khác, cách nhanh nhất là sử dụng Cargo, trình quản lý gói của Rust. File thực thi (binary) rất nhỏ gọn—thường khoảng 10-15MB—giúp bạn dễ dàng di chuyển giữa các máy tính.
# Sử dụng Cargo
cargo install --locked zellij
# Trên Ubuntu/Debian (Tải trực tiếp file binary)
curl -L https://github.com/zellij-org/zellij/releases/latest/download/zellij-x86_64-unknown-linux-musl.tar.gz | tar xz
sudo mv zellij /usr/local/bin/
Điều hướng cơ bản
Gõ zellij trong terminal để bắt đầu. Bạn sẽ thấy ngay một thanh trạng thái ở dưới cùng. Đây là giao diện “khám phá” của Zellij, và nó là “cứu cánh” cho người mới. Nó hướng dẫn bạn chính xác cần làm gì: Ctrl + p để vào chế độ Pane, Ctrl + t để quản lý Tab, và Ctrl + s để mở chế độ Scroll (cuộn).
Tạo một cửa sổ chia dọc đơn giản bằng cách nhấn Ctrl + p rồi nhấn n. Để di chuyển giữa các pane, giữ phím Alt và sử dụng các phím mũi tên. Cảm giác rất mượt mà. Khác với quy trình ‘Prefix + %’ cứng nhắc trong Tmux, việc điều hướng ở đây giống như đang sử dụng một trình quản lý cửa sổ (window manager) hiện đại.
Cấu hình Layout không còn là nỗi lo
Zellij sử dụng KDL, một ngôn ngữ tài liệu được thiết kế cho con người. Nếu bạn từng gặp khó khăn với quy tắc thụt lề khắt khe của YAML hay “ma trận” dấu ngoặc của JSON, bạn sẽ thấy KDL rất dễ chịu. Bạn không cần một file cấu hình đồ sộ để bắt đầu, nhưng các layout tùy chỉnh mới là nơi bạn tiết kiệm thời gian nhất.
Tạo Layout tùy chỉnh
Layout xác định cấu trúc không gian làm việc của bạn. Đối với các dự án web, tôi sử dụng một layout tự động mở trình soạn thảo mã nguồn, một dev server và một pane nhỏ cho Git. Nó giúp tôi tiết kiệm khoảng 5 phút thiết lập thủ công mỗi sáng.
Tạo một file có tên dev-layout.kdl:
layout {
pane size=1 borderless=true {
plugin location="zellij:tab-bar"
}
pane split_direction="vertical" {
pane edit="src/main.rs"
pane split_direction="horizontal" {
pane command="cargo" {
args "run"
}
pane command="git" {
args "status"
}
}
}
pane size=2 borderless=true {
plugin location="zellij:status-bar"
}
}
Khởi chạy bằng lệnh: zellij --layout dev-layout.kdl. Mọi thứ sẽ mở ra chính xác nơi bạn đã dừng lại.
Tùy chỉnh phím tắt
Người dùng Vim thường thấy các phím mặc định hơi lạ lẫm. Bạn có thể dễ dàng thay đổi chúng trong ~/.config/zellij/config.kdl. Cá nhân tôi đã đơn giản hóa việc chuyển đổi pane để khớp với cách điều hướng trong Vim. Cấu hình rất chi tiết, cho phép bạn gán hầu hết mọi hành động cho một tổ hợp phím cụ thể mà không gặp trở ngại nào.
Tính năng nâng cao: Floating Pane và Cộng tác
Floating pane (pane nổi) đã thay đổi hoàn toàn quy trình làm việc của tôi. Trong các multiplexer truyền thống, mọi pane đều bị khóa vào một lưới cố định. Zellij cho phép bạn bật một pane để “nổi” trên không gian làm việc. Tôi sử dụng tính năng này cho các tác vụ nhanh khoảng 30 giây, như kiểm tra trang man hoặc thực hiện một phép tính nhanh, sau đó ẩn nó đi ngay lập tức để quay lại viết code.
Sử dụng Floating Pane
Nhấn Ctrl + p rồi w để bật/tắt cửa sổ nổi. Bạn có thể di chuyển, thay đổi kích thước hoặc ẩn nó chỉ với vài phím nhấn. Trên một server Ubuntu 22.04 thực tế chỉ có 4GB RAM, cách tiếp cận này là một sự trợ giúp đắc lực. Thay vì mở năm kết nối SSH riêng biệt, tôi chạy một phiên Zellij. Nó xử lý trạng thái ở chế độ nền và giữ mức sử dụng bộ nhớ ở mức thấp.
Chia sẻ Session từ xa
Lập trình cặp (Pair programming) dễ dàng đến ngạc nhiên. Zellij xử lý việc kết nối session một cách tự nhiên, vì vậy bạn không phải bận tâm với các quyền socket phức tạp. Nếu một đồng đội cần giúp tôi debug lỗi server, họ chỉ cần SSH vào máy và chạy:
zellij list-sessions
zellij attach <session-name>
Cả hai chúng tôi đều thấy cùng một terminal trong thời gian thực. Đây là một giải pháp thay thế nhẹ nhàng, không giật lag cho các ứng dụng chia sẻ màn hình nặng nề, đặc biệt là khi băng thông của bạn gặp hạn chế.
Mẹo hiệu suất khi sử dụng lâu dài
Sau khi sử dụng Zellij hơn một năm, tôi đã tìm ra một vài cách để giữ cho nó hoạt động mượt mà. Đầu tiên, đừng tự động khởi chạy Zellij trong mọi phiên shell. Hãy thêm một bước kiểm tra vào file .zshrc của bạn để đảm bảo nó chỉ kích hoạt trong các phiên tương tác. Điều này ngăn chặn lỗi khi bạn cố gắng sử dụng SCP hoặc SFTP để di chuyển file.
Sức mạnh của WASM Plugin
Hệ thống plugin của Zellij được xây dựng trên WebAssembly (WASM). Điều này có nghĩa là các nhà phát triển có thể viết plugin bằng Rust, C++ hoặc Go, và chúng sẽ chạy an toàn bên trong multiplexer. Tôi sử dụng plugin trình duyệt file “Strider” hàng ngày. Nó cho phép tôi điều hướng các cây thư mục lớn mà không cần chạm vào chuột hay rời khỏi môi trường CLI.
Quản lý Log dung lượng lớn
Nếu bạn đang theo dõi (tail) các bản log ghi ra 5.000 dòng mỗi phút, mức sử dụng bộ nhớ của bạn có thể tăng cao. Để duy trì tốc độ, hãy giới hạn bộ đệm cuộn (scrollback buffer) trong file cấu hình. Tôi giới hạn của mình ở mức 10.000 dòng. Điều này cung cấp đủ lịch sử để debug trong khi vẫn giữ mức chiếm dụng RAM ở mức tối thiểu.
# Trong file config.kdl
scroll_buffer_size 10000
Ngắt kết nối đúng cách
Tránh việc chỉ đóng cửa sổ terminal. Để giữ cho các tiến trình của bạn tiếp tục chạy, hãy sử dụng Ctrl + o rồi d để detach (ngắt kết nối). Bạn có thể quay lại sau vài ngày, kết nối lại (re-attach) và thấy các script chạy dài hạn của mình vẫn đang hoạt động. Sự bền bỉ này là một tấm lưới an toàn cho công việc từ xa, nơi kết nối Wi-Fi chập chờn có thể làm hỏng tiến trình của bạn.
Zellij không chỉ là một bản sao khác của Tmux. Đó là một sự tái tư duy hoàn toàn về giao diện dòng lệnh. Bằng cách tập trung vào khả năng khám phá và các tiêu chuẩn hiện đại, nó giúp việc dồn kênh terminal trở nên dễ tiếp cận với mọi người, không chỉ riêng các chuyên gia.

