跳到主要内容
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(恢复表现态)