A terminal spreadsheet editor with Vim keybindings, written in Rust.
From crates.io:
cargo install cell-sheet-tuiPre-built binaries for Linux, macOS, and Windows are available on the GitHub Releases page.
git clone https://github.com/garritfra/cell.git
cd cell
cargo build --release
# Binary at target/release/cellcell # empty sheet
cell data.csv # open CSV
cell data.tsv # open TSV
cell sheet.cell # open native formatTo explore an example sheet with formulas, ranges, and IF logic:
If you know Vim, you know cell.
| Key | Action |
|---|---|
h j k l |
Move cursor |
gg |
First row |
G |
Last row |
0 |
First column |
$ |
Last column |
Ctrl-D / Ctrl-U |
Half-page down/up |
Ctrl-F / Ctrl-B |
Full page down/up |
w / b |
Next/previous non-empty cell |
i / a / Enter |
Edit cell (Insert mode) |
x |
Clear cell |
dd |
Delete row |
yy |
Yank row |
p / P |
Paste below/above |
u |
Undo |
Ctrl-R |
Redo |
v |
Visual selection |
Ctrl-V |
Visual block selection |
/ |
Search |
n / N |
Next/previous match |
: |
Command mode |
Type to edit the cell. ESC or Enter confirms.
Select with hjkl, then y to yank, d to delete.
| Command | Action |
|---|---|
:w |
Save |
:w file.csv |
Save as CSV |
:w file.cell |
Save as native format |
:w! |
Force save (flatten formulas) |
:q |
Quit |
:q! |
Quit without saving |
:wq |
Save and quit |
:e file |
Open file |
:sort A asc |
Sort by column A ascending |
:sort B desc |
Sort by column B descending |
Formulas start with = and support Excel-compatible syntax:
=A1+B1
=SUM(A1:A10)
=AVERAGE(B1:B5)
=IF(A1>100, "high", "low")
SUM, AVERAGE, COUNT, MIN, MAX, IF
Formula compliance with the ODF (OpenDocument Formula) spec is tracked and will expand over time.
- CSV/TSV -- Opens and saves standard comma/tab-separated files. Formulas are flattened to their computed values on CSV export.
**.cell** -- Native format that preserves formulas. Plain text, human-readable, inspired by sc-im.
When saving a CSV that contains formulas, cell warns you and suggests saving as .cell instead. Use :w! to force a CSV save.
cell/
crates/
cell-sheet-core/ # Data model, formula engine, file I/O (no TUI dependency)
cell-sheet-tui/ # Ratatui rendering, Vim modes, event loop
The core library is independent of the terminal UI and can be tested without a terminal.
- Update the version in
[Cargo.toml](Cargo.toml)(workspace version) - Update
[CHANGELOG.md](CHANGELOG.md)with the new version's changes - Commit:
git commit -am "release: bump to vX.Y.Z" - Tag and push:
git tag vX.Y.Z
git push origin main --tagsPushing a v* tag triggers the release workflow, which:
- Builds binaries for Linux (x86_64, aarch64), macOS (x86_64, aarch64), and Windows (x86_64)
- Creates a GitHub Release with the binaries attached
- Publishes
cell-sheet-coreandcell-sheet-tuito crates.io via trusted publishing
