文章摘要
2025年终端模拟器评测显示,ucs-detect工具已扩展支持检测DEC私有模式、sixel图形、像素尺寸和软件版本等功能,通过发送控制序列测试光标定位准确性,并与Python wcwidth库进行比对验证终端兼容性。
文章总结
2025年终端模拟器发展现状:领跑者与挑战
本文是作者对2023年《终端模拟器Unicode支持大比拼》的后续追踪。通过升级版的ucs-detect测试工具(现支持DEC私有模式、Sixel图形、像素尺寸和软件版本检测),作者对主流终端进行了全面评估。
核心挑战:字符宽度问题
终端模拟器面临的根本难题在于:如何将复杂的Unicode字符映射到固定宽度的网格中。当终端对零宽连接符、变体选择器等特殊字符处理失当时,会导致文本错乱、光标错位等问题。
性能冠军
- Ghostty:Mitchell Hashimoto用Zig语言全新开发,凭借精准的Unicode实现成为新晋冠军。其发布的libghostty库有望替代老旧的libvte。
- Kitty:Kovid Goyal开发的终端同样表现优异,其文本分割算法与Python wcwidth规范高度吻合,是唯二能正确处理变体选择器15的终端。
测试发现
- 性能差异:iTerm2和Extraterm测试耗时长达1小时(其他终端仅需数分钟),GNOME Terminal完整测试甚至需要5小时以上。
- 技术优化:Python wcwidth通过LRU缓存优化表现优异,验证了人类语言通常只使用Unicode中小部分字符的规律。
- 兼容性问题:Terminology存在结果不一致问题,iTerm2对所有DEC私有模式返回"支持但不可更改"的固定响应,Konsole则完全不回应模式查询。
未来方向
Kitty提出的文本尺寸协议开创性地探索了可变宽度文本显示,有望解决复杂文字(如克伦语)在等宽终端中的可读性问题。作者通过Contour终端与Kate编辑器的对比截图,直观展示了当前固定宽度显示的局限性。
(注:原文中涉及的具体测试数据表格、技术讨论细节及多个外部链接已精简,保留核心观点和关键案例。图片描述转为文字说明,保持内容连贯性。)
评论总结
以下是评论内容的总结:
技术落后问题
- 有用户质疑测试的VTE版本落后(2023年版本用于2025年状态测试),且仍使用GTK 3而非支持GPU的GTK 4。
引用:"So the state of 2025 then tests a VTE that is from 2023? 4 major releases behind?"
- 有用户质疑测试的VTE版本落后(2023年版本用于2025年状态测试),且仍使用GTK 3而非支持GPU的GTK 4。
终端功能与协议争议
- 对Kitty图像协议与Sixel协议的竞争提出疑问,部分终端(如Konsole、WezTerm)支持Kitty协议,但Sixel仍被部分用户使用。
引用:"why we have 2 competing protocols right now" - 有用户指出Xterm实际支持Sixel,与表格内容矛盾。
引用:"Xterm supports sixels."
- 对Kitty图像协议与Sixel协议的竞争提出疑问,部分终端(如Konsole、WezTerm)支持Kitty协议,但Sixel仍被部分用户使用。
终端选择与用户体验
- Ghostty因内置主题选择器和跨设备一致性受到好评,被视为Alacritty的改进版。
引用:"Overall, it literally looks like a better Alacritty alternative." - 部分用户偏好特定终端(如iTerm2的Tek 4010模式、Foot的轻量快速)。
引用:"Foot is excellent... very fast to launch, and uses few resources."
- Ghostty因内置主题选择器和跨设备一致性受到好评,被视为Alacritty的改进版。
安全与信任问题
- 有用户对非标准终端的安全性表示担忧,倾向于使用系统默认终端(如SteamOS的Konsole)。
引用:"I'd like the thing I type my passwords into to be as trusted as possible."
- 有用户对非标准终端的安全性表示担忧,倾向于使用系统默认终端(如SteamOS的Konsole)。
遗漏与补充建议
- 多次提到未包含的终端或测试(如WezTerm、vttest结果、xterm.js)。
引用:"No love for Windows Terminal?"
引用:"no xterm.js? it's a very good cross-platform terminal emulator"
- 多次提到未包含的终端或测试(如WezTerm、vttest结果、xterm.js)。
Unicode支持的实用性争议
- 部分用户认为Unicode支持对日常使用影响有限,更关注其他功能。
引用:"I can't remember the last time I used a non-ascii character in the terminal."
- 部分用户认为Unicode支持对日常使用影响有限,更关注其他功能。
总结呈现了技术争议、用户体验、安全顾虑及功能偏好等多角度观点,同时保留了原始评论的关键引用。