跳到主要内容
ansicode

DECRSPS — 恢复呈现状态(DCS $ t ... ST)

DECRQSS 的反向操作 —— 把先前保存的光标 / SGR / 边距快照回灌,恢复终端精确状态。

字节形式

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

\\x1b[\x1bP1$t<saved-state>\x1b\\ (cursor) \x1bP2$t<saved-state>\x1b\\ (tab stops)
\\033[\033P<Ps>$t<state>\033\\
\\e[\eP<Ps>$t<state>\e\\
ESC [ESC P Ps $ t <state> ESC \
hex1b 50 ... 24 74 ... 1b 5c

说明

Restore Presentation State。中间字节 $(0x24)、末字节 t(0x74)的 DCS 帧 —— DECRQPSR 的反向(DECRQSS 派发的 \x1bP$qm\x1b\\ 族在 DCS 侧的请求形态)。开头 Ps 选择要恢复的状态种类:

- Ps = 1 —— 光标信息:行、列、页、字符保护(DECSCA)、原点模式(DECOM)、DECSC 保存栈状态、字符集 GL / GR 选择(SCS)、SGR 渲染属性。 - Ps = 2 —— 制表位:HTS 设置的完整列列表。

<saved-state> 体是终端先前响应对应 DECRQPSR\x1bP$w...\x1b\\)时回复的原始字节 —— 应用在启动时缓存这份回复,退出时通过 DECRSPS 回灌,撤销所有状态变更。这就是 tmux passthrough 已存终端状态以及 screen :source .screenrc 默认值的标准机制。现代相关性:仅 xterm 与少数忠实 VT 模拟器(mlterm、qodem)以这种精度实现 DECRSPS;多数现代模拟器(alacritty / kitty / wezterm / ghostty)对对应的 DECRQPSR 以 0$w(拒绝 / 不支持)回应,整套保存 - 恢复回路成为 no-op —— 这些程序用 DECSC / DECRC(\x1b7 / \x1b8)做光标保存恢复、用 alt-screen \x1b[?1049h/l 对做高层快照。DECRSPS 仍对模拟器测试套件快照与 VT510 忠实主机软件有用;可移植应用不应依赖它被尊重。

规范出处: DEC VT510 RM (DECRSPS) / xterm-ctlseqs

参数

Ps类别选择子:1 = 光标 / SGR / 字符集 / 原点 / 保存栈;2 = 制表位。
saved-state先前 DECRQPSR 回复的体内字节(终端自身格式;应用不应自行构造,只做来回拷贝)。

示例

bash
# Round-trip pattern: ask, stash, later restore.\nstty -echo raw min 0 time 5\nprintf '\033P1$w\033\\\\'   # DECRQPSR cursor info\nIFS= read -r -t 1 -d '\\' REPLY; stty sane\n# … much later, restore exactly: …\nprintf '\033P1$t%s\033\\\\' "$REPLY"
python
import sys\nsaved = read_decrqpsr()                              # opaque body bytes\nsys.stdout.write(f'\x1bP1$t{saved}\x1b\\\\')
go
// Pseudo: restore previously-stashed cursor + SGR state\nfmt.Printf("\x1bP1$t%s\x1b\\\\", savedBody)
javascript
// On exit, replay the snapshot we captured at startup:\nprocess.stdout.write(`\x1bP2$t${savedTabStops}\x1b\\\\`)   // restore tab stops
c
/* Replay the cursor / SGR snapshot captured at program start: */\nprintf("\x1bP1$t%s\x1b\\\\", saved_state_buf);

终端支持

xterm
支持
Linux console (fbcon)
不支持
macOS Terminal.app
不支持
iTerm2
不支持
Windows Terminal
不支持
cmd.exe / ConPTY
不支持
kitty
不支持
alacritty
不支持
WezTerm
不支持
Ghostty
不支持
GNOME Terminal
不支持
Konsole
不支持
tmux
支持
GNU screen
支持

相关序列

在家族食谱中

DCS 食谱 · 5. 有状态保存 / 重放 —— DECDMAC(定义宏)与 DECRSPS(恢复表现态)