Skip to main content

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

KeyAction
qClose current sheet (pop from stack)
gqClose all sheets and quit VisiData
Shift+SOpen the Sheets Sheet (navigate all open sheets)
Ctrl+^Jump to previous sheet (swap with current)
Alt+1 through Alt+9Jump 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
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

ProblemCauseFix
Pressing q exits to wrong placeStack depth confusionUse Shift+S to see all sheets
Arrow keys not workingTerminal not sending correct codesTry hjkl instead
Cannot return to original sheetDerived sheet chainPress q repeatedly or use Shift+S
Split screen not showingSecond sheet not on stackOpen 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

What's Next