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.
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
| Key | Where it moves |
|---|---|
h or ← | Left one column |
j or ↓ | Down one row |
k or ↑ | Up one row |
l or → | Right one column |
gg | First row |
G | Last row |
gh | First column (leftmost) |
gl | Last 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:
| Key | Distance | Best Use |
|---|---|---|
Ctrl+F or PgDn | Full page forward (down) | Large jumps through data |
Ctrl+B or PgUp | Full page back (up) | Large jumps up |
Ctrl+PgDn | Half page forward | Fine-grained, keeps context |
Ctrl+PgUp | Half page back | Fine-grained up |
zz | Center the current row on screen | After jumping to a row |
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
| Key | Action |
|---|---|
h / j / k / l | Move cursor left / down / up / right |
gg / G | First / last row |
gh / gl | First / last column |
Ctrl+F / Ctrl+B or PgDn / PgUp | Full page forward / back |
Ctrl+PgDn / Ctrl+PgUp | Half page forward / back (custom, v3.0.2) |
zr N | Jump to row N |
zc N | Jump to column N |
c | Jump to column by name |
< / > | Previous / next distinct value |
z< / z> | Previous / next null value |
{ / } | Previous / next selected row |
zz | Center current row on screen |
What's Next
- Search and Jump — regex and expression search across columns
- Sheet Stack and Split — navigating between sheets, split screen