Quản lý một số lượng lớn cửa sổ terminal có thể là một công việc khó khăn, và các công cụ terminal đa nhiệm (multiplexer) thường là giải pháp được ưu tiên. Tuy nhiên, nhiều người dùng có thể đã nhận thấy Tmux rất khó cấu hình, đặc biệt đối với người mới bắt đầu. May mắn thay, có một lựa chọn thay thế dễ dàng hơn nhiều: Zellij, một công cụ hoạt động hiệu quả ngay lập tức mà không yêu cầu bất kỳ cấu hình nào.
Terminal Multiplexer: “Quản Lý Cửa Sổ” Trong Giao Diện Dòng Lệnh
Đối với những người chưa biết, terminal multiplexer (hay trình đa nhiệm terminal) là một chương trình phần mềm biến một cửa sổ terminal đơn lẻ thành nhiều terminal ảo và cung cấp các tính năng quản lý phiên làm việc. Ban đầu, chúng được phát triển để chạy qua các phiên đăng nhập từ xa, nhằm hỗ trợ các luồng công việc phức tạp; ngày nay, người dùng còn sử dụng chúng để quản lý các tác vụ terminal cục bộ.
Một luồng công việc phức tạp có thể bao gồm việc chạy nhiều tác vụ đồng thời, ví dụ như biên dịch phần mềm, tìm kiếm tệp tin, hoặc các tiến trình khác. Khi chạy các tác vụ như vậy mà không có terminal multiplexer, bạn không thể ngắt kết nối terminal mà không làm dừng các tiến trình đang chạy. Sẽ ra sao nếu tác vụ của bạn mất hàng giờ để hoàn thành, và một kết nối không ổn định làm gián đoạn giữa chừng? Đây từng là một vấn đề phổ biến trong thời kỳ modem quay số thịnh hành, và nó vẫn có thể xảy ra ngày nay.
Nói tóm lại, các terminal multiplexer cho phép bạn sử dụng nhiều cửa sổ terminal ảo trong một phiên đăng nhập hoặc phiên terminal duy nhất. Chúng cũng cung cấp khả năng quản lý phiên để bạn có thể ngắt kết nối và kết nối lại với một phiên đang chạy. Để hiểu sâu hơn về chủ đề này, bạn có thể tham khảo các tài liệu chuyên sâu về Terminal Multiplexers.
Zellij Phục Hồi Phiên Làm Việc Tức Thì: Không Cần Cấu Hình
Giao diện Zellij với nhiều khung (pane) và tab được chia nhỏ, hiển thị các tác vụ dòng lệnh đang chạy song song.
Một trong những lý do chính để tôi sử dụng terminal multiplexer là để tiếp tục công việc đang dang dở từ nơi đã dừng lại. Khi làm việc trên nhiều dự án đang hoạt động, việc khôi phục chúng thủ công nhiều lần mỗi ngày trở nên rất phiền toái. Đối với tôi, các phiên làm việc là không thể thiếu, nhưng tôi không sẵn lòng bỏ ra nhiều công sức để đạt được chúng; chúng chỉ đơn giản là một tiện ích. Tôi yêu thích sự linh hoạt cho các phần mềm phức tạp, nhưng không phải cho terminal multiplexer.
Các phiên làm việc trên Zellij hoạt động “chỉ cần dùng” bởi vì nó đi kèm với một trình quản lý phiên tích hợp sẵn. Mỗi khi tôi mở Zellij, nó sẽ tạo một phiên mới với tên ngẫu nhiên. Tôi có thể dễ dàng sở hữu phiên đó bằng cách đổi tên. Tôi đóng terminal của mình, mở lại, và chọn phiên theo tên. Zellij khôi phục tất cả các chương trình chính xác như chúng đã từng.
Trong khi đó, Tmux yêu cầu cấu hình thủ công. Với tư cách là người mới bắt đầu, tôi sẽ phải tìm hiểu về khái niệm quản lý phiên, đưa ra giả định phổ biến rằng các phiên tồn tại sau khi khởi động lại (reboot), phát hiện ra rằng chúng không tồn tại, và sau đó tìm kiếm và nghiên cứu một plugin chức năng. Có hai trình quản lý phiên phổ biến, và tôi đã gặp vấn đề với cả hai, đặc biệt là việc thiếu tính năng duy trì phiên qua các lần khởi động lại và vấn đề bảo trì. Cuộc sống của tôi không có đủ thời gian để trở thành một “ninja” Tmux được đào tạo kỹ lưỡng. Những tiện ích đơn giản nên hoạt động ngay lập tức.
Với Zellij, các phiên làm việc dễ dàng không cần cố gắng. Tôi cài đặt nó, khởi chạy, và tôi đã có thể sử dụng các phiên ngay lập tức.
Keymap Mặc Định Hợp Lý: Tối Ưu Trải Nghiệm Người Dùng Ngay Lập Tức
Vì tôi thường xuyên làm việc trong terminal, tôi cần các keymap (tổ hợp phím) tiện lợi. Các hành động tôi sử dụng nhiều nhất nên chỉ yêu cầu một lần nhấn phím. Tôi sử dụng các phím điều hướng nhiều nhất, di chuyển giữa các tab và pane.
Để di chuyển, Zellij sử dụng các phím Vim: Alt cùng với H, J, K, và L để di chuyển sang trái, xuống, lên và phải – nhưng bạn cũng có thể sử dụng các phím mũi tên. Trong khi giữ phím Alt, tôi có thể nhanh chóng điều hướng giữa các tab và pane mà không bị gián đoạn hay phải nhả phím Alt. Để thực hiện cùng một hành động trong Tmux, tôi phải nhấn Ctrl+B trước, nhả ra, và sau đó nhấn một phím mũi tên. Nghe có vẻ không nhiều, nhưng việc di chuyển qua nhiều pane yêu cầu hai hành động riêng biệt: Ctrl+B, nhả ra, sau đó là phím mũi tên, lặp đi lặp lại. Những hành động phức tạp như vậy làm chậm đáng kể quá trình điều hướng và làm gián đoạn luồng công việc của tôi.
Có thể tùy chỉnh lại một phím trong Tmux thành thứ gì đó tiện lợi hơn, nhưng sau đó nó trở thành một vấn đề cấu hình. Tôi cần phải cấu hình và kiểm tra các keymap, sau đó đối phó với bất kỳ sự bất tiện nào có thể phát sinh, chẳng hạn như các phím hoạt động không đúng trong một số trường hợp. Với Zellij, chúng hoạt động ngay lập tức; ai đó khác đã kiểm tra chúng, và tôi nhận được sự tiện lợi đó miễn phí.
Giao Diện Trực Quan Hướng Dẫn Keymap: Lý Tưởng Cho Người Mới
Một lời phàn nàn phổ biến về các công cụ Linux nâng cao là việc phải ghi nhớ tất cả các keymap. Để giải quyết vấn đề này, người dùng Emacs và Neovim đã tạo ra các gói hiển thị keymap khi bạn sử dụng chúng. Khi kích hoạt một keymap, một menu ngữ cảnh xuất hiện, hiển thị tất cả các keymap liên quan đến ngữ cảnh hiện tại. Zellij (không giống như Tmux) cung cấp một tính năng tương tự theo mặc định. Menu ngữ cảnh này hiển thị ở cuối màn hình ngay khi khởi động, và nó thay đổi khi tôi nhấn các phím. Tôi không cần phải học bất kỳ keymap nào cả. Tính năng này giúp việc làm quen dễ dàng hơn nhiều cho người mới bắt đầu.
Ngược lại, Tmux yêu cầu tôi phải ghi nhớ các phím. Điều này khiến tôi liên tục phải chuyển đổi ngữ cảnh để tra cứu keymap. Theo thời gian, nó trở thành phản xạ tự nhiên, nhưng vẫn yêu cầu công sức ban đầu.
Terminal Nổi (Floating Terminal) Tiện Lợi: Đơn Giản Hóa Luồng Công Việc
Màn hình terminal hiển thị tính năng cửa sổ nổi (floating terminal) tiện lợi của Zellij, giúp thực thi nhanh các lệnh.
Bạn đã bao giờ mở một cửa sổ terminal chỉ để chạy một lệnh duy nhất, rồi đóng nó ngay sau đó chưa? Việc mở và đóng terminal theo cách này đôi khi có cảm giác như làm lộn xộn không gian làm việc. Có những lúc tôi mở đến nửa tá cửa sổ terminal chỉ vì tôi quên đóng chúng. Zellij cung cấp một tính năng nhỏ gọn giải quyết vấn đề này: một terminal nổi. Bạn có thể thực hiện các tác vụ ngắn gọn, một lần duy nhất trong đó. Tôi không còn phải mở tab hoặc cửa sổ mới; thay vào đó, tôi chỉ cần kích hoạt terminal nổi luôn sẵn sàng này.
Tmux có hỗ trợ terminal nổi thông qua lệnh:
tmux popup bash
Điều này hữu ích, nhưng tôi cũng phải gán nó vào một phím. Với tư cách là người mới bắt đầu, tôi sẽ cần phải học cách làm điều đó trước. Tôi cũng cần đối phó với bất kỳ xung đột nào có thể phát sinh. Nhưng đó chưa phải là tất cả; pane sẽ mất nội dung khi đóng, vì vậy tôi cũng cần giải quyết vấn đề đó. Tôi có thể sẽ dành hai đến ba giờ để làm như vậy và sống với một giải pháp “nửa vời”, đầy lỗi, làm tôi khó chịu sau hai năm. Tôi không quan tâm đến việc tự làm mọi thứ chỉ vì muốn tự làm. Nếu tôi muốn sở hữu một chiếc ô tô, tôi sẽ không bắt đầu bằng việc nấu chảy quặng; tôi sẽ bắt đầu bằng việc mua một chiếc đã hoạt động – đã được thử nghiệm và kiểm chứng.
Với Zellij, mọi thứ thật dễ dàng; tôi chỉ cần nhấn Alt+F và hoàn thành công việc.
Zellij Tập Trung Vào Trải Nghiệm: Đơn Giản Và Hiệu Quả
Bạn có thể đã nhận thấy một chủ đề xuyên suốt: sự tiện lợi. Tôi không muốn cấu hình một terminal multiplexer nhiều hơn mức tôi muốn cấu hình một chiếc máy nướng bánh mì. Nếu tôi phải tạo các keymap đặc biệt chỉ để nướng bánh mì, tôi sẽ quăng chiếc máy nướng bánh vào thùng rác. Không phải mọi thứ đều cần phải tùy biến đến mức đó, và mỗi khi tôi nhìn thấy một chiếc đồng hồ hoặc một tính năng vô dụng nào đó trong modeline (thanh ở dưới cùng), nó nhắc nhở tôi rằng mọi người đã hết ý tưởng để tùy biến những thứ này từ rất lâu rồi.
Các terminal multiplexer chỉ làm một việc, và miễn là các cài đặt mặc định hợp lý, thì đó là đủ tốt. Điều quan trọng nhất là trải nghiệm người dùng – tức là mức độ dễ dàng để bắt đầu và sử dụng nó. Khi tôi khởi động Zellij lần đầu tiên, tôi đã biết cách sử dụng nó, và tôi không bao giờ phải quay lại tìm hiểu thêm.
Đối với tôi, các terminal multiplexer không cần thiết phải cấu hình phức tạp. Nếu có những ý tưởng mới mẻ và sáng tạo trong lĩnh vực này, thì khả năng mở rộng sẽ là một tính năng cao cấp, nhưng hiện tại thì không, và khả năng mở rộng chỉ là một con đường dẫn đến lỗi và lãng phí thời gian. Zellij hoạt động ngay lập tức sau khi cài đặt, và đó là lý do tại sao tôi yêu thích nó. Tôi không phải biến nó thành của riêng mình vì các nhà phát triển đã đưa ra những quyết định hợp lý. Rất nhiều kinh nghiệm đã được tích hợp vào các cài đặt mặc định này, và một tính năng hữu ích để người dùng dễ dàng làm quen (như giao diện keymap ngữ cảnh) làm cho Zellij trở thành một lựa chọn tuyệt vời cho người mới bắt đầu.
Nếu bạn quan tâm đến Zellij, bạn nên xem tài liệu của họ và truy cập trang cài đặt Zellij, nơi trình bày chi tiết cách cài đặt nó qua Cargo. Zellij cũng có sẵn trên một số bản phân phối Linux (ví dụ: Fedora, Debian và Ubuntu), nhưng bạn có thể cần phải học cách cài đặt phần mềm qua terminal hoặc cài đặt phần mềm qua Snap (áp dụng cho cả Debian và Ubuntu).
Nếu bạn kiên quyết chọn con đường khó khăn và muốn “tái tạo lại bánh xe”, Tmux vẫn là một lựa chọn vững chắc, và bạn có thể theo dõi hướng dẫn cài đặt và sử dụng Tmux của chúng tôi để bắt đầu. Tuy nhiên, hãy lưu ý rằng bạn sẽ phải cam kết dành thời gian để cấu hình nó.
Tài liệu tham khảo
- Terminal Multiplexers Explained
- Zellij Documentation
- Zellij Installation Page
- How to Install and Remove Software in Linux Using the Terminal
- How to Install Software on Ubuntu: A Beginner’s Guide to Snap and APT
- How to Use Tmux on Linux and Why It’s Better Than Screen