Skip to content
HN On Hacker News ↗

GitHub - garritfra/cell: A terminal spreadsheet editor with Vim keybindings

▲ 126 points 50 comments by garritfra 3w ago HN discussion ↗

Pangram verdict · v3.3

We believe that this document is a mix of AI-generated, and human-written content

49 %

AI likelihood · overall

Mixed
54% human-written 46% AI-generated
SEGMENTS · HUMAN 0 of 2
SEGMENTS · AI 0 of 2
WORD COUNT 451
PEAK AI % 65% · §1
Analyzed
Apr 27
backend: pangram/v3.3
Segments scanned
2 windows
avg 226 words each
Distribution
54 / 46%
human / AI fraction
Verdict
Mixed
Pangram v3.3

Article text · 451 words · 2 segments analyzed

Human AI-generated
§1 Mixed · 65%

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!

§2 Mixed · 36%

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