Skip to content

Insert characters (ICH)

Category: editing · Baseline: modern · Tags: ECMA-48 Standard, VT220 · Specification ↗

ESC [ N @
ICH inserts N blank characters at the cursor position, shifting existing characters to the right. The sequence is ESC [ N @ (default N=1). Characters pushed past the right margin are lost. Used by editors (vim, emacs) and terminal multiplexers (tmux, screen) for inline text insertion without redrawing the entire line.
How this is testedautomated
Write "ABCDE", move to col 1, send \x1b[2@ (ICH 2), verify 2 blanks inserted and "A" shifted to col 2.

The same probe runs against headless backends (via Termless) and real terminal apps (via a daemon launched in each terminal). This lets us distinguish parser correctness from rendering correctness.

Analysis2026-04-06

Supported by 11 of 12 terminals (92%). Not supported by: vt100.js. Part of the Modern TUI baseline. Notes: vt100.js: ICH (insert characters) not implemented in vt100.js baseline emulator.

Supported by 13 of 14 backends (93%)

Terminal Applications

TerminalVersionSupportNotes
iTerm23.6.9✓ yes
Ghostty1.3.1✓ yes
VS Code✓ yes
Warp✓ yes
Cursor✓ yes
Terminal.app✓ yes

Headless Backends

Parser correctness only — a means the parser accepts the sequence.

BackendVersionSupportNotes
Alacritty0.26.0✓ yes
Kitty0.40.0✓ yes
vterm0.2.0✓ yes
WezTerm0.1.0-fork.5✓ yes
xterm.js5.5.0✓ yes
vt100.js0.2.1✗ noICH (insert characters) not implemented in vt100.js baseline emulator