跳到主要内容
ansicode

DECSET 1049 — 备用屏幕缓冲

切换到独立屏幕缓冲区(vim/less 启动时使用)。

字节形式

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

\\x1b[\x1b[?1049h (enter) \x1b[?1049l (leave)
\\033[\033[?1049h / \033[?1049l
\\e[\e[?1049h / \e[?1049l
ESC [ESC [ ? 1 0 4 9 h / l
hex1b 5b 3f 31 30 34 39 68 / 6c

说明

DEC 私有模式 1049 是「进入全屏应用」的标准序列。进入(`h`)时,终端保存光标,切换到新的屏幕缓冲(无回滚),并清屏。离开(`l`)时,恢复原缓冲和光标 —— 这正是 `vim`/`less` 退出后命令行提示符回到原位置的原因。早期模式 47 和 1047 行为类似,但缺少光标保存/恢复以及清屏。

规范出处: xterm-ctlseqs (Private modes)

示例

bash
printf '\033[?1049h'; sleep 2; printf '\033[?1049l'
python
import sys, time\nsys.stdout.write('\x1b[?1049h'); sys.stdout.flush(); time.sleep(2); sys.stdout.write('\x1b[?1049l')
go
fmt.Print("\x1b[?1049h"); time.Sleep(2*time.Second); fmt.Print("\x1b[?1049l")
javascript
process.stdout.write('\x1b[?1049h'); setTimeout(() => process.stdout.write('\x1b[?1049l'), 2000)
c
printf("\x1b[?1049h"); sleep(2); printf("\x1b[?1049l");

终端支持

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

相关序列

在家族食谱中

DEC 食谱 · 1. `?` 前缀 —— DECSET 与 SM 的分水岭