# sc-im: a vim-like spreadsheet for the terminal

> sc-im is an ncurses spreadsheet calculator with vim keybindings, CSV and XLSX import, and Lua scripting. It is built for people who already live in a terminal and want a grid there instead of a browser tab.

**andmarti1424/sc-im** — sc-im - Spreadsheet Calculator Improvised -- An ncurses spreadsheet program for terminal

- Repository: https://github.com/andmarti1424/sc-im
- Stars: 5,701 · Forks: 239
- Language: C
- License: NOASSERTION
- Published: 2026-09-22 · Updated: 2026-09-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/andmarti1424-sc-im

## What sc-im solves, and for whom

Spreadsheet work usually forces a context switch: out of the terminal, into a GUI application, into a file format you then have to export back to text. sc-im removes that switch. It is an ncurses program, so it renders the grid inside your existing terminal session and reads and writes files you can keep in the same directory tree as the rest of your work.

The audience is narrow and specific. If you edit CSV files by hand, compute column totals from log exports, or keep tabular notes next to code, sc-im fits. The README describes it as "an ncurses based, vim-like spreadsheet calculator", and the key table backs that up: h, j, k and l move the cursor, yy copies, p pastes, u undoes. Anyone with vim muscle memory can start moving around without reading a manual.

The project is a descendant of sc, the spreadsheet calculator whose original authors the README names as James Gosling and Mark Weiser, with later modifications by Chuck Martin. That lineage explains the design: a calculator first, a document editor second.

## Vim movements, undo, and the 702-column grid

The interaction model is modal. Pressing = inserts a numeric value into the current cell, \ inserts text, e edits a numeric value and E edits a string. Deletion is x. Commands are prefixed with a colon, so :w filename.sc saves in the native sc format and :q quits. Navigation accepts counts and coordinates: goab12 jumps to cell AB12.

Range operations reuse vim verbs. v starts a selection you extend with the cursor or hjkl, and p pastes a previously yanked cell or range. Structural edits are two-key sequences: ir inserts a row, ic inserts a column, dr deletes a row, dc deletes a column. Undo is u and redo is C-r, and the README lists UNDO / REDO as a headline feature rather than an afterthought.

The grid is large: 65,536 rows and 702 columns, with the README noting the row count can be expanded to 1,048,576 if wished. That ceiling is a compile-time property, not a setting you flip mid-session. Beyond the grid, the feature list includes sorting and filtering of rows, subtotals, cell shifting, clipboard support, and direct color support where you specify RGB values and can change screen colors at runtime. Cells can also carry bold, italic or underline formatting.

Wide character support covers English, Spanish, French, Italian, German, Portuguese, Russian, Ukrainian, Greek, Turkish, Czech, Japanese and Chinese, which matters because a terminal spreadsheet that mangles CJK widths is unusable for anyone working in those scripts.

## Installing sc-im and entering your first cell

The README documents a manual build rather than a package manager for most platforms. Required dependencies are ncurses (best compiled with wide character support), bison or yacc, gcc, make, and pkg-config plus which so make can do its job.

Start by editing the Makefile for your system and the optional features you want:

```bash
vim src/Makefile
```

Then build from the source directory:

```bash
make -C src
```

The optional install step places the sc-im binary on your system and needs a privileged user:

```bash
make -C src install
```

On macOS the README gives a Homebrew path instead: `brew install sc-im`. If you want Lua scripting support on OS X, it says to install Lua 5.1 first with `brew install lua@5.1` and then follow the manual instructions. Ubuntu users with XLSX import and export needs are pointed at a wiki page; other distributions and operating systems are pointed at the wiki pages generally.

Configuration lives in a file named scimrc, placed in the ~/.config/sc-im directory. The README gives this example:

```
set autocalc
set numeric
set numeric_decimal=0
set overlap
set xlsx_readformulas
```

Other configuration variables are listed in the help file linked from the README. Once running, press = to enter a number, \ to enter text, and :w filename.sc to save. Press :h for help inside the program.

## Where sc-im stops being the right tool

The README's own note is the first limitation worth reading. Dated 05/21/2025 alongside the v0.8.5 release, it states that this is a one person project with very little sponsoring, and that the maintainer wants to keep developing sc-im but finds it difficult to work as much as he would want. That is a direct statement about capacity, and it should shape how you depend on the project. The last push to the repository was on 2026-08-26, so development is ongoing, but the bus factor is one.

Format support is asymmetric. The README lists CSV, TAB delimited and XLSX import and export, plus ODS import and Markdown export. ODS export is not listed, so a workflow that needs to write ODS files has to route through another tool. XLSX support is split across several optional libraries: libxlsxreader for xls support, xlsxwriter for xlsx export, and libxml-2.0 plus libzip for xlsx and ods import. If any of those are missing at build time, the corresponding capability is simply absent, and the README does not document what error you see when you try to use it.

Collaboration is out of scope. Nothing in the README describes shared editing, change tracking, or a server component. If two people need to work in the same sheet at the same time, sc-im is the wrong tool and no configuration will fix that. Clipboard copy and paste depends on external programs (tmux, xclip or pbpaste), so in a bare terminal without them you should expect paste to behave differently than in a desktop spreadsheet.

## sc-im against a GUI spreadsheet, and against plain CSV tools

The obvious alternative is a GUI spreadsheet such as Excel or LibreOffice Calc. The difference is not feature count, it is where the data lives and how you drive it. A GUI spreadsheet owns a document format and renders it with a mouse; sc-im owns a terminal window and renders it with keystrokes. Excel gives you formulas across a much larger function library, pivot tables, charting and shared workbooks. sc-im gives you a grid that opens in the same terminal as your shell, saves to .sc, CSV or XLSX, and never takes focus away from the keyboard.

The second alternative is not a spreadsheet at all: awk, sort and column for one-off CSV arithmetic. Those are faster for a single sum over a pipe. They fall down when you need to look at the data, adjust a cell, recalculate, and look again, which is exactly the loop sc-im is built for. The README also notes sc-im can be used as a non-interactive calculator reading input from an external script, which covers part of that territory without leaving the tool.

For scripting inside the sheet, sc-im supports Lua, triggers, and C dynamically linked modules, and the README says external functions can be implemented in the language you prefer. GNUPlot interaction is listed for plots. That combination is unusual in a terminal spreadsheet, and it is the strongest argument for sc-im over a plain text editor with arithmetic.

## Licence, upgrades and what a version bump costs

The repository carries a LICENSE file at the top level, but the licence is reported as NOASSERTION, meaning the automated classifier could not match it to a known identifier. Read LICENSE directly before you redistribute sc-im or link against it; the README says nothing about licence terms, and nothing here should be read as legal advice.

Upgrade cost is tied to the build model. Releases are infrequent: v0.8.5 on 2025-05-21, v0.8.4 on 2024-08-16, and v0.8.3 on 2023-01-12. Because there is no package manager step for most platforms in the README, upgrading usually means pulling the source and running make -C src again, which re-evaluates whatever you set in src/Makefile. If you enabled Lua, xlsxwriter, or the xlsx/ods import libraries, those flags have to survive the upgrade. Keeping a copy of your edited Makefile and your ~/.config/sc-im/scimrc outside the checkout is the practical mitigation, since the scimrc keys (autocalc, numeric, numeric_decimal, overlap, xlsx_readformulas) are yours, not the project's.

The repository does ship a tests/ directory and a CHANGES file, so a version bump is at least inspectable before you take it. The README also points to KNOWN_ISSUES and BUGS at the top level, which is where to look first when behaviour surprises you.

## Conclusion

Adopt sc-im if your work is text-shaped: CSV pipelines, quick column arithmetic, or editing markdown tables without leaving vim. Do not adopt it as a replacement for a collaborative workbook, and do not expect ODS export, since the README lists ODS import only. Before committing, clone the repository and run make -C src against your ncurses build, then confirm the optional libraries you need (xlsxwriter, libxml-2.0, libzip, lua) are present, because each one is a compile-time decision in src/Makefile rather than a runtime plugin.

## FAQ

### What is sc-im?

sc-im is Spreadsheet Calculator Improvised, an ncurses based, vim-like spreadsheet calculator for the terminal. It is based on sc, whose original authors the README names as James Gosling and Mark Weiser, with later modifications by Chuck Martin.

### How does sc-im compare to Excel?

sc-im runs inside a terminal and is driven by vim-style keystrokes, while Excel is a GUI application with a document format and a mouse-driven interface. sc-im imports and exports CSV, TAB delimited and XLSX, imports ODS, and exports Markdown, but the README does not describe shared workbooks, change tracking or pivot tables.

### What is an alternative to sc-im?

A GUI spreadsheet such as Excel or LibreOffice Calc is the direct alternative if you need a mouse, a large function library or shared files. For one-off arithmetic over a CSV, awk and sort in a pipe do the job without opening a grid at all.

## Sources

- [andmarti1424/sc-im on GitHub](https://github.com/andmarti1424/sc-im)
- [Issues](https://github.com/andmarti1424/sc-im/issues)
- [README](https://github.com/andmarti1424/sc-im/blob/main/README.md)
- [Releases](https://github.com/andmarti1424/sc-im/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/andmarti1424-sc-im
