SGR 3 — 斜体
将后续文本渲染为斜体;并非所有终端都支持。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\x1b[3m\033[3m\e[3mESC [ 3 m1b 5b 33 6d实时预览
在浏览器中通过与解码器相同的分词器渲染 —— 无需打开终端。
说明
斜体会将渲染的字形切换为当前字体的斜体变体。在支持的终端(xterm、iTerm2、kitty、alacritty、wezterm、ghostty、Windows Terminal、现代 gnome-terminal、konsole)上,最终效果完全取决于用户字体选择。等宽字体的斜体质量参差不齐:从精心设计(JetBrains Mono、Cascadia Code、Iosevka)到由终端通过倾斜变换合成出几乎不可读的「斜体」。许多用户因合成版难以辨认而全局关闭斜体。
斜体是基础 SGR 属性中支持最不稳定的一个。Linux console / fbcon 在 framebuffer 模式下没有斜体字形(内核仅通过 setfont 加载 PSF/PSF2 的常规 + 加粗字体),因此 SGR 3 被解析为空操作 —— neovim、man、less 都仅显示普通文本。旧版 cmd.exe 和 ConPTY 同样丢弃此属性。一个历史坑:少数非常老的终端(以及个别 vt100-like 条目里 ritm/sitm 误映射的 terminfo cap)将参数 3 重新用于单色硬件上的反相 —— 当今极罕见,但若在小众硬件上见到斜体被渲染成反色,值得记住这一来源。在不能假定终端支持时,tput 的 sitm / ritm cap 是可移植的开/关方式:在 linux/linux-16color 上展开为空串,在 xterm-256color 上展开为 \e[3m / \e[23m。
关闭斜体用 \x1b[23m。不要为关闭一个斜体片段就用 \x1b[0m(整体重置)—— 那会同时抹掉颜色和字重;精准做法是 \x1b[3m…\x1b[23m。若受众包含 Linux console 用户,强调用 sgr-underline 更稳(SGR 3 不渲染处它依旧出效果),而把斜体留给视觉细节属于锦上添花、不承载关键信息的场景。
规范出处: ECMA-48 §8.3.117 (SGR parameter 3)
示例
printf '\033[3mitalic\033[23m back\033[0m\n'print('\x1b[3mitalic\x1b[0m')fmt.Print("\x1b[3mitalic\x1b[0m")console.log('\x1b[3mitalic\x1b[0m')printf("\x1b[3mitalic\x1b[0m\n");在哪里用到
实际会发出该序列的工具——把抽象字节锚定到你已经用过的命令上。
- vim, neovim大多数配色方案中 Comment 语法组的默认样式
- bat (markdown rendering)
- git log --pretty某些自定义格式中的作者邮箱
- less status / search emphasis
常见问题
针对这条序列,开发者真正会去搜索的问题的简短回答。
- 为什么
\x1b[3m在我的终端里不是斜体? - 三种常见原因:(1) 字体没有斜体字形,终端静默回退到正体——换支带斜体的字体(JetBrains Mono、Cascadia Code、Fira Code 都有);(2) 终端干脆没实现 SGR 3——Linux framebuffer 控制台与较旧的 Windows 主机不支持;(3) tmux 的
default-terminal设为screen(其 terminfo 没声明斜体)——改用tmux-256color或screen-256color。 \x1b[23m能只关斜体而不丢其他属性吗?- 可以——
\x1b[23m是对应的关闭斜体码,颜色、字重、下划线、反相等其他 SGR 状态都保留。需要在已有样式的文本里临时插入一段斜体时,配对用\x1b[3m…\x1b[23m。
终端支持
- 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 不支持 | 支持 | 支持 | 支持 | 不支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |