A terminal viewer for CSV and Parquet files with vim-style navigation, built with Rust and ratatui. Themed with Catppuccin Mocha.
- Vim-style navigation (
hjkl,g/G,PageUp/PageDown) - Search within a column (
/,n/N) - Multi-column filtering with comparison operators —
> 30,= Engineering,!= 0(f,F) - Unique values popup — browse and filter by distinct values instantly (
u) - Sort by any column (
s) - Group-by with per-column aggregations (
b,a,B) - Column plot — line, bar, or histogram chart (
p,t) - Column Inspector — schema and stats for every column at a glance (
i) - Column stats popup (
S) - In-app help popup (
?) - Catppuccin Mocha color theme with zebra-striped rows and mode-aware status bar
- Supports CSV and Parquet files
- Viewport-windowed rendering — stays fast on large files
Download the latest binary for your platform from the GitHub Releases page.
Requires Rust 1.75 or higher.
cargo install --git https://github.com/SpollaL/datasight
Or clone and run locally:
cargo run -- <path-to-file.csv>
cargo run -- <path-to-file.parquet>
| Key | Action |
|---|---|
j / Down |
Move down |
k / Up |
Move up |
h / Left |
Move left |
l / Right |
Move right |
g / Home |
Jump to first row |
G / End |
Jump to last row |
PageDown |
Scroll down 20 rows |
PageUp |
Scroll up 20 rows |
| Key | Action |
|---|---|
/ |
Enter search mode (searches in current column) |
Enter |
Confirm search and jump to first match |
n |
Next match |
N |
Previous match |
Esc |
Exit search and clear results |
| Key | Action |
|---|---|
f |
Enter filter mode (filters rows by current column) |
Enter |
Confirm filter and return to normal mode |
F |
Clear all filters |
Esc |
Discard input |
Supports comparison operators for numeric columns: > 30, < 100, >= 0, <= 50, = 42, != 0.
Use = text or != text for exact string matching. Plain text falls back to substring search.
| Key | Action |
|---|---|
u |
Open unique values popup for current column (sorted by frequency) |
| type | Search / filter the list live |
j / k |
Navigate the list |
Enter |
Apply selected value as a filter and close |
Esc |
Close without filtering |
| Key | Action |
|---|---|
s |
Sort by current column (toggles asc/desc) |
| Key | Action |
|---|---|
b |
Toggle group-by key for current column |
a |
Cycle aggregation for current column (Σ μ # ↓ ↑) |
B |
Execute group-by / clear and return to full view |
| Key | Context | Action |
|---|---|---|
p |
Normal | Mark current column as Y and enter pick-X mode |
h / ← / l / → |
Pick-X | Navigate to the X column |
Enter |
Pick-X | Confirm X column and show chart |
Esc |
Pick-X | Cancel and return to normal mode |
t |
Plot | Cycle chart type (line → bar → histogram) |
Esc / p |
Plot | Close chart and return to normal mode |
q |
Plot | Quit |
Numeric X columns are plotted directly. String or date X columns use row indices as data points and render the actual values as rotated (vertical) labels below the chart — all labels are shown when they fit, otherwise they are sampled evenly.
For histogram, the Y column is binned automatically — no X column selection needed.
| Key | Action |
|---|---|
i |
Open Column Inspector (type, count, nulls, unique, min, max, mean, median) |
j / k |
Navigate rows |
Enter |
Jump to the selected column and return to data view |
Esc / i |
Close and return to data view |
| Key | Action |
|---|---|
S |
Toggle stats popup for current column (count, min, max, mean, median) |
| Key | Action |
|---|---|
i |
Open Column Inspector |
_ |
Autofit current column width |
= |
Autofit all columns |
S |
Toggle column stats popup |
? |
Toggle help popup |
q |
Quit |
The display looks garbled or misaligned
Your terminal may not support 256 colors or Unicode box-drawing characters. Try a modern terminal emulator (kitty, alacritty, iTerm2, Windows Terminal) and make sure TERM is set to xterm-256color.
Columns are too narrow or too wide
Press = to autofit all columns to their content, or _ to autofit only the current column.
Filtering with >, <, >=, <= shows an error
These operators only work on numeric columns. Use = value or != value for exact string matching, or plain text for substring search.
The unique values popup shows fewer results than expected
The popup is capped at the 500 most frequent values. If your column has more than 500 distinct values, the title will say [top 500].
Large files are slow to open
datasight reads the entire file into memory on startup using Polars. In practice, load times are fast: a 42 MB / 1M-row CSV loads in under 0.1s using ~115 MB RAM. Multi-GB files will use proportionally more memory. Once loaded, navigation and filtering are fast regardless of row count.
Parquet file fails to open
Make sure the file is a valid Parquet file. Compressed or encrypted Parquet variants are not supported.
