跳到主要内容
ansicode

DECALN — 屏幕对齐测试图案(ESC # 8)

用大写 `E` 字形填满整屏 —— DEC 的 CRT 对齐测试,验证「页面缓冲是否正确接通」的标准烟囱测试。

字节形式

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

\\x1b[\x1b#8
\\033[\033#8
\\e[\e#8
ESC [ESC # 8
hex1b 23 38

说明

Screen Alignment Test。**C1 级**转义序列(无 CSI、无参数 —— `ESC # 8`,共三字节),将活动页面的每个单元填充 ASCII 字符 `E`(0x45)。最初是 DEC VT100 系列的硬件诊断:亮且均匀的 `E` 图案让维修工程师可以轻易验证 CRT 电子束的偏转线性(每个 `E` 不论位置都应大小形状一致),以及页面内存正确寻址所有行 / 列(无单元丢失、无行重复)。今天在软件模拟器上主要被终端模拟器测试套件使用 —— vt100 / vt220 / xterm 兼容性测试发 `ESC # 8` 来验证模拟器网格大小与寻址正确。 关键行为: - 填充**尊重当前页面大小** —— 若启用了 DECCOLM 132(`\x1b[?3h`,slug `deccolm`),DECALN 涂 132 列 `E`;80 列模式则涂 80 列。 - 填充时**所有 SGR 属性被重置** —— 每个被涂单元使用默认前 / 后景,无加粗 / 斜体 / 下划线。这使 DECALN 成为一字节内的「视觉 sgr-reset + 清屏」。 - 填充后光标**归位**到第 1 行 / 第 1 列。 - DECALN 忽略 DECOM(原点模式)与滚动区域 —— 永远从边到边涂整个页面。 现代模拟器支持参差:xterm 与 mlterm 忠实实现(测试套件依赖它);kitty / wezterm / ghostty / alacritty 多数实现(成本低 —— 一字节识别、一屏填充)但少数省略。Linux fbcon 与 Windows Terminal 静默忽略。用途:模拟器测试套件、复古 / VT100 忠实屏保、模拟器开发中调试网格问题。不要发给终端用户 —— 它会立刻摧毁屏上一切。

规范出处: DEC VT100 (DECALN) / xterm-ctlseqs

参数

示例

bash
printf '\033#8'   # fill screen with E\nsleep 2\nprintf '\033[2J\033[H'   # clear screen + home cursor — back to normal
python
import sys, time\nsys.stdout.write('\x1b#8')   # smoke test the grid\nsys.stdout.flush()\ntime.sleep(0.5)\nsys.stdout.write('\x1b[2J\x1b[H')   # clear
go
// Cheap emulator-correctness probe: DECALN, then DSR cursor-pos, expect (1,1):\nfmt.Print("\x1b#8")\nfmt.Print("\x1b[6n")   // → \x1b[1;1R if homing worked
javascript
process.stdout.write('\x1b#8')   // alignment pattern\nprocess.stdout.write('\x1b[2J\x1b[H')   // restore clean state
c
fputs("\x1b#8", stdout);    /* fill */\nfputs("\x1b[2J\x1b[H", stdout);  /* clear + home */

终端支持

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

相关序列

在家族食谱中

ESC 食谱 · 4. 双宽 / 双高行 + 对齐测试 —— `\x1b#3-#6` 与 `\x1b#8`