SGR 48;2;R;G;B — 24 位真彩色背景
直接指定 16,777,216 种 RGB 背景色之一。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\x1b[48;2;R;G;Bm\033[48;2;R;G;Bm\e[48;2;R;G;BmESC [ 4 8 ; 2 ; R ; G ; B m1b 5b 34 38 3b 32 3b ... 6d实时预览
在浏览器中通过与解码器相同的分词器渲染 —— 无需打开终端。
说明
sgr-fg-truecolor(\x1b[38;2;R;G;Bm)的背景版本。R、G、B 各取 0–255 —— 1,677,7216 种背景色。分号写法是事实标准;符合 ECMA-48 的冒号形式 \x1b[48:2::R:G:Bm(第 4 个子参数为空,按 ITU-T T.416 表示默认色彩空间 ID)也被 xterm、kitty、alacritty、wezterm 和多数现代模拟器接受。该扩展可追溯到 xterm 282(2013 年 9 月),记录于 xterm-ctlseqs §"Direct color";ECMA-48 本身只标准化通过 SGR 48 + 子参数 5 实现的索引形式。
跨环境代码在发送真彩色背景前务必先探测 $COLORTERM(truecolor 或 24bit)—— 缺乏支持的终端行为各异。Apple Terminal.app 会静默量化到最近的 256 色槽位,常使鲜艳输入呈现污浊背景,且即便用户手动设置也不通过 $COLORTERM 公告真彩色。Linux console / fbcon 完全忽略该转义。Windows conhost.exe 在低于 ConPTY 1809+ 的版本上量化到 16 色;现代 Windows Terminal 渲染真正的 24 位。screen 4.x 量化;screen 5.0 正确转发。tmux 需要 set -ag terminal-overrides ',xterm-256color:RGB'(或现代 Tc cap)才能转发真彩色 —— 没有这一行,真彩色字节到达 tmux 后会先被量化再外发。iTerm2、kitty、alacritty、wezterm、ghostty、gnome-terminal 3.12+ 与 konsole 都原生渲染真彩色背景。
仅重置背景用 \x1b[49m —— 精准,不动前景和其他属性。整体重置用 \x1b[0m。为做到主题诚实,搭配真彩色背景时应自行算出对比色作为前景,而不是把用户默认前景叠在你的定制背景上 —— WCAG-AA 对比度规则同样适用于终端输出。优雅降级到未知终端的标准模式:if [ "$COLORTERM" = truecolor ]; then printf '\\x1b[48;2;%d;%d;%dm' …; else printf '\\x1b[48;5;%dm' …; fi,回落路径用 RGB→256 立方体辅助函数 —— 这套逻辑见于 chalk、colorama、crossterm 等多数库的真彩色探测实现。
规范出处: ITU-T T.416 / xterm-ctlseqs (Direct color)
示例
printf '\033[48;2;30;30;30;38;2;255;200;0m on graphite \033[0m\n'print('\x1b[48;2;30;30;30m bg \x1b[0m')fmt.Print("\x1b[48;2;30;30;30m bg \x1b[0m")console.log('\x1b[48;2;30;30;30m bg \x1b[0m')printf("\x1b[48;2;30;30;30m bg \x1b[0m\n");在哪里用到
实际会发出该序列的工具——把抽象字节锚定到你已经用过的命令上。
- vim, neovim with `set termguicolors`把所有背景高亮组从 cterm 切到 GUI 24 位色
- bat, delta TrueColor themes与对应 VS Code / TextMate 主题的调色板完全一致
- starship — branded prompt segment bgs
- gh (GitHub CLI)PR 状态和审查状态徽标使用 GitHub 品牌背景色
- lipgloss / charmbracelet apps — gradient backgrounds on TUIs
常见问题
针对这条序列,开发者真正会去搜索的问题的简短回答。
- 为什么同一段
\x1b[48;2;…m背景在 macOS Terminal 上发灰,但在 iTerm2 上正常? - macOS Terminal.app 在渲染前会把 24 位 RGB 静默量化到其 256 色调色板,并且即便用户手动设了
$COLORTERM=truecolor也不公告——因此基于探测的回退路径不会触发。iTerm2、kitty、alacritty、wezterm、ghostty 与 Windows Terminal 渲染真正的 24 位。修复在渲染端:通过$TERM_PROGRAM=Apple_Terminal(或$COLORTERM=truecolor缺失)识别 Terminal.app,从 RGB 三元组算出 256 立方体回退(\x1b[48;5;Nm)再发。
终端支持
- 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 不支持 | 部分 | 支持 | 支持 | 部分 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 部分 | 部分 |