DECSTBM — 设置上下边距(CSI r)
定义垂直滚动区域 —— 区域外的行被固定,区域内的行参与滚动。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\\x1b[
\x1b[T;Br\\033[
\033[1;24r\\e[
\e[1;24rESC [
ESC [ T ; B rhex
1b 5b <T> 3b <B> 72说明
Set Top and Bottom Margins。末字节 `r`(0x72);参数是基于 1 的行号 —— `T`(顶部行,默认 1)与 `B`(底部行,默认 = 屏幕高度)。一旦设置,所有滚动行为 —— 底行自然溢出、`B` 之后的 LF、SU/SD(`\x1b[NS`/`T`)以及备用屏幕 —— 都只作用于第 `T..B` 行(含端点);`T` 之上与 `B` 之下的行被固定。发送 `\x1b[r`(无参数)恢复整屏滚动。DECSTBM 执行后光标会被移到活动区域的原点(左上角)。每个全屏 TUI 都用它把状态栏(第 1 行或第 N 行)冻结,仅让正文滚动。结合 DECOM(`?6h/l`)可让光标定位也被裁剪到该区域。
规范出处: xterm-ctlseqs (DECSTBM, CSI Ps ; Ps r)
参数
| T | 顶部行,基于 1(默认 1) |
| B | 底部行,基于 1(默认 = 屏幕高度) |
示例
printf '\033[2;23r' # rows 2..23 scroll; 1 and 24 pinned\nprintf '\033[r' # reset to full screenimport sys; sys.stdout.write('\x1b[2;23r')fmt.Print("\x1b[2;23r")process.stdout.write('\x1b[2;23r')printf("\x1b[2;23r");终端支持
- 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 支持 | 支持 | 支持 | 支持 | 部分 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 不支持 | 不支持 |