14 điểm bởi GN⁺ 2025-11-04 | 15 bình luận | Chia sẻ qua WhatsApp
  • Đưa ra kết quả đánh giá năm 2025 so sánh các trình giả lập terminal chủ chốt theo độ chính xác hỗ trợ Unicodehiệu năng
  • Ghostty là một terminal mới được phát triển bằng Zig, đạt điểm cao nhất và triển khai xử lý Unicode chính xác
  • Kitty đạt số điểm tương đương Ghostty và đã công khai thuật toán phân tách văn bản để đóng góp cho quá trình chuẩn hóa
  • Nhiều terminal cho thấy vấn đề suy giảm hiệu nănghỗ trợ DEC Private Mode không nhất quán, đặc biệt các terminal dựa trên VTE không có cải thiện
  • Sự xuất hiện của giao thức văn bản độ rộng biến thiên mở ra khả năng cải thiện khả năng đọc cho nhiều ngôn ngữ, vượt qua giới hạn ô đơn độ rộng cố định
  • Errant Champions (những nhà vô địch lang bạt): những kẻ thách thức như Ghostty và Kitty, không bằng lòng với các đặc tả cổ điển mà tái thiết kế tận gốc các vấn đề về độ rộng ký tự, kết xuất và Unicode của terminal

Công cụ ucs-detect và tổng quan bài kiểm thử

  • Là nghiên cứu tiếp nối của thí nghiệm so sánh hỗ trợ Unicode công bố năm 2023, công cụ ucs-detect đã bổ sung khả năng phát hiện DEC Private Modes, đồ họa sixel, kích thước điểm ảnhphiên bản phần mềm
    • Công cụ này gửi các chuỗi điều khiển vị trí con trỏ và so sánh phản hồi của terminal với kết quả của Python wcwidth để ghi nhận sai lệch
  • Bài kiểm thử xác minh độ chính xác trong tính toán độ rộng ký tự của từng terminal, và lượng hóa chất lượng hỗ trợ Unicode thành các con số

Vấn đề độ rộng ký tự (The Width Problem)

  • Terminal có một giới hạn mang tính cấu trúc: phải hiển thị nhiều ký tự Unicode khác nhau trong một lưới độ rộng cố định
  • Ký tự kết hợp, chuỗi emoji, Zero-width joiner và các yếu tố tương tự thường khiến việc dự đoán độ rộng ký tự thất bại
  • Những sai số này gây ra lỗi vị trí con trỏhỏng hiển thị đầu ra, thậm chí làm méo cả vị trí nhập liệu
  • Kết quả kiểm thử giúp xác định những terminal gây ra ít vấn đề này nhất

Ghostty: thế lực mới

  • Ghostty là một terminal mới được công bố năm 2025, được phát triển từ đầu bằng ngôn ngữ Zig
    • Nhờ triển khai hỗ trợ Unicode rất kỹ lưỡng, nó có độ chính xác cao nhất và đạt điểm cao nhất trong bài kiểm thử
  • Nhà phát triển Mitchell Hashimoto đã nghiên cứu các nguyên lý nền tảng thông qua bài viết năm 2023 Grapheme Clusters and Terminal Emulators
  • libghostty mới công bố có thể trở thành lựa chọn thay thế cho libvte, và trong tương lai có khả năng cung cấp nền tảng Unicode mạnh mẽ cho hệ sinh thái terminal
Quảng cáo

Kitty: một nhà vô địch khác

  • Kitty đạt điểm gần như tương đương Ghostty và đã công khai thuật toán phân chia ô văn bản
    • Thuật toán này khớp với đặc tả Python wcwidth và dựa trên cách diễn giải chuẩn Unicode
  • Chỉ có hai terminal này hỗ trợ đúng Variation Selector 15
    • Tính năng này hiện chưa quá thực dụng, nhưng dự kiến sẽ được phản ánh vào tiêu chuẩn tương lai của Python wcwidth

Tóm tắt so sánh hiệu năng Unicode của các trình giả lập terminal

  • Hạng 1 Ghostty, hạng 2 Foot, hạng 3 Kitty đứng đầu bảng xếp hạng
    • Cả ba terminal đều đạt điểm tối đa ở các hạng mục độ chính xác xử lý Unicode (WIDE/LANG/ZJW/VS16)
    • Ghostty đạt 100 điểm ở mọi hạng mục, tổng điểm 100, và DEC Modes cũng ở trạng thái enabled
    • Kitty có hiệu năng chậm hơn đôi chút (Elapsed time 1748s) nhưng độ chính xác ở mức hàng đầu
  • Các terminal dựa trên VTE (GNOME Terminal, Terminator, LXTerminal, v.v.) vẫn nằm ở nhóm cuối
    • Tất cả đều có Final Scaled Score từ 5 điểm trở xuống, thời gian kiểm thử từ 8000 đến 18000 giây nên rất chậm
    • Không có cải thiện nào so với năm 2023
    Quảng cáo
  • Về hiệu năng (Elapsed time), Foot, WezTerm, tmux, Konsole là những cái tên nhanh (dưới 100 giây)
    • iTerm2, Extraterm tiêu thụ CPU cao nên rất chậm (trên 4000 giây)
  • Hỗ trợ đồ họa sixel chỉ xuất hiện ở một phần các terminal dẫn đầu
    • Ghostty, Kitty, Konsole, contour có hỗ trợ
    • GNOME Terminal và phần lớn họ VTE thì không hỗ trợ
  • Chỉ có đúng Ghostty và Kitty hỗ trợ chuẩn xác Variation Selector 15 (VS15)
    • Xét về mức độ hoàn thiện của xử lý Unicode, hai dự án này gần như ở đẳng cấp riêng

Phân tích hiệu năng (The Long Road)

  • Nhiều terminal cho thấy hiệu năng rất chậm, khiến việc hoàn tất bài kiểm thử mất hàng giờ
    • iTerm2Extraterm sử dụng CPU quá mức, nên thời lượng kiểm thử đã phải rút ngắn
    • GNOME Terminalcác terminal dựa trên VTE tuy dùng CPU thấp nhưng vẫn mất hơn 5 giờ
  • Python wcwidth dù là ngôn ngữ cấp cao nhưng vẫn theo kịp tốc độ của phần lớn terminal
  • Để tối ưu hiệu năng, các thử nghiệm với bit vector, Bloom filter, LRU cache đã được tiến hành, nhưng tổ hợp tìm kiếm nhị phân + LRU cache là hiệu quả nhất
    • LRU cache đặc biệt hiệu quả khi xử lý các tập ký tự lặp lại
    Quảng cáo
  • Tác giả cũng cân nhắc đưa vào mô-đun C, nhưng triển khai Python hiện tại đã đủ hiệu năng

Các trường hợp đặc biệt và vấn đề tồn tại (Tilting at Edges)

  • Terminology cho ra kết quả khác nhau mỗi lần chạy, cho thấy khả năng trạng thái nội bộ bị hỏng
  • iTerm2 báo rằng mọi DEC Private Mode đều “được hỗ trợ nhưng đang tắt”
  • Konsole không phản hồi truy vấn, nhưng một số mode vẫn được hỗ trợ khi kích hoạt
  • Contour phản hồi bằng số mode sai nên bị đánh dấu là “không hỗ trợ”, và ở bản phát hành tháng 12/2024 còn gặp lỗi cấu hình phím ESC
  • Các terminal dựa trên VTE/7600 vẫn giữ điểm thấp như năm 2023
  • Các thảo luận cải thiện Unicode của dự án libvte từng bị chỉ trích, nhưng vấn đề hỗ trợ chuỗi Emoji được xem là tín hiệu cải thiện cho năm 2026

Về Mode 2027

  • Mode 2027 chỉ phân loại hỗ trợ Unicode của terminal theo kiểu đơn giản là “có hỗ trợ/không hỗ trợ”, nhưng không cho biết mức độ chi tiết của từng tính năng
  • Trên thực tế, cách kiểm thử trực tiếp từng tính năng và từng code point như ucs-detect sẽ chính xác hơn

Vượt ra ngoài độ rộng cố định (Beyond Fixed Widths)

  • Cấu trúc ô độ rộng cố định làm suy giảm khả năng đọc của nhiều ngôn ngữ
  • Giao thức điều chỉnh kích thước văn bản (text sizing protocol) là một cách tiếp cận mới để giải quyết vấn đề này
    • Kovid Goyal của Kitty giải thích bằng ví dụ: “muốn nhìn tiêu đề trong tệp markdown lớn hơn”
  • Tính năng này mở ra khả năng cải thiện khả năng tiếp cậnnâng cao khả năng đọc của các hệ chữ phức tạp
  • Ví dụ, trong phép so sánh cách hiển thị ngôn ngữ Khün giữa Contourtrình soạn thảo Kate, kết xuất độ rộng biến thiên cho kết quả rõ ràng hơn
  • Một chế độ độ rộng biến thiên cho phép bộ máy phông chữ kết xuất văn bản mà không bị ràng buộc theo từng ô được xem là hướng phát triển tương lai
  • Việc đưa vào giao thức kích thước văn bản được đánh giá là một bước tiến trong việc giải quyết các vấn đề này

15 bình luận

 
sleepyeye 2025-11-10

Tôi đề xuất wezterm.

 
kaorw 2025-11-06

Mình đang dùng xshell, iterm2.. Chắc cũng պետք thử mấy cái khác một lần.

 
hwhang0917 2025-11-05

Trên macOS và Linux thì tôi dùng ghostty khá nhiều, còn trên Windows thì có vẻ wezterm là tốt nhất.

 
botplaysdice 2025-11-05

Là người dùng Windows

mình đã hoàn toàn ổn định với cygwin terminal (mintty) + mosh. Có vẻ là chẳng thiếu gì cả.

 
savvykang 2025-11-04

Tôi chỉ dùng Windows Terminal thôi

 
ceruns 2025-11-04

Lúc nào rồi cũng quay về với Gnome terminal...

 
sddsdd94 2025-11-04

Sẽ thật tuyệt nếu Ghostty hay Kitty cũng hỗ trợ Windows. hu hu

Nếu chỉnh config tốt thì WezTerm cũng khá ổn. (có hỗ trợ Windows)
https://vi.news.hada.io/topic?id=9270

 
coderred 2025-11-04

Có vẻ Tabby là lựa chọn không mấy phổ biến nhỉ.. chắc phải thử Ghostty một lần thôi

 
coderred 2025-11-04

À. Hóa ra ghostty không có bản cho Windows;

 
barca105 2025-11-04

Vì các chương trình CLI dùng LLM, ngay cả trong terminal cũng sẽ ngày càng có nhiều dịp phải dùng nhiều ngôn ngữ ngoài tiếng Anh.
Từ góc độ đó, mình thấy hỗ trợ Unicode của terminal emulator thực sự rất quan trọng.

 
t7vonn 2025-11-04

Chỉ cần cmd+f được thêm vào trong ghostty nữa là có vẻ sẽ hoàn hảo. Vì chưa có nên thỉnh thoảng khá bất tiện.

Ngoài ra, khi đã chia split rồi thì tôi không biết làm thế nào để tách nó ra thành cửa sổ riêng. Có ai biết không ạ? huhu

 
jjpark78 2025-11-04

Đừng xem thường alacritty~~~

 
GN⁺ 2025-11-04
Ý kiến trên Hacker News
  • Vì công việc ở công ty nên lần đầu tiên tôi dùng thử Windows Terminal
    Cả đời chỉ phát triển trên Linux, giờ dùng mới thấy Ctrl+C, Ctrl+V hoạt động rất thông minh
    Khi không có vùng chọn thì nó dừng tiến trình, còn khi có vùng chọn thì sẽ sao chép, và dán cũng dùng luôn Ctrl+V. Thật sự rất tiện

    • Trên Linux, đặc biệt là Wayland, thậm chí có thể sao chép mà không cần Ctrl+C
      Chỉ cần chọn văn bản là nó được sao chép, và có thể dán ở cửa sổ khác bằng nút chuột giữa
      Cách này được gọi là Primary Selection, và nó hoạt động tách biệt với clipboard thông thường (Ctrl+C/V). Cá nhân tôi thấy cách này tiện hơn
  • Điều thú vị là những chương trình mà chúng ta thường gọi là “trình giả lập terminal” thực ra không hoàn toàn giả lập terminal
    Nhưng giờ thì điều đó đã khả thi. Có thể tham khảo cách giả lập VT102 thật bằng MAME
    Nó cũng chạy được trong WSL, và có thể nối socat với mame để dùng như một terminal phần cứng thực thụ
    Trước đây tôi từng muốn thử tạo một trình giả lập VT220 mức cao có bổ sung điều khiển chuột và tính năng dán cho VT220, đọc bài này lại khiến tôi nhớ ra ý tưởng đó

  • Thật vui khi thấy Konsole của KDE xếp hạng cao
    Đây là một terminal đã tồn tại hàng chục năm nhưng vẫn cạnh tranh ngang ngửa về hiệu năng với các terminal hiện đại

    • Trong môi trường KDE thì cứ dùng Konsole có sẵn mặc định là được
      Nó rất dễ tùy biến và tốc độ cũng đủ nhanh
      Tôi đặc biệt thích việc có thể nhấp chuột phải trong Dolphin để mở ngay Konsole tại thư mục hiện tại
      Tính năng scrollback vô hạn cũng rất hữu ích. Log cũ không bị bỏ đi mà được tự động chuyển sang file
      Tôi thường đặt Ctrl+Shift+X làm phím tắt để xóa hoàn toàn màn hình và dùng khá nhiều
  • Tài liệu liên quan gồm có

  • Danh sách này thiếu DECterm
    Như có thể thấy trong tài liệu tổng quan về DECterm, nó từng cung cấp khả năng giả lập VT220 tốt nhất trên X Window System
    Gần như không có terminal nào hỗ trợ các chế độ ký tự “double wide” hay “double high, double wide” của VT100. Những dòng chữ khổng lồ đó khá thú vị

    • xterm có hỗ trợ các chế độ này. Trước đây tôi từng viết về hỗ trợ emoji liên quan đến chuyện này: Can your terminal do emojis?
    • Kỳ lạ là Windows Terminal có hỗ trợ DECDHL, nhưng phía Linux thì hầu như không hỗ trợ
  • Tôi đã dùng Alacritty khá tốt trong một thời gian, nhưng gần đây thử Ghostty thì thật sự bất ngờ
    Nó có trình chọn theme tích hợp rất tiện khi làm việc trên nhiều máy tính
    Nhìn chung nó có vẻ là lựa chọn tốt hơn Alacritty. Các nhà phát triển thực sự làm rất tốt

    • Điểm duy nhất còn tiếc ở Ghostty là vẫn chưa có tính năng tìm kiếm trong scrollback
      Có thể mô phỏng bằng tmux nhưng không hoàn toàn giống
    • Alacritty đã có issue về hỗ trợ ligature từ năm 2017 mà đến giờ vẫn chưa được triển khai
      Nếu Ghostty bổ sung hỗ trợ Windows thì có lẽ sẽ hoàn hảo
    • Tôi cứ nghĩ trình chọn theme tích hợp là tính năng hiển nhiên phải có, nhưng hóa ra không phải vậy
  • Sẽ rất hay nếu terminal có thể truy vấn xem font có hỗ trợ một danh sách ký tự cụ thể hay không
    Làm vậy thì các chương trình TUI khi dùng Unicode mới hoặc ký tự Private Use (ví dụ powerline, icon font-awesome) có thể tự động hiển thị ký tự thay thế nếu không được hỗ trợ

  • Hơi tiếc là có quá ít nhắc đến Windows Terminal
    Hệ sinh thái Linux đúng là phong phú hơn, nhưng hiện tại WT vẫn xếp trên khá nhiều terminal Linux
    Đây là điều mà 10 năm trước tôi không thể tưởng tượng nổi

    • Trong kết quả thử nghiệm, Windows Terminal (được ghi là “terminal.exe”) đứng thứ 4
      Nhân tiện, thỉnh thoảng tôi vẫn xem lại video này, vì tôi thích quả easter egg giấu tên các nhà phát triển trong đó
    • Sau khi rời Windows, thứ tôi nhớ nhất chính là terminal này
      Các tab, theme và khả năng đổi tên cửa sổ đều rất tuyệt, giúp nhìn phát là biết từng cửa sổ đang dùng để làm gì
    • Với cá nhân tôi thì đây cũng là terminal yêu thích nhất. Hiện giờ tôi dùng Ghostty trên macOS, nhưng vẫn không bằng WT
  • Terminal Foot cũng rất xuất sắc
    Nó chỉ dành cho Wayland, nhưng nhẹ và khởi chạy rất nhanh. Mức dùng tài nguyên cũng thấp

    • Tôi hiện cũng đang dùng Foot làm terminal chính
      Ghostty cũng tốt, nhưng chỉ riêng việc mở một terminal trống thôi đã ngốn bộ nhớ hơn 10 lần
  • Terminal mặc định trên macOS đứng thứ 29 trong kết quả lần này

    • Tôi dùng Terminal.app trên macOS cả ngày mà chưa từng nghĩ “mình cần một terminal tốt hơn”
    • Thực ra Apple hầu như không cập nhật nó kể từ khi tiếp quản từ NeXT vào cuối thập niên 90
      Dù vậy, ở các bản gần đây (macOS 26) nó vẫn hỗ trợ Powerline và màu 24-bit
    • Để tham khảo thì terminal mặc định của Windows đứng thứ 4
    • Có vẻ cách xếp hạng đã tính cả những yếu tố phụ mà tôi không mong muốn
 
ndrgrd 2025-11-04

Kitty có nhiều tính năng tốt, nhưng vì người bảo trì là một người quá tệ nên tôi rất vui khi có một lựa chọn thay thế là Ghostty.

 
say8425 2025-11-04

Cuối cùng lại quay về với iTerm2