跳到主要内容
ansicode

DECSCNM — 反向视频屏幕模式(CSI ? 5 h / l)

在整屏范围内全局交换前景色与背景色 —— 全屏的反向视频开关,与逐格 SGR 7 不同。

字节形式

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

\\x1b[\x1b[?5h (reverse) \x1b[?5l (normal)
\\033[\033[?5h / \033[?5l
\\e[\e[?5h / \e[?5l
ESC [ESC [ ? 5 h / ESC [ ? 5 l
hex1b 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

参数

示例

bash
printf '\033[?5h'   # global reverse video\nsleep 1\nprintf '\033[?5l'   # back to normal
python
import sys, time\nsys.stdout.write('\x1b[?5h'); sys.stdout.flush()\ntime.sleep(0.1)            # 100ms flash for state change\nsys.stdout.write('\x1b[?5l')
go
fmt.Print("\x1b[?5h")   // reverse on\ndefer fmt.Print("\x1b[?5l")   // always reset on exit
javascript
process.stdout.write('\x1b[?5h')   // honour user's accessibility-flash preference
c
printf("\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
不支持

相关序列