SGR 90–97 — 高亮前景色
8 种基础前景色的高亮变体(aixterm/xterm 扩展)。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\x1b[91m (bright red, 90–97)\033[91m\e[91mESC [ 9 1 m1b 5b 39 31 6d实时预览
在浏览器中通过与解码器相同的分词器渲染 —— 无需打开终端。
说明
非标准但被广泛支持的 aixterm 扩展,将原 16 色调色板的高 8 色作为独立的 SGR 参数。1:1 映射 —— 90 亮黑(多渲染为中等灰)、91 亮红、92 亮绿、93 亮黄、94 亮蓝、95 亮品红、96 亮青、97 亮白。90–97 范围由 IBM 的 aixterm 保留作为 VGA 16 色调色板的高亮一半,90 年代被 xterm 采纳;现在出现在上面支持矩阵的每个终端中,包括 Linux console / fbcon 和 ConPTY。ECMA-48 本身仅定义 SGR 30–37 + 38 + 39;亮色范围记录在 xterm-ctlseqs 中作为规范扩展,也是 tput setaf 9 到 tput setaf 15 在 xterm-256color 等 terminfo 条目上的展开形式。
可移植性收益在于与 sgr-bold 的 bold-as-bright 怪癖解耦。SGR 1 + 基础色会让前景变亮的终端(Linux console / fbcon、conhost.exe、开启 boldColors X 资源的 xterm)上,\x1b[1;31m 与 \x1b[91m 看起来一致;将 SGR 1 渲染为字重切换的终端(默认配置的 xterm、iTerm2、kitty、alacritty、wezterm、ghostty、Windows Terminal、现代 gnome-terminal 与 konsole)上两者分叉 —— \x1b[1;31m 是加粗红色,\x1b[91m 是普通字重的亮红。同时针对两类终端的日志高亮代码应优先使用亮色范围,确保输出一致。另一个坑是主题:SGR 90–97 的实际 RGB 由用户决定(xterm BoldBrightColors 资源、iTerm2 ANSI Bright 调色板、kitty color8–color15、Windows Terminal brightBlack…brightWhite、konsole 配色),因此你发出的「亮红」在定制配置下可能呈深品红或柔粉。
仅关闭前景用 \x1b[39m(SGR default-fg)—— 精准,不动背景和其他属性。整体重置用 \x1b[0m。如果需要绕过用户配色的精确色值,用 sgr-fg-truecolor(\x1b[38;2;R;G;Bm)—— 真彩色不查调色板。单色片段的清晰收尾是 \x1b[91mtext\x1b[39m;亮色加粗片段的精准收尾是 \x1b[1;91mtext\x1b[22;39m(一次性关闭加粗 + 关闭前景)。
规范出处: aixterm color extension (xterm-ctlseqs)
示例
for c in 90 91 92 93 94 95 96 97; do printf "\033[${c}m■\033[0m"; done; echofor c in range(90, 98): print(f'\x1b[{c}m■\x1b[0m', end='')for c := 90; c <= 97; c++ { fmt.Printf("\x1b[%dm■\x1b[0m", c) }for (let c = 90; c <= 97; c++) process.stdout.write(`\x1b[${c}m■\x1b[0m`)for (int c = 90; c <= 97; c++) printf("\x1b[%dm■\x1b[0m", c);在哪里用到
实际会发出该序列的工具——把抽象字节锚定到你已经用过的命令上。
- starship, oh-my-zsh, powerlevel10k品牌化的提示符段——亮青色用于路径,亮绿色用于 git-clean
- git log --oneline --decorateHEAD 用亮黄色,远端引用用亮青色
- ls --color (bright cyan = symlink target on many distros)
- gcc, clang`warning:` 用亮洋红,`note:` 用亮青色
- bash, zsh prompt PS1 (bright colours for highlight)
常见问题
针对这条序列,开发者真正会去搜索的问题的简短回答。
\x1b[91m在所有 256 色终端里都通用吗?- 大多数情况下可用,但并非通用。SGR 90–97 是 aixterm 标准的亮色前景槽位(调色板索引 8–15),支持矩阵里所有现代终端都能渲染 —— xterm、kitty、iTerm2、alacritty、wezterm、ghostty、Windows Terminal、gnome-terminal、konsole。例外是精简环境:4.7 之前的 Linux fbcon、某些只识别 30–37 的分页器管道场景,以及 8 色上限的 CI 日志渲染器(见
\x1b[101m兄弟条目)。要绝对可移植,请用\x1b[38;5;9m(256 色调色板槽位 9)—— 比高亮位写法在 8 色终端上的回退更优雅。 - macOS Terminal 默认配置把 fg-bright-red 映射成灰色,我怎么才能打出真正的亮红?
- 彻底绕开调色板用真彩色 ——
\x1b[38;2;255;85;85m按字面 RGB 画出 xterm bright-red,与用户配置无关。SGR 90–97 是调色板查表,macOS Terminal 的 Basic / Pro 配置有意把若干亮色槽位重映射成灰阶以适应白底可读性。也可以让用户切换到忠于xterm的配置,但那是你不想要的支持工单循环 —— 见sgr-fg-truecolor推荐的可移植写法。
终端支持
- xterm
- 支持
- Linux console (fbcon)
- 支持
- macOS Terminal.app
- 支持
- iTerm2
- 支持
- Windows Terminal
- 支持
- cmd.exe / ConPTY
- 支持
- kitty
- 支持
- alacritty
- 支持
- WezTerm
- 支持
- Ghostty
- 支持
- GNOME Terminal
- 支持
- Konsole
- 支持
- tmux
- 支持
- GNU screen
- 支持
| xterm | Linux console (fbcon) | macOS Terminal.app | iTerm2 | Windows Terminal | cmd.exe / ConPTY | kitty | alacritty | WezTerm | Ghostty | GNOME Terminal | Konsole | tmux | GNU screen |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |