DECSCNM — 反向视频屏幕模式(CSI ? 5 h / l)
在整屏范围内全局交换前景色与背景色 —— 全屏的反向视频开关,与逐格 SGR 7 不同。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\\x1b[
\x1b[?5h (reverse) \x1b[?5l (normal)\\033[
\033[?5h / \033[?5l\\e[
\e[?5h / \e[?5lESC [
ESC [ ? 5 h / ESC [ ? 5 lhex
1b 5b 3f 35 68 / 6c说明
屏幕模式(反向)。设置(`\x1b[?5h`)时,终端以前 / 后景色互换的方式渲染整屏 —— 每个单元显示为 `bg-on-fg`,包括显式带 SGR 颜色的单元(其前 / 后景分别交换)。重置(`\x1b[?5l`,默认)恢复正常。**与 SGR 7 不同**(逐格反向视频,slug `sgr-reverse`):SGR 7 切换单格标志,DECSCNM 切换整渲染缓冲区。用途:无障碍(部分对强光敏感用户偏好亮底暗字,并配全局快捷键切换)、演示 / 调试(整屏闪烁以突出状态变化)、复古模拟器(DEC VT100 把该开关做成硬件开关)。实现注意:kitty / alacritty / wezterm / ghostty 实现该模式;部分仅尊重默认前后景对(显式带颜色的单元不交换,破坏语义)。持续到重置,或 DECSTR(软复位回到默认)或 RIS(硬复位)。不要与 OSC 11 的亮 / 暗模式偏好交换混淆 —— OSC 11 改变默认背景色本身,DECSCNM 是把已可见的一切交换。
规范出处: DEC VT100 (DECSCNM) / xterm-ctlseqs
参数
示例
printf '\033[?5h' # global reverse video\nsleep 1\nprintf '\033[?5l' # back to normalimport sys, time\nsys.stdout.write('\x1b[?5h'); sys.stdout.flush()\ntime.sleep(0.1) # 100ms flash for state change\nsys.stdout.write('\x1b[?5l')fmt.Print("\x1b[?5h") // reverse on\ndefer fmt.Print("\x1b[?5l") // always reset on exitprocess.stdout.write('\x1b[?5h') // honour user's accessibility-flash preferenceprintf("\x1b[?5h"); /* whole screen reverse */\nprintf("\x1b[?5l"); /* back to normal */终端支持
- 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 支持 | 支持 | 支持 | 支持 | 不支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 不支持 | 不支持 |