GitHub - garritfra/cell: A terminal spreadsheet editor with Vim keybindings
Pangram verdict · v3.3
We believe that this document is a mix of AI-generated, and human-written content
AI likelihood · overall
MixedArticle text · 451 words · 2 segments analyzed
A terminal spreadsheet editor with Vim keybindings, written in Rust.
Install From crates.io: cargo install cell-sheet-tui Pre-built binaries for Linux, macOS, and Windows are available on the GitHub Releases page. Build from source git clone https://github.com/garritfra/cell.git cd cell cargo build --release # Binary at target/release/cell Usage cell # empty sheet cell data.csv # open CSV cell data.tsv # open TSV cell sheet.cell # open native format To explore an example sheet with formulas, ranges, and IF logic: cell examples/demo.cell Keybindings If you know Vim, you know cell. Normal Mode
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
Insert Mode Type to edit the cell. ESC or Enter confirms. Visual Mode Select with hjkl, then y to yank, d to delete. Commands
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 Formulas start with = and support Excel-compatible syntax: =A1+B1 =SUM(A1:A10) =AVERAGE(B1:B5) =IF(A1>100, "high", "low")
Supported Functions (v1) SUM, AVERAGE, COUNT, MIN, MAX, IF Formula compliance with the ODF (OpenDocument Formula) spec is tracked and will expand over time. File Formats
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. Architecture 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. Releasing
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 --tags Pushing 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-core and cell-sheet-tui to crates.io via trusted publishing
License MIT