ECH — 擦除字符(CSI Pn X)
在光标处原地擦除 N 个单元 —— 形状与 DCH 相同,但行剩余内容不左移。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\\x1b[
\x1b[PnX\\033[
\033[PnX\\e[
\e[PnXESC [
ESC [ Pn Xhex
1b 5b <Pn> 58说明
Erase Character。末字节 `X`(0x58)—— 从光标处起把 `Pn` 个单元(默认 1)替换为空格(SP,0x20,带当前 SGR 背景色)。光标不动,行剩余内容也不左移 —— 这是与 DCH(`\x1b[Pn P`)的关键区别。当程序需要清空一个固定宽度的字段(输入提示、表格单元、进度条段)而不影响周围内容时使用。ECH 受 DECSTBM 列边距(若启用)约束 —— 右边距外的单元不被波及。terminfo 能力名为 `ech`(带参数;不存在 `ech1`,因为「不左移」的语义使带参数形式被普遍需要)。
规范出处: ECMA-48 §8.3.38 (ECH)
示例
# Print a 10-char field, position at col 1, erase 5 chars in place (rest of line preserved).\nprintf '0123456789\033[1G\033[5X'import sys; sys.stdout.write('\x1b[5X') # clear 5 cells in placefmt.Print("\x1b[5X")process.stdout.write('\x1b[5X')printf("\x1b[5X");终端支持
- 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 支持 | 支持 | 支持 | 支持 | 部分 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
相关序列
在家族食谱中
CSI 食谱 · 6. 插入 / 删除 / 光标形状 —— IL / DL / ICH / DCH / ECH + DECSCUSR