Moving Around Sheets
VisiData navigation is keyboard-driven. Once you internalize the cursor movement, sheet jumping, and scrolling commands, you can move through millions of rows as fast as you can think.
Learning Focus
Learn the three layers of navigation: within a sheet (cursor), within a column (value jumps), and between sheets (sheet stack). All three are essential for productive use.
Cursor Movement
Basic Movement
h j k l ← ↓ ↑ → (vi-style — also works with arrow keys)
gh gj gk gl go all the way left / bottom / top / right
G go to last row
gg go to first row
Page Scrolling
Ctrl+F scroll one page forward (down)
Ctrl+B scroll one page back (up)
Ctrl+Left / Ctrl+Right scroll one page left / right
zz scroll current row to center of screen
Jump to Column or Row by Number
zc <number> go to column number (0-based)
zr <number> go to row number (0-based)
Jump by Column Name
c <regex> go to next column whose name matches regex
Column Navigation
Jump to Next Distinct Value
< go up current column to previous distinct value
> go down current column to next distinct value
z< go up current column to previous null value
z> go down current column to next null value
Jump to Selected Rows
{ go up to previous selected row
} go down to next selected row
Sheet Stack Navigation
| Key | Action |
|---|---|
q | Close current sheet (pop from stack) |
gq | Close all sheets and quit VisiData |
Shift+S | Open the Sheets Sheet (navigate all open sheets) |
Ctrl+^ | Jump to previous sheet (swap with current) |
Alt+1 through Alt+9 | Jump directly to sheet by number |
Inside the Sheets Sheet
Enter jump to sheet under cursor
gEnter push selected sheets to top of stack
a add a new blank sheet reference
g^R reload all selected sheets
g^S save selected sheets
Viewing All Sheets
# Inside VisiData, open the Sheets Sheet:
Shift+S
# Shows: sheet name, source, number of rows, loaded status
# Press Enter on any row to jump to that sheet
# Press q to return to your previous sheet
Splitting the Screen
Z split screen — show second sheet in lower pane
zZ split screen — query for height of second pane
Tab jump to other pane
gTab swap panes
gZ close split; return to single-pane view
Practical Use Cases
Jump to a Specific Row by Number
# Go to row 10000 in a large log file
vd /var/log/nginx/access.log
# Inside VisiData:
zr 10000
# Cursor jumps to row 10000 immediately
Browse Two Files Side by Side
vd file1.csv file2.json
# Shift+S → see both sheets
# Z → split screen to view both simultaneously
# Tab → switch focus between panes
Navigate a SQLite Database
vd /var/www/html/db.sqlite
# Sheets Sheet appears showing all tables
# Press Enter on wp_posts to open it
# Press q to return to table directory
Troubleshooting Matrix
| Problem | Cause | Fix |
|---|---|---|
Pressing q exits to wrong place | Stack depth confusion | Use Shift+S to see all sheets |
| Arrow keys not working | Terminal not sending correct codes | Try hjkl instead |
| Cannot return to original sheet | Derived sheet chain | Press q repeatedly or use Shift+S |
| Split screen not showing | Second sheet not on stack | Open a second file first |
Hands-On Practice
vd /var/log/syslog
# Practice these movements:
# 1. gg → go to first row
# 2. G → go to last row
# 3. Ctrl+F → page forward
# 4. Ctrl+B → page back
# 5. zr 100 → jump to row 100
# 6. Shift+F → open frequency table
# 7. q → return to syslog sheet
# 8. Shift+S → view sheet stack