跳到主要内容
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
支持

相关序列