Skip to main content

IND

AI-Generated Content
This page was generated with the assistance of AI and may contain inaccuracies. It is intended as a placeholder for future human verification. If you spot issues ahead of its initial review, please report them on GitHub!
Standard

IND (Index) is an escape sequence that moves the cursor down one line in the same column, scrolling the screen up if the cursor is at the bottom margin of the scrolling region.

Syntax​

ESC D         IND — Index (7-bit)
0x84 IND — Index (8-bit C1)
Formal syntax
IND = ( 0x1b, "D" ) | 0x84 ;

Description​

Per the VT510 manual, IND moves the cursor down one line in the same column position. If the cursor is at the bottom margin of the scrolling region (set by DECSTBM), the screen scrolls up: the line at the top margin is lost, all lines move up one position, and a new blank line appears at the bottom margin.

If the cursor is below the scrolling region's bottom margin, IND moves the cursor down one line without scrolling. If the cursor is already on the last line of the display, IND has no effect.

Comparison with LF​

IND behaves identically to LF in the default LNM (Line Feed/New Line Mode) reset state, except that LF's behavior can change depending on the LNM setting. IND always moves down one line in the same column regardless of mode.

Examples​

printf '\eD'     # Move cursor down one line (scroll if at bottom margin)

Specifications​

SpecificationSection
ECMA-48—
VT510 Reference—

Terminal support​

TerminalSupportVersionNotes
Terminal Emulators
Alacritty✓YesESC D listed as IMPLEMENTED in docs/escape_support.md
Bobcat✓0.9.0Standard ESC sequence, handled in TerminalCtrl library
contour✓v0.1.0ESC D implemented in processSequence; calls index()
foot✓YesImplemented in vt.c:500-501 as ESC D
Ghostty✓v1.0.0ESC D handled in stream.zig:2172-2178
iTerm2✓Yes
Kitty✓Yes
Konsole✓Yes
mintty✓YesHandled in do_esc() at src/termout.c:1960-1961
mlterm✓rel-0_2_1
PuTTY✓0.45
Rio✓v0.0.28
rxvt-unicode✓rxvt-unicode-1.2
st✓0.4
terminology✓v0.1.0
VT100✓Yes
VTE✓Yes
WezTerm✓YesHandled in performer.rs:449 via ControlCode::IND and esc.rs:31 as EscCode::Index
Windows Terminal✓YesESC D dispatches LineFeed(WithoutReturn) in OutputStateMachineEngine.cpp:220-221
xterm✓YesImplemented in charproc.c:5423 via xtermIndex()
xterm.js✓3.5.0
Multiplexers
cy✓v0.1.0
GNU Screen✓v.4.2.0IND (ESC D) implemented in DoESC() at src/ansi.c:715
tmux✓1.3Index: move cursor down one line
tuios✓v0.0.15
Zellij✓v0.7.0

See also​