Skip to main content

Cursor and Scroll

VisiData navigation is keyboard-driven. Once you internalize the cursor movement, scrolling, and jump commands, you can move through millions of rows as fast as you can think.

Learning Focus

Learn the three movement layers: row/column cursor (hjkl), half-page scrolling (Ctrl+PgDn/Ctrl+PgUp), full-page scrolling (Ctrl+F/Ctrl+B), and value jumps (</>). Each layer serves a different speed need.

Basic Cursor Movement

KeyWhere it moves
h or Left one column
j or Down one row
k or Up one row
l or Right one column
ggFirst row
GLast row
ghFirst column (leftmost)
glLast column (rightmost)
gg # jump to first row instantly
G # jump to last row
gh # jump to leftmost column
gl # jump to rightmost column

Page Scrolling

For large files, navigate by page instead of row-by-row:

KeyDistanceBest Use
Ctrl+F or PgDnFull page forward (down)Large jumps through data
Ctrl+B or PgUpFull page back (up)Large jumps up
Ctrl+PgDnHalf page forwardFine-grained, keeps context
Ctrl+PgUpHalf page backFine-grained up
zzCenter the current row on screenAfter jumping to a row
Version-specific — v3.0.2

Ctrl+D and Ctrl+U are not available for half-page scrolling in VisiData 3.0.2 (see server config). On this server, Ctrl+D is bound to save-cmdlog and Ctrl+U is unbound.

The half-page workflow uses Ctrl+PgDn / Ctrl+PgUp instead. These bindings are defined in 30-keybindings.py under the common-config repository.

Move by one row with j / k, by half page with Ctrl+PgDn / Ctrl+PgUp, and by full page with Ctrl+F / Ctrl+B or PgDn / PgUp. Each layer serves a different speed need.

Jump to Row or Column by Number

zr 10000 # jump to row 10000 immediately
zc 5 # jump to column number 5 (0-based)

Jump to Next Distinct Value

Skip through distinct values in the current column:

< go up to previous distinct value in current column
> go down to next distinct value
z< go up to previous null/empty value
z> go down to next null/empty value

Example: With cursor on sg in the region column:

> # jump to next distinct value → 'kl'
> # jump to next → 'jk'
< # jump back → 'kl'

Jump to Selected Rows

After selecting rows with s or |:

{ # jump to previous selected row
} # jump to next selected row

Jump to Column by Name

c # prompt: type column name → cursor jumps there

Quick Reference

KeyAction
h / j / k / lMove cursor left / down / up / right
gg / GFirst / last row
gh / glFirst / last column
Ctrl+F / Ctrl+B or PgDn / PgUpFull page forward / back
Ctrl+PgDn / Ctrl+PgUpHalf page forward / back (custom, v3.0.2)
zr NJump to row N
zc NJump to column N
cJump to column by name
< / >Previous / next distinct value
z< / z>Previous / next null value
{ / }Previous / next selected row
zzCenter current row on screen

What's Next