WeSearch

Show HN: A terminal spreadsheet editor with Vim keybindings

·4 min read · 0 reactions · 0 comments · 0 views
Show HN: A terminal spreadsheet editor with Vim keybindings

While speccing out this spreadsheet tool, I realized that I never had to think about the keybindings. It all just came naturally from Vim. Normal/insert/visual modes, hjkl navigation, dd/yy/p, :w, :q. The usual muscle memory works. It supports CSV/TSV import and export, and a native .cell format that preserves formulas. The formula engine handles SUM, AVERAGE, COUNT, MIN, MAX, and IF with range references. The codebase is a Cargo workspace: a pure cell-sheet-core library (no TUI dependency) and

Original article
GitHub
Read full at GitHub →
Full article excerpt tap to expand

cell 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 Headless mode For shell pipelines, Makefiles, and CI, cell can read from and write to a file without launching the TUI: cell sales.cell --read A1 # print one cell's computed value cell sales.cell --read B1:B10 # print a range as TSV cell sales.cell --eval '=SUM(B1:B10)' # evaluate a formula (no save) cell sales.cell --write A1 42 # set a cell, recalc, save in place cell sales.cell --write A1 42 --write B1 7 # batch multiple writes into one save cell sales.cell --write Total '=SUM(B:B)' --read Total # write a formula, then print it Cell references are 1-indexed and Excel-style (A1, AA10, A1:B3). The = prefix on --eval is optional. Writes whose value starts with = are stored as formulas; others are auto-typed (number vs text). Operations apply in a fixed order per invocation: writes → save → reads → evals. Errors print to stderr; the process exits non-zero on bad refs, parse errors, or missing files. 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 forward / backward n / N Next/previous match f<char> / F<char> Jump to next/prev cell in row starting with <char> ; / , Repeat last f/F (same / reversed direction) : 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. Comparison with sc-im sc-im is a battle-tested terminal spreadsheet built on the classic sc (Spreadsheet Calculator, 1981). It inspired cell's native .cell format. Here's how the two tools compare: cell sc-im Language / TUI Rust + ratatui C + ncurses Editing model True Vim modal editing (i → Insert, ESC → Normal) Vim-inspired navigation; = to enter a value, e/E to edit Formula syntax…

This excerpt is published under fair use for community discussion. Read the full article at GitHub.

Anonymous · no account needed
Share 𝕏 Facebook Reddit LinkedIn Email

Discussion

0 comments

More from GitHub