Show HN: A terminal spreadsheet editor with Vim keybindings

· devtools · Source ↗

TLDR

  • cell is a Rust terminal spreadsheet with full Vim modal editing, CSV/TSV/native .cell format support, and Excel-compatible formulas.

Key Takeaways

  • Install via cargo install cell-sheet-tui or pre-built binaries for Linux, macOS, and Windows (x86_64 + aarch64).
  • Supports normal/insert/visual/command modes with Vim keybindings: gg/G, dd/yy, Ctrl-D/Ctrl-U, / search, :sort, and more.
  • Formulas use Excel-compatible syntax (=SUM(A1:A10), =IF(A1>100,"high","low")); ODF spec compliance is tracked for future expansion.
  • Native .cell format preserves formulas as plain text; CSV export flattens them with a warning, mirroring sc-im conventions.
  • Architecture splits cell-sheet-core (data model, formula engine, file I/O) from cell-sheet-tui (Ratatui rendering, event loop), so the core is testable headlessly.

Hacker News Comment Review

  • Commenters broadly agree on the most pressing gap: xlsx and ODF read/write support. Without it, cell stays out of reach for workflows that touch real-world spreadsheet files shared with others.
  • CSV power users working with xan and Neovim see cell as a natural complement for visual editing, but want custom delimiter support (e.g. pipe |) to cover edge cases that plain CSV cannot.
  • The scripting story drew specific feedback: sc-im‘s Lua integration is seen as the benchmark, but its inability to pass cell ranges to external scripts is a known bottleneck. Commenters want cell to solve this when scripting lands.

Notable Comments

  • @ximm: Asks whether formula drag-fill with mixed references ($A2 + B$1) is supported, citing it as a core Excel productivity pattern.
  • @k2enemy: Flags sc-im’s Lua limitation explicitly: passing only single-cell values, not ranges, cripples external scripting utility.
  • @WillAdams: Calls for a category-axis model (Javelin/Lotus Improv/Quantrix style) instead of A1 grid – a minority but structurally interesting position.

Original | Discuss on HN