跳到主要内容
ansicode

DECSASD / DECSSDT — 状态显示路由与类型(CSI Ps $ } / CSI Ps $ ~)

选择后续输出写入哪个显示面(主屏 vs 状态行 —— DECSASD),以及状态行的用途(DECSSDT)—— DEC VT320 的分屏状态行。

字节形式

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

\\x1b[\x1b[<Ps>$} (DECSASD) \x1b[<Ps>$~ (DECSSDT)
\\033[\033[1$} / \033[2$~
\\e[\e[1$} / \e[2$~
ESC [ESC [ Ps $ } / ESC [ Ps $ ~
hex1b 5b ... 24 7d / 1b 5b ... 24 7e

说明

DEC VT320 第 25 行状态行的两个配套命令 —— 主 24 行显示下方的硬件支持窄条,用于承载 OS 状态、主机名或终端模拟器装饰。**DECSASD**(`\x1b[<Ps>$}`)选择活动状态显示 —— 选定后续写入落在哪一面。`Ps=0` 选主显示(默认),`Ps=1` 选状态行。`\x1b[1$}` 之后光标移动与写入仅作用于第 25 行;`\x1b[0$}` 切回正常输出。**DECSSDT**(`\x1b[<Ps>$~`)设置状态显示类型 —— 配置状态行的用途。`Ps=0` 无状态行(第 25 行归还主显示)、`Ps=1` 指示器(终端拥有该行 —— 显示在线 / 离线、键盘锁定)、`Ps=2` 主机可写(应用通过 DECSASD 拥有该行 —— vim 风标尺 / curses 状态栏的实用模式)。多数现代模拟器不为状态行分配单独行 —— 直接把第 25 行视为主网格的一行,使 DECSASD 几乎成为空操作(光标跳到第 25 行但不发生虚拟分屏),DECSSDT 实际被忽略。这些转义序列仍按 VT 兼容性识别但不带语义分隔。curses 在现代 terminfo 中把它们捕获为 `tsl`(to status line)与 `fsl`(from status line),分别映射到 `\x1b[1$}` 与 `\x1b[0$}`。

规范出处: DEC VT520 RM (DECSASD / DECSSDT)

参数

Ps (DECSASD)活动显示:`0` 主屏、`1` 状态行。
Ps (DECSSDT)状态显示类型:`0` 无、`1` 指示器(终端拥有)、`2` 主机可写。

示例

bash
# Reserve status line, write to it, return to main:\nprintf '\033[2$~'           # DECSSDT: host-writable status\nprintf '\033[1$}'           # DECSASD: target status\nprintf 'session: alice@host'\nprintf '\033[0$}'           # DECSASD: back to main
python
import sys\nsys.stdout.write('\x1b[2$~')   # enable host-writable status line
go
fmt.Print("\x1b[1$}")   // following writes go to row 25\nfmt.Print("loading...")\nfmt.Print("\x1b[0$}") // back to main
javascript
process.stdout.write('\x1b[0$~')   // disable status line (return row 25 to main)
c
printf("\x1b[2$~\x1b[1$}");   /* enable status + select it */

终端支持

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

相关序列