SGR 4 — 下划线
为后续文本添加下划线。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\x1b[4m\033[4m\e[4mESC [ 4 m1b 5b 34 6d实时预览
在浏览器中通过与解码器相同的分词器渲染 —— 无需打开终端。
说明
单下划线。除颜色和反相之外,渲染最普及的 SGR 属性 —— 上面支持矩阵中的每个终端都至少支持基本单线,包括 Linux console(framebuffer 模式下用一条基线下方的点线表示)和 ConPTY(partial,仅在宿主终端自己处理转义时)。字形在 descender 高度通过一像素细线绘制,视觉上能与 sgr-bold 和颜色属性自然叠加。
Kitty 引入了样式化下划线作为 SGR 4 的子参数扩展,后被 alacritty、wezterm、ghostty、iTerm2 和近版 Windows Terminal 采用:\x1b[4:1m 显式单线,\x1b[4:2m 双线,\x1b[4:3m 波浪 / 卷曲线(拼写检查风格 —— 适合标错),\x1b[4:4m 点线,\x1b[4:5m 虚线。可叠加下划线颜色 \x1b[58;5;Nm(256 色)或 \x1b[58;2;R;G;Bm(真彩色),用 \x1b[59m 重置。注意子参数用 : 而非 ;;不理解子参数的旧终端(依 ECMA-48 怪癖)会把 4:3 视作解析错误而可能什么都不渲染 —— 通过 $TERM_PROGRAM / $COLORTERM 探测特性,必要时回落到 \x1b[4m 普通下划线。双线 \x1b[21m(ECMA-48 原义「双下划线」)在 xterm 和多数现代终端中受支持;少数旧终端将 SGR 21 重载为「关闭加粗」,因此现代栈上写「双线」更稳的方式是 \x1b[4:2m。
关闭下划线用 \x1b[24m —— 精准,不动颜色和字重。精准开关对是 \x1b[4m…\x1b[24m。一个常见的相关组合是兼容终端下的可点击文本:把 osc-hyperlink(\x1b]8;;https://…\x1b\\link text\x1b]8;;\x1b\\)与 \x1b[4;34m 组合,呈现熟悉的「蓝色 + 下划线 = 链接」外观;iTerm2、ghostty、wezterm 和近版 gnome-terminal 会渲染为真正可点击的链接。协议细节见 osc-hyperlink。
规范出处: ECMA-48 §8.3.117 (SGR parameter 4); kitty underline extensions
示例
printf '\033[4munderline\033[24m back\033[0m\n'print('\x1b[4munderline\x1b[0m')fmt.Print("\x1b[4munderline\x1b[0m")console.log('\x1b[4munderline\x1b[0m')printf("\x1b[4munderline\x1b[0m\n");在哪里用到
实际会发出该序列的工具——把抽象字节锚定到你已经用过的命令上。
- man pages (section headings)
- git diff --color-words对行内变化的 token 添加强调下划线
- modern terminals on OSC 8 hyperlinksiTerm2、kitty、WezTerm、Windows Terminal 自动给可点击链接加下划线
- less search match
常见问题
针对这条序列,开发者真正会去搜索的问题的简短回答。
- 怎样画波浪 / 卷曲下划线(拼写检查样式)?
- 用 kitty 的样式化下划线扩展:
\x1b[4:3m波浪,\x1b[4:2m双线,\x1b[4:4m点线,\x1b[4:5m虚线。配合下划线着色\x1b[58;5;Nm(256 色)或\x1b[58;2;R;G;Bm(真彩色)。kitty、alacritty、wezterm、ghostty、iTerm2 与较新版 Windows Terminal 支持——其他终端回退到普通\x1b[4m。 - 停止下划线该用
\x1b[24m还是\x1b[0m? \x1b[24m是关闭下划线的精确码——只去掉横线,颜色、字重、斜体都保留。\x1b[0m会清掉所有属性,连同下划线一起设的颜色或加粗也会丢。已经处于带样式的段落中时优先用\x1b[24m;只在整段样式末尾用\x1b[0m。
终端支持
- 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 支持 | 支持 | 支持 | 支持 | 部分 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |