跳到主要内容
ansicode

DECOM ?6 — 起点模式(把光标定位限制在滚动区域内)

让光标的行列原点 (1,1) 变为 DECSTBM 滚动区域的左上角,而非整屏左上角。

字节形式

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

\\x1b[\x1b[?6h (origin = region) \x1b[?6l (origin = screen)
\\033[\033[?6h / \033[?6l
\\e[\e[?6h / \e[?6l
ESC [ESC [ ? 6 h / l
hex1b 5b 3f 36 68 / 6c

说明

Origin Mode。通过 DECSTBM(`\x1b[T;Br`)划出滚动区域后,DECOM 决定后续光标定位指令(`\x1b[r;c H` CUP、`\x1b[6n` DSR-CPR 等)是把区域左上角视作 (1,1)(`?6h` 置位)还是把整屏左上角视作 (1,1)(`?6l` 复位,默认)。`?6h` 启用后:`\x1b[1;1H` 移到区域左上角,光标不能离开区域,DSR-CPR 报告相对坐标。常见于希望第 1 行作为屏幕固定状态栏、而主体(第 2 行至第 N-1 行的子矩形)独立运作的全屏表单式 TUI。注意:DECOM 是 DECSC(`\x1b7`)/ DECRC(`\x1b8`)保存与恢复的两个状态位之一。

规范出处: xterm-ctlseqs (DECOM, Private mode 6)

示例

bash
printf '\033[2;23r\033[?6h\033[1;1H'   # region = rows 2..23; origin mode on; CUP to its top-left
python
import sys; sys.stdout.write('\x1b[?6h')
go
fmt.Print("\x1b[?6h")
javascript
process.stdout.write('\x1b[?6h')
c
printf("\x1b[?6h");

终端支持

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

相关序列