Skip to content

Reverse index (RI)

Category: scrollback · Baseline: core · Tags: ECMA-48 Standard, VT100 · Specification ↗

ESC M
RI moves the cursor up one line. If the cursor is at the top margin of the scroll region, the content scrolls down and a blank line is inserted at the top. The sequence is ESC M. This is the reverse of a line feed at the bottom of the scroll region. Used by applications that need to insert content above the current cursor position.
How this is testedautomated
Write 3 lines, move to row 0, send \x1bM (RI), verify row 0 is now blank.

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 all 12 tested terminals — universal adoption. Part of the Core TUI baseline.

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
vt100.js0.2.1✓ yes
vterm0.2.0✓ yes
WezTerm0.1.0-fork.5✓ yes
xterm.js5.5.0✓ yes