DECOM ?6 — 起点模式(把光标定位限制在滚动区域内)
让光标的行列原点 (1,1) 变为 DECSTBM 滚动区域的左上角,而非整屏左上角。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\\x1b[
\x1b[?6h (origin = region) \x1b[?6l (origin = screen)\\033[
\033[?6h / \033[?6l\\e[
\e[?6h / \e[?6lESC [
ESC [ ? 6 h / lhex
1b 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)
示例
printf '\033[2;23r\033[?6h\033[1;1H' # region = rows 2..23; origin mode on; CUP to its top-leftimport sys; sys.stdout.write('\x1b[?6h')fmt.Print("\x1b[?6h")process.stdout.write('\x1b[?6h')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
- 不支持
| xterm | Linux console (fbcon) | macOS Terminal.app | iTerm2 | Windows Terminal | cmd.exe / ConPTY | kitty | alacritty | WezTerm | Ghostty | GNOME Terminal | Konsole | tmux | GNU screen |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 支持 | 支持 | 支持 | 部分 | 不支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 不支持 | 不支持 |