SGR 5 — 闪烁(慢速)
使后续文本闪烁(≤ 150 次/分钟)。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\x1b[5m\033[5m\e[5mESC [ 5 m1b 5b 35 6d实时预览
在浏览器中通过与解码器相同的分词器渲染 —— 无需打开终端。
说明
ECMA-48 §8.3.117 把 SGR 5 定义为「slow blink」—— 每分钟最多 150 次切换 —— 把 SGR 6 定义为「rapid blink」(> 150 次/分钟)。字节序列为 \x1b[5m。几乎没有现代模拟器分别实现这两种速率;xterm 明确把 SGR 6 折叠到 SGR 5,多数其他终端干脆忽略 SGR 6,因此跨终端的「闪烁」库实际发的都是慢闪 escape。视觉效果是终端按实现定义的速率(通常 0.5–1 Hz)在字符单元前景色与背景色之间交替;底层字节稳定,所以文本仍可选中、可复制、且对读屏可读。配对关闭码是 SGR 25(\x1b[25m)—— 精准,不动前景 / 背景 / 加粗 / 斜体 / 下划线。
支持差异更多源于*策略*而非能力。xterm、iTerm2、kitty、wezterm、gnome-terminal、Konsole 与 Ghostty 真正让单元格闪烁。Apple Terminal.app 刻意不动画(「闪烁与 Mac UI 设计理念相悖」)—— 属性被解析但渲染与非闪烁相同。alacritty 历史上出于 UX 立场拒绝动画;当前构建(2024+)接受属性但静态渲染。Linux console / fbcon 实现闪烁,但速率锁定到硬件光标闪烁频率。Windows Terminal 与大多数 Linux GUI 终端都提供「不闪烁文本」偏好以全局抑制 SGR 5 —— 启用该选项的用户(出于无障碍考虑非常常见)永远看不到你的闪烁。更要紧的是 WCAG 2.x 指南 2.3.1,限制任何闪烁内容不超过 3 Hz 以避免诱发癫痫;SGR 5 实现都低于该阈值,但来自光敏癫痫和前庭敏感用户的投诉仍反复出现。读屏完全忽略该属性 —— screen-readers 这条 pitfall 同样适用,因为辅助软件无法渲染运动。
使用 SGR 25(\x1b[25m)关闭。硬规则:绝不要单独用闪烁作为任何对用户有意义的信号载体。按 color-only-signal 同步搭配显式颜色、图标或文本标签 —— 一个没有「[!]」/「[error]」前缀的闪烁单词,对全局禁用闪烁的用户、Apple Terminal.app 用户、alacritty 用户或读屏用户都什么也没传达。terminfo cap 是 blink(tput blink / 关闭用 tput sgr0,因为没有精准的 rmblink);许多现代 terminfo 条目即使模拟器忽略闪烁仍把 blink 留作非空,因此基于 terminfo 的能力探测并不可靠。相关:sgr-reset(SGR 0 —— 完整重置)、sgr-reverse(SGR 7 —— 一个支持普遍得多的吸引注意属性)、sgr-hidden(SGR 8 —— 相邻的可见性属性)。
规范出处: ECMA-48 §8.3.117 (SGR parameter 5)
示例
printf '\033[5mblink\033[25m steady\033[0m\n'print('\x1b[5mblink\x1b[0m')fmt.Print("\x1b[5mblink\x1b[0m")console.log('\x1b[5mblink\x1b[0m')printf("\x1b[5mblink\x1b[0m\n");常见问题
针对这条序列,开发者真正会去搜索的问题的简短回答。
- 2026 年还有终端真的在渲染闪烁吗?
- 有,但不一致。xterm、urxvt、Linux console / fbcon、gnome-terminal(VTE)、konsole、macOS Terminal.app 仍会闪。kitty、alacritty、wezterm、ghostty 把文本渲染为静态——现代栈的共识是闪烁会带来无障碍 / 偏头痛问题。永远不要靠闪烁传达关键信息;把它当成装饰,并接受在读者实际使用的近一半终端上完全不可见。
- 怎样关闭闪烁文本——按字节流和按终端两种方式?
- 字节流里发
\x1b[25m单独关闭闪烁、不影响字重和颜色(或\x1b[0m全部重置)。按终端:iTerm2 *Profiles → Text → Blinking text*;gnome-terminal *偏好 → 配置 → 文本 → 允许文本闪烁*;konsole *设置 → 配置 → 高级 → 启用闪烁文本*;xterm 查 X 资源cursorBlink。ConPTY 即使宿主终端能闪也不闪。
终端支持
- 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 支持 | 不支持 | 支持 | 部分 | 不支持 | 支持 | 部分 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |