终端
iTerm2 —— ANSI 转义码支持情况
iTerm2 是 macOS 上事实上的现代终端模拟器,由 George Nachman 自 2006 年起持续开发。它紧跟 xterm-ctlseqs 的每一项更新,同时携带多个专有扩展——通过 OSC 1337 内联显示图像、tmux 集成模式、无需检测 $COLORTERM 的原生真彩色,以及业界最完整的 kitty 扩展下划线实现之一。
iTerm2 还实现了最激进的性能优化:同步输出(DECSET ?2026)、Unicode 15 字符宽度表、Metal 渲染器。从 ANSI 转义码兼容性而言,iTerm2 是 xterm 的严格超集。
最近更新
特性支持情况
该终端在站点统一矩阵跟踪的 15 个特性上的表现。点击任意特性名可查看其在全部终端上的完整支持情况。
- 8 种基础色(30–37 / 40–47)SGR 30–37 前景,40–47 背景。支持
- 高亮(aixterm)色(90–97 / 100–107)aixterm SGR 扩展。支持
- 256 色调色板(38;5;n / 48;5;n)xterm 256 色扩展。支持
- 24 位真彩色(38;2;r;g;b)1670 万直接 RGB。设置 $COLORTERM=truecolor。支持
- 斜体(SGR 3)斜体文本属性。支持
- 扩展下划线(4:1–4:5)波浪/点/虚下划线样式。支持
- 删除线(SGR 9)文本中央的水平线。支持
- OSC 8 超链接内联可点击 URI。支持
- 备用屏幕(?1049h)全屏应用缓冲区。支持
- 鼠标跟踪(SGR ?1006)鼠标点击/拖拽事件。支持
- 括号粘贴(?2004)粘贴文本被 ESC[200~/ESC[201~ 包裹。支持
- 焦点事件(?1004)获得焦点时 ESC[I,失去时 ESC[O。支持
- Sixel 图形DEC sixel 内联位图。支持
- Kitty 图形协议PNG/RGB 内联图像和动画。不支持
- 同步输出(?2026)原子化帧更新,避免撕裂。支持
在此终端可用的序列
该终端能完整处理的转义序列对应的权威参考页。每条均链接到完整页面,含字节形式、规范出处与多语言示例。
- SGR 38;2;R;G;B — 24 位真彩色前景
\x1b[38;2;R;G;Bm直接指定 16,777,216 种 RGB 前景色之一。
- SGR 1 — 加粗 / 高亮
\x1b[1m将后续文本渲染为加粗(在某些终端上为高亮色)。
- DECSET 1049 — 备用屏幕缓冲
\x1b[?1049h (enter) \x1b[?1049l (leave)切换到独立屏幕缓冲区(vim/less 启动时使用)。
- OSC 8 — 内联超链接
\x1b]8;;URI\x07TEXT\x1b]8;;\x07在终端输出中渲染可点击超链接(gnome-terminal 3.26+、iTerm2、Windows Terminal、kitty 等)。
- OSC 0 / 2 — 设置窗口/图标标题
\x1b]0;TITLE\x07修改终端窗口的标题栏文本。
细节与版本说明
在生产中使用某序列前应知晓的、该终端特有的注意事项。
- 无需 $COLORTERM 的原生真彩色
- iTerm2 始终解析 SGR 38;2;r;g;b,不论 $COLORTERM、$TERM 或 terminfo 条目如何。依赖 `process.env.COLORTERM === "truecolor"` 来启用真彩色的程序仍会降级到 256 色——可在 shell 配置文件中显式设置该变量,或在 iTerm2 设置项中将 Profiles → Terminal → Report Terminal Type 改为 xterm-direct。
- OSC 1337 —— 专有图像 / 文件协议
- iTerm2 的 `imgcat` 与内联图像功能采用 `OSC 1337 ; File=name=...;inline=1 : <base64 png> BEL`,完全在 xterm-ctlseqs 之外。请通过 iTerm2 在每个新 shell 中设置的 LC_TERMINAL=iTerm.app 环境变量,或 DA1 次响应来识别 iTerm2,再发送 OSC 1337。
- 同步输出默认开启
- DECSET ?2026h 开始一个原子帧,?2026l 提交。iTerm2 自 3.4.18 版本(2022 年)起支持并默认开启。tmux、kitty、Ratatui、Textual、Bubbletea 等现代 TUI 框架会自动发送该序列——在 iTerm2 中无需额外配置。
- 故意不支持 Kitty 图形协议
- iTerm2 出于维护考量未实现 kitty 图形协议(`_G` APC 序列),坚持沿用更早的 OSC 1337。两套协议互不兼容。跨终端的图像库(term-image、viu)会通过 DA1 + 终端名识别后分发到对应协议——两者之间没有可移植的回退方案。