跳到主要内容
ansicode

SGR 4 — 下划线

为后续文本添加下划线。

字节形式

涵盖所有常见的字符串字面量写法,方便正反查找。

\\x1b[\x1b[4m
\\033[\033[4m
\\e[\e[4m
ESC [ESC [ 4 m
hex1b 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

示例

bash
printf '\033[4munderline\033[24m back\033[0m\n'
python
print('\x1b[4munderline\x1b[0m')
go
fmt.Print("\x1b[4munderline\x1b[0m")
javascript
console.log('\x1b[4munderline\x1b[0m')
c
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
支持

相关序列

在家族食谱中

SGR 食谱 · 6. SGR 冒号子参数 —— 真正符合标准的写法