maaslalani/sheets

Terminal based spreadsheet tool

Go

2,314

44 commits

updated Jul 18, 2026

See the code

README

Sheets

Spreadsheets in your terminal.


demo


Command Line Interface

Launch the TUI

> sheets budget.csv

Read from stdin:

> sheets <<< ID,Name,Age
1,Alice,24
2,Bob,32
3,Charlie,26

Read a specific cell:

> sheets budget.csv B9
2760

Or, range:

> sheets budget.csv B1:B3
1200
950
810

Modify a cell:

> sheets budget.csv B7=10 B8=20
  • h, j, k, l: Move the active cell
  • gg, G, 5G, gB9: Jump to the top, bottom, a row number, or a specific cell
  • 0, ^, $: Jump to the first column, first non-empty column, or last non-empty column in the row
  • H, M, L: Jump to the top, middle, or bottom visible row
  • ctrl+u, ctrl+d: Move half a page up or down
  • zt, zz, zb,: Align the current row to the top, middle, or bottom of the window
  • /, ?: Search forward or backward
  • n, N: Repeat the last search
  • ma, 'a: Set a mark and jump back to it later
  • ctrl+o, ctrl+i: Move backward or forward through the jump list
  • q, ctrl+c: Quit

Editing & Selection

  • i, I, c: Edit the current cell, edit from the start, or clear the cell and edit
  • ESC: Leave insert, visual, or command mode
  • enter, tab, shift+tab: In insert mode, commit and move down, right, or left
  • ctrl+n, ctrl+p: In insert mode, commit and move down or up
  • o, O: Insert a row below or above and start editing
  • v, V: Start a visual selection or row selection
  • y, yy: Copy the current cell, or yank the current row(s)
  • x, p: Cut the current cell or selection, and paste the current register
  • dd: Delete the current row
  • u, ctrl+r, U: Undo and redo
  • .: Repeat the last change

Visual Mode

  • =: In visual mode, insert a formula after the selected range =|(B1:B8).

Command Mode

Press : to open the command prompt, then use commands such as:

  • :w to save
  • :w path.csv to save to a new file
  • :e path.csv to open another CSV
  • :q or :wq to quit
  • :goto B9 or :B9 to jump to a cell

Configuration

Keybindings can be customized via a Helix-style TOML config file at ~/.config/sheets/config.toml (or $XDG_CONFIG_HOME/sheets/config.toml).

[keys.normal]
"C-c" = "quit"
"C-s" = "command_prompt"

[keys.insert]
"C-c" = "commit_down"

[keys.select]
"d" = "cut_selection"

Each section maps a key to an action name. Only specify the bindings you want to override — unset keys keep their defaults. Set a key to "nop" to disable it.

Available actions
ActionDescription
move_leftMove one cell left
move_rightMove one cell right
move_upMove one cell up
move_downMove one cell down
move_to_first_colJump to first column
move_to_first_nonempty_colJump to first non-empty column
move_to_last_nonempty_colJump to last non-empty column
move_to_window_topJump to top visible row
move_to_window_middleJump to middle visible row
move_to_window_bottomJump to bottom visible row
scroll_half_upScroll half page up
scroll_half_downScroll half page down
goto_pendingStart goto cell input
goto_bottomJump to last row
jump_forwardJump list forward
jump_backwardJump list backward

Editing

ActionDescription
enter_insertEdit current cell
enter_insert_startEdit from start of cell
change_cellClear cell and edit
delete_pendingStart delete row
open_col_afterInsert column after and edit
open_col_beforeInsert column before and edit
open_row_belowInsert row below and edit
open_row_aboveInsert row above and edit
yankCopy cell
cutCut cell
pastePaste
undoUndo
redoRedo
repeat_changeRepeat last change
toggle_boldToggle bold formatting

Mode

ActionDescription
quitQuit
command_promptOpen command prompt
search_forwardSearch forward
search_backwardSearch backward
search_nextNext search match
search_prevPrevious search match
enter_selectEnter visual select
enter_row_selectEnter row select
register_pendingSelect register
mark_setSet mark
mark_jumpJump to mark
mark_jump_exactJump to mark (exact)
align_pendingStart alignment command

Select mode

ActionDescription
copy_selectionCopy selection
copy_selection_refCopy selection as reference
cut_selectionCut selection
delete_selectionClear selection without affecting clipboard
formula_from_selectionInsert formula from selection
toggle_row_selectToggle row selection
toggle_selection_boldToggle bold on selection

Insert mode

ActionDescription
commit_downCommit and move down
commit_rightCommit and move right
commit_leftCommit and move left
commit_upCommit and move up
cursor_leftMove cursor left
cursor_rightMove cursor right
cursor_homeMove cursor to start
cursor_endMove cursor to end
delete_at_cursorDelete at cursor
delete_before_cursorDelete before cursor
delete_to_startDelete to start
delete_to_endDelete to end
delete_word_beforeDelete word before cursor
insert_spaceInsert space

Key notation: C-x for Ctrl+x, S-tab for Shift+Tab, ret for Enter, space, backspace, del, esc, up/down/left/right, home/end, tab. Literal characters like h, j, :, / are written as-is.

Installation

Install with Homebrew on macOS or Linux:

brew install sheets

Or install with Go:

go install github.com/maaslalani/sheets@main

Or download a binary from the releases.

License

MIT

Feedback

I'd love to hear your feedback on improving sheets.

Feel free to reach out via:


zzz

maaslalani/sheets

Terminal based spreadsheet tool

Go

2,314

44 commits

updated Jul 18, 2026

See the code

README

Sheets

Spreadsheets in your terminal.


demo


Command Line Interface

Launch the TUI

> sheets budget.csv

Read from stdin:

> sheets <<< ID,Name,Age
1,Alice,24
2,Bob,32
3,Charlie,26

Read a specific cell:

> sheets budget.csv B9
2760

Or, range:

> sheets budget.csv B1:B3
1200
950
810

Modify a cell:

> sheets budget.csv B7=10 B8=20
  • h, j, k, l: Move the active cell
  • gg, G, 5G, gB9: Jump to the top, bottom, a row number, or a specific cell
  • 0, ^, $: Jump to the first column, first non-empty column, or last non-empty column in the row
  • H, M, L: Jump to the top, middle, or bottom visible row
  • ctrl+u, ctrl+d: Move half a page up or down
  • zt, zz, zb,: Align the current row to the top, middle, or bottom of the window
  • /, ?: Search forward or backward
  • n, N: Repeat the last search
  • ma, 'a: Set a mark and jump back to it later
  • ctrl+o, ctrl+i: Move backward or forward through the jump list
  • q, ctrl+c: Quit

Editing & Selection

  • i, I, c: Edit the current cell, edit from the start, or clear the cell and edit
  • ESC: Leave insert, visual, or command mode
  • enter, tab, shift+tab: In insert mode, commit and move down, right, or left
  • ctrl+n, ctrl+p: In insert mode, commit and move down or up
  • o, O: Insert a row below or above and start editing
  • v, V: Start a visual selection or row selection
  • y, yy: Copy the current cell, or yank the current row(s)
  • x, p: Cut the current cell or selection, and paste the current register
  • dd: Delete the current row
  • u, ctrl+r, U: Undo and redo
  • .: Repeat the last change

Visual Mode

  • =: In visual mode, insert a formula after the selected range =|(B1:B8).

Command Mode

Press : to open the command prompt, then use commands such as:

  • :w to save
  • :w path.csv to save to a new file
  • :e path.csv to open another CSV
  • :q or :wq to quit
  • :goto B9 or :B9 to jump to a cell

Configuration

Keybindings can be customized via a Helix-style TOML config file at ~/.config/sheets/config.toml (or $XDG_CONFIG_HOME/sheets/config.toml).

[keys.normal]
"C-c" = "quit"
"C-s" = "command_prompt"

[keys.insert]
"C-c" = "commit_down"

[keys.select]
"d" = "cut_selection"

Each section maps a key to an action name. Only specify the bindings you want to override — unset keys keep their defaults. Set a key to "nop" to disable it.

Available actions
ActionDescription
move_leftMove one cell left
move_rightMove one cell right
move_upMove one cell up
move_downMove one cell down
move_to_first_colJump to first column
move_to_first_nonempty_colJump to first non-empty column
move_to_last_nonempty_colJump to last non-empty column
move_to_window_topJump to top visible row
move_to_window_middleJump to middle visible row
move_to_window_bottomJump to bottom visible row
scroll_half_upScroll half page up
scroll_half_downScroll half page down
goto_pendingStart goto cell input
goto_bottomJump to last row
jump_forwardJump list forward
jump_backwardJump list backward

Editing

ActionDescription
enter_insertEdit current cell
enter_insert_startEdit from start of cell
change_cellClear cell and edit
delete_pendingStart delete row
open_col_afterInsert column after and edit
open_col_beforeInsert column before and edit
open_row_belowInsert row below and edit
open_row_aboveInsert row above and edit
yankCopy cell
cutCut cell
pastePaste
undoUndo
redoRedo
repeat_changeRepeat last change
toggle_boldToggle bold formatting

Mode

ActionDescription
quitQuit
command_promptOpen command prompt
search_forwardSearch forward
search_backwardSearch backward
search_nextNext search match
search_prevPrevious search match
enter_selectEnter visual select
enter_row_selectEnter row select
register_pendingSelect register
mark_setSet mark
mark_jumpJump to mark
mark_jump_exactJump to mark (exact)
align_pendingStart alignment command

Select mode

ActionDescription
copy_selectionCopy selection
copy_selection_refCopy selection as reference
cut_selectionCut selection
delete_selectionClear selection without affecting clipboard
formula_from_selectionInsert formula from selection
toggle_row_selectToggle row selection
toggle_selection_boldToggle bold on selection

Insert mode

ActionDescription
commit_downCommit and move down
commit_rightCommit and move right
commit_leftCommit and move left
commit_upCommit and move up
cursor_leftMove cursor left
cursor_rightMove cursor right
cursor_homeMove cursor to start
cursor_endMove cursor to end
delete_at_cursorDelete at cursor
delete_before_cursorDelete before cursor
delete_to_startDelete to start
delete_to_endDelete to end
delete_word_beforeDelete word before cursor
insert_spaceInsert space

Key notation: C-x for Ctrl+x, S-tab for Shift+Tab, ret for Enter, space, backspace, del, esc, up/down/left/right, home/end, tab. Literal characters like h, j, :, / are written as-is.

Installation

Install with Homebrew on macOS or Linux:

brew install sheets

Or install with Go:

go install github.com/maaslalani/sheets@main

Or download a binary from the releases.

License

MIT

Feedback

I'd love to hear your feedback on improving sheets.

Feel free to reach out via:


zzz

Project health

Latest release

v0.3.0 · Jul 16, 2026

Releases this year

3

Significant stargazers

(top 24 of 69)

Christian Muehlhaeuser

3,417 followers · starred Apr 2026

Ayman Bagabas

613 followers · starred Apr 2026

Paolo Barbolini

186 followers · starred Apr 2026

sideshowbarker

788 followers · starred Apr 2026