Line numbers and wrap

Line numbers

Off by default. Enable at startup with -n / --line-numbers; toggle with l in the viewer.

Right-aligned gutter, minimum width 2 digits, painted in the theme's gutter color. In pretty mode the numbers count visible pretty-printed lines (the lines actually shown), not source byte lines.

Soft wrap

On by default for text views (source, structured pretty/raw, plain text, SVG XML). Each visible logical line is sliced into visual rows of width term_cols - gutter_width, so the row budget accounts for wrapped continuations and the status line never scrolls out of view.

Toggle with w. When wrap is on, the vertical scroll keys move one visual row at a time — long lines no longer make a single keypress jump over all their wrapped rows.

The line-number gutter shows the real (logical) line number on the first segment; continuation rows have a blank gutter of the same width so wrapped content aligns under its first row.

Status bar shows Wrap whenever soft wrap is on (a deliberate always-on reminder — most status segments surface only non-default state, but wrap shows even though on is the default).

Horizontal scrolling

Companion to wrap-off mode: Left / Right pan the viewport horizontally by 8 columns per press (less -S feel). Active only when wrap is off — wrap-on makes Left/Right inert because content is already fully visible. The gutter does not pan; it stays anchored to the left edge.