- Đư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ợ Unicode và hiệ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ăng và hỗ 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 ảnh và phiê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ỏ và 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
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
- 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ờ
- iTerm2 và Extraterm sử dụng CPU quá mức, nên thời lượng kiểm thử đã phải rút ngắn
- GNOME Terminal và cá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
- 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ận và nâ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 Contour và trì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
Tôi đề xuất wezterm.
Mình đang dùng xshell, iterm2.. Chắc cũng պետք thử mấy cái khác một lần.
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.
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ả.
Tôi chỉ dùng Windows Terminal thôi
Lúc nào rồi cũng quay về với Gnome terminal...
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
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
À. Hóa ra ghostty không có bản cho Windows;
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.
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
Đừng xem thường alacritty~~~
Ý 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
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
socatvớimameđể 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
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ị
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
Có thể mô phỏng bằng tmux nhưng không hoàn toàn giống
Nếu Ghostty bổ sung hỗ trợ Windows thì có lẽ sẽ hoàn hảo
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
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 đó
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ì
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
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
Dù vậy, ở các bản gần đây (macOS 26) nó vẫn hỗ trợ Powerline và màu 24-bit
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.
Cuối cùng lại quay về với iTerm2