4 điểm bởi GN⁺ 2024-08-13 | 1 bình luận | Chia sẻ qua WhatsApp

Trải nghiệm sử dụng WezTerm

Trước khi bắt đầu

  • Cần cài đặt WezTerm
  • Người dùng macOS có thể cài bằng Homebrew ($ brew install wezterm)

Giải thích về Lua

  • Cấu hình của WezTerm được định nghĩa bằng Lua
  • Lua tương tự các ngôn ngữ lập trình động khác nên khá dễ đọc
  • Với các cấu hình phức tạp, nên học Lua sâu hơn

Tệp cấu hình và vòng lặp phản hồi

  • Tệp cấu hình nằm tại $XDG_CONFIG_HOME/wezterm/wezterm.lua
  • Khi thay đổi tệp cấu hình, nó sẽ tự động được tải lại
  • Có thể xem log bằng lớp phủ gỡ lỗi (CTRL + SHIFT + L)

Thiết lập giao diện

Chủ đề màu sắc

  • WezTerm cung cấp hơn 1.000 chủ đề màu
  • Ví dụ: config.color_scheme = 'Tokyo Night'

Chủ đề màu động

  • Có cung cấp mã ví dụ để thay đổi ngẫu nhiên chủ đề màu mỗi khi mở cửa sổ mới

Tôn trọng giao diện hệ thống

  • Tự động thay đổi chủ đề màu theo chế độ giao diện của hệ thống
  • Tạo tệp appearance.lua rồi cấu hình

Thiết lập phông chữ

  • Phông chữ mặc định là JetBrains Mono
  • Ví dụ: config.font = wezterm.font({ family = 'Berkeley Mono' })

Tạo kiểu cửa sổ

  • Thiết lập độ trong suốt nền cửa sổ và hiệu ứng blur
  • Ví dụ: config.window_background_opacity = 0.9

Thiết lập thanh trạng thái

  • Thêm thanh trạng thái kiểu powerline ở bên phải tab bar
  • Sử dụng event API của WezTerm

Thiết lập phím

Ánh xạ phím mặc định

  • Có thể giữ nguyên hoặc vô hiệu hóa ánh xạ phím mặc định (config.disable_default_key_bindings = true)

Ví dụ ánh xạ phím

  • Ánh xạ Option + Left ArrowOption + Right Arrow thành di chuyển theo từng từ
  • Thiết lập phím tắt mở tệp cấu hình (CMD + ,)

Tính năng multiplexing

  • Sử dụng tính năng multiplexing của WezTerm
  • Thiết lập phím tắt chia cửa sổ (CTRL + SHIFT + P)

Thiết lập phím leader

  • Đặt phím leader là CTRL + A
  • Dùng phím leader cùng với phím tắt chia cửa sổ

Di chuyển giữa các pane

  • Thiết lập ánh xạ phím để di chuyển giữa các pane (dùng phím hướng kiểu vim)

Điều chỉnh kích thước pane

  • Thiết lập key table để thay đổi kích thước pane
  • Dùng cùng phím leader để điều chỉnh kích thước pane

Không gian làm việc dự án

Tạo và chuyển đổi workspace

  • Tạo tệp projects.lua rồi thêm hàm chuyển đổi dự án
  • Khi chọn dự án, một workspace WezTerm mới sẽ được tạo

Tóm tắt của GN⁺

  • WezTerm cho phép cấu hình linh hoạt bằng Lua nên có thể tùy biến rất đa dạng
  • Tính năng tự động tải lại và lớp phủ gỡ lỗi giúp việc thay đổi cấu hình trở nên dễ dàng
  • Tính năng multiplexing và quản lý workspace rất tốt, đồng thời có thể nâng cao năng suất bằng nhiều kiểu ánh xạ phím khác nhau
  • Các terminal cung cấp tính năng tương tự gồm Alacritty và kitty

1 bình luận

 
GN⁺ 2024-08-13
Ý kiến trên Hacker News
  • Gần đây đã chuyển sang WezTerm và rất hài lòng. Trước đó tôi dùng kitty và thích phần cấu hình cũng như sự đơn giản của iTerm2. WezTerm có bộ tính năng tích hợp sẵn vượt trội hơn hẳn. Cấu hình terminal đủ ngắn để hiện trọn trong màn hình trình soạn thảo. Từ đó gần như không cần bận tâm đến terminal nữa

    • Khi dùng kitty tôi thường gặp vấn đề, và khi cố tái hiện các tính năng của iTerm2 thì cảm thấy thất vọng với những bình luận cộc lốc và mang tính xem thường từ người bảo trì kitty
    • Ví dụ, khi hỏi "làm sao để cấu hình tmux trong kitty?" thì tôi nhận được câu trả lời "đừng làm vậy, tmux ngu lắm". Cuối cùng tôi bỏ cuộc
  • WezTerm phản hồi GitHub issue rất nhanh, thường sửa lỗi trong vòng một hoặc hai ngày. Ngoài một vấn đề nhỏ liên quan đến phím modifier qua SSH thì gần như hoàn hảo về mặt tính năng. Nhanh và tốt

    • Trước đây tôi rất mê Alacritty, nhưng cần hỗ trợ modifier tốt hơn cho emacs từ xa
  • Khi chuyển từ Kubuntu sang Ubuntu, tôi muốn có một số tính năng của Konsole như scrollback vô hạn và tìm kiếm trong scrollback, nhưng không muốn cài Konsole nên đã cài WezTerm. Tôi thích nó ngay lập tức, dù nhiều tính năng không dễ được khám phá. Tài liệu rất tốt, và tác giả rất tích cực, nhiệt tình hỗ trợ

    • Ví dụ, tôi đã từng tìm ra cách chọn các khối văn bản lớn chỉ bằng bàn phím và đã thử một lần, nhưng rồi nhanh chóng quên mất và lại quay về chọn văn bản bằng chuột. Làm vậy còn nhanh hơn việc tìm lại trang tài liệu
    • Nhân tiện, trang tôi đã tìm là https://wezfurlong.org/wezterm/copymode.html
  • Tôi đã thử Mac Terminal, iTerm2, Kitty, Warp và vài thứ khác, nhưng cuối cùng gắn bó với WezTerm. Dễ cấu hình, nhanh và đẹp mắt. Tôi còn tự làm cả theme

  • Điểm mạnh của WezTerm là gì? WezTerm hỗ trợ hoàn toàn đa hệ điều hành, nên có thể dùng trên Linux, macOS và Windows. Tôi dùng chung cấu hình terminal trên nhiều OS

  • Tôi đã dùng WezTerm khoảng 1 năm và đang tài trợ Wez trên GitHub. WezTerm là một terminal tuyệt vời, và nhà phát triển cũng rất tuyệt. Tôi thường xuyên dùng fast copy và các chế độ copy khác

    • Tôi dùng những thứ giống như mosh+tmux từ laptop macOS đến máy Linux phục vụ công việc. Tôi luôn giữ session chạy để có thể làm việc trên máy Mac với máy công việc. Nó cung cấp session có thể reconnect, cùng các pane và tab
  • Lý do tôi vẫn dùng iTerm2 là vì tính năng "Edit->Selection Respects Soft Boundaries". Tính năng này hiểu ký tự ống | là ranh giới pane, nên vùng chọn sẽ tự bọc theo đó

  • Tôi đồng ý với ý kiến của những người khác. Tôi đã dùng macOS gần 10 năm và cũng dùng iTerm2 suốt thời gian đó. Gần đây nó bắt đầu chậm đi. Khi cmd-tab, tôi phải đợi hơn 1 giây để terminal hiện ra

    • Tôi đã đánh giá vài lựa chọn thay thế nhưng không thích. Một terminal yêu cầu tài khoản/đăng nhập, một cái khác viết bằng {Java,Type}Script nên ngay cả lệnh đơn giản cũng bị hỏng vì vấn đề async stream
    • WezTerm rất nhanh, có thể tùy biến và đi kèm sẵn theme OneDark (base16)
    • Khi cấu hình ban đầu, tôi phải thêm cmd-left và cmd-right vào cấu hình lua
  • Wez sắp xuất bản một cuốn sách về lập trình hệ thống bằng Rust

  • OT: Tôi kỳ vọng nhất vào Ghostty do nhà sáng lập HashiCorp tạo ra