Tôi đã thay thế Tmux, Screen và toàn bộ quy trình làm việc trên Terminal của mình bằng một Multiplexer duy nhất
Tôi luôn tự hào về quy trình làm việc với terminal của mình. Đôi khi nó bao gồm việc biến terminal thành một phiên web có thể chia sẻ. Screen là một phần không thể thiếu trong thiết lập của tôi trên mọi máy chủ từ xa, và Tmux điều khiển máy cục bộ của tôi với các phím tắt tùy chỉnh, plugin và các script phục hồi. Thiết lập này hoạt động tốt và nhanh chóng.
Tuy nhiên, tôi nhận thấy rằng rất nhiều thời gian đã được dành cho việc đồng bộ các tệp dotfiles giữa các máy, và tôi cũng bận rộn với việc gỡ lỗi, đặc biệt là sau các bản cập nhật. Vì vậy, để tìm kiếm một giải pháp tốt hơn, tôi đã thử Zellij, và sau năm phút, tôi nhận ra rằng đó chính là giải pháp.
Screen là sinh tồn, Tmux là sức mạnh — cả hai đều để lại cho tôi việc duy trì ngăn xếp
Tích lũy sự phức tạp
Tôi bắt đầu sử dụng Screen vì nó giải quyết một cách tinh tế vấn đề tách và gắn lại. Nó được cài sẵn trên hầu hết các máy chủ Unix/Linux, làm cho nó trở thành một lựa chọn tiện lợi. Tôi có thể tách ra bất cứ khi nào tôi muốn sau khi khởi động một tiến trình chạy dài. Nó đơn giản là hoạt động; tuy nhiên, nó có những hạn chế. Hạn chế đầu tiên là quản lý bố cục tối thiểu. Nhưng cũng có sự phản hồi hình ảnh hạn chế, và nó đòi hỏi sự kỷ luật nhiều hơn là công cụ để quản lý các dự án phức tạp.
Tmux là một công cụ thiết yếu trong bộ sưu tập của tôi cho việc đa nhiệm trên Linux. Mặc dù tôi bắt đầu một cách đơn giản nhất có thể, tôi nhanh chóng thêm hỗ trợ chuột, các phím tắt tùy chỉnh, quản lý plugin TPM (Trình quản lý plugin Tmux), và khả năng giữ phiên làm việc thông qua tmux-resurrect. Mỗi thay đổi này đã giải quyết các vấn đề thực tế, như cuộn mà không cần phím tiền tố và sự không khớp về trí nhớ cơ bắp, và kết hợp lại, tôi đã tạo ra một hệ thống mà tôi hiểu rõ.
Đây là một hệ thống hoạt động hiệu quả cao, nhưng nó đi kèm với chi phí bảo trì. Tôi phải đảm bảo các tập tin cấu hình (dotfiles) luôn được đồng bộ giữa các máy của mình, và tôi cần phải ghi nhớ toàn bộ bản đồ phím tắt của Tmux. Rất dễ để trí nhớ cơ bắp bị lệch hướng bởi một sự không khớp nhỏ trong cấu hình trên một máy từ xa. Vì vậy, tôi liên tục quản lý nền tảng của mình ngay cả khi về mặt kỹ thuật không có gì bị hỏng.
Năm phút đầu tiên của Zellij đã thay đổi hợp đồng
Một giao diện dòng lệnh tự giải thích trong khi bạn sử dụng nó
Ra mắt Zellij là một luồng gió mới, vì nó không yêu cầu gì từ tôi: không có tệp cấu hình, trình quản lý plugin, thậm chí không cần nghi thức cài đặt thông thường. Tất cả những gì tôi nhận được là một giao diện với bố cục hoạt động và một thanh trạng thái ở phía dưới. Thanh trạng thái mới thực sự thu hút sự chú ý của tôi.
Thanh trạng thái của Zellij cập nhật dựa trên ngữ cảnh, được xác định bởi chế độ mà bạn đã chọn. Những chế độ này có thể là Pane, Tab, Resize, Scroll hoặc Session, mỗi chế độ có tập hợp các hành động có sẵn riêng. Vì vậy, thay vì đoán hoặc ghi nhớ như tôi đã từng làm, bạn chỉ cần đọc. Thiết kế kiến trúc này mang lại cho Zellij một lợi thế lớn so với Tmux.
Bạn có thể coi thiết kế này là thân thiện với người mới, nhưng nó còn hơn thế. Đây là một thiết kế khắc phục những khó khăn lâu dài mà tôi thường gặp phải trong các công cụ khác. Sau vài tuần mà không thay đổi kích thước một ngăn, chỉ cần một khoảnh khắc là có thể tìm lại được cách làm. Zellij có một tệp cấu hình dễ đọc nhưng tùy chọn (~/.config/zellij/config.kdl), và ngay cả trước khi tùy chỉnh công cụ, nó đã có thể sử dụng được.
Mô hình bảng kính đã sửa các vấn đề mà tôi từng phải lập kịch bản để giải quyết
Các khung trôi, hỗ trợ chuột và tầm quan trọng của ngữ cảnh tạm thời
Các thao tác cơ bản của cửa sổ trong Zellij không làm thất vọng khi xử lý các tách ngang và dọc. Zellij cho phép thay đổi kích thước linh hoạt và điều hướng trực quan giữa các cửa sổ. Những tính năng này không phải là đột phá, nhưng chúng là các cài đặt mặc định hợp lý và hoạt động tốt ngay khi sử dụng.
Tuy nhiên, tính năng duy nhất đã thay đổi cách tôi làm việc là các cửa sổ nổi. Cửa sổ này phủ lên một bố cục hiện có, và tôi thường sử dụng nó để chạy các lệnh nhanh và kiểm tra nhật ký. Khi tôi hoàn tất, nó biến mất, và cấu trúc của tôi vẫn nguyên vẹn. Trước khi tôi bắt đầu sử dụng Zellij, tôi sẽ phải mở một cửa sổ terminal mới hoặc tạo một phần chia tạm thời để đạt được hiệu ứng tương tự. Tôi đã hoàn thành công việc, nhưng luôn với một số một sự gián đoạn về cấu trúc.
Tôi cũng thích hỗ trợ chuột trong Zellij. Tôi nhấp để lấy tiêu điểm và kéo để thay đổi kích thước, và cuộn hoạt động một cách tự nhiên. Tôi có thể đạt được hành vi chuột trong Tmux, nhưng điều đó chỉ xảy ra sau khi cấu hình, và vẫn không hoạt động tốt bằng. Zellij mang lại sự nhất quán thực sự, đặc biệt vì tôi liên tục di chuyển giữa các công cụ GUI.
Các tệp bố cục đã thay thế các tập lệnh bootstrap của tôi
Khai báo một dự án một lần thay vì lắp ráp nó mỗi lần
Trong quá khứ, nếu tôi cần mở một dự án, tôi thường phải tái tạo bối cảnh. Tôi có thể sử dụng các script để làm việc này; những lúc khác, các công cụ phiên Tmux khá hữu ích. Tuy nhiên, các script thường trở nên lỗi thời, và ngay cả các phiên của tôi cũng dường như cuối cùng đều trôi khỏi mục đích ban đầu của chúng.
Giải pháp hiện tại của tôi là các bố cục Zellij. Tôi sử dụng các tệp .kdl khai báo này để xác định cấu trúc cửa sổ và các lệnh khởi động. Tôi chỉ cần định nghĩa môi trường của mình một lần. Sau đó, tôi có thể khởi chạy nó bằng lệnh này:
zellij --layout myprojectTôi có thể gọi tệp theo tên nếu nó nằm trong thư mục này: ~/.config/zellij/layouts/.
Chạy lệnh này sẽ in bố cục mặc định của Zellij ra stdout: zellij setup --dump-layout default. Bạn sẽ có một điểm khởi đầu sẵn sàng để sao chép và chỉnh sửa cho các bố cục dự án của riêng bạn.
Một điều khác tôi có thể làm là áp dụng một bố cục trong phiên đang chạy như một tab mới. Đây là một cách hiệu quả để tách "định nghĩa dự án" khỏi "trạng thái phiên hiện tại." Tệp bố cục này cuối cùng đã trở thành tài liệu sống của tôi về cách một dự án nên chạy, và phát hiện này đánh dấu sự kết thúc của việc viết các script khởi động.
Tính bền bỉ đã được tích hợp sẵn, và khả năng mở rộng được giới hạn trong môi trường thử nghiệm
Với Zellij chạy như một máy chủ nền, ngay cả khi tôi đóng cửa sổ terminal, phiên làm việc vẫn tiếp tục, và nếu tôi mất kết nối SSH, nó vẫn tồn tại. Khi tôi cần xem tất cả các phiên hoạt động, tôi sử dụng lệnh zellij list-sessions, trong khi zellij attach
Mặc dù việc phục hồi phiên không tái tạo mọi tiến trình sau khi khởi động lại toàn bộ hệ thống, nó khôi phục các bố cục và khả năng cuộn lại, giữ lại đủ trạng thái để cảm thấy đáng tin cậy.
Zellij là công cụ phù hợp để thay thế Tmux và Screen đơn giản vì nó phù hợp nhất với quy trình làm việc của tôi. Nếu bạn chủ yếu làm việc trên các máy cục bộ và coi trọng môi trường khai báo, và bạn đã chuyển nhiều hơn quy trình làm việc của mình vào terminal, thì Zellij có thể chính là công cụ dành cho bạn.



