Table TUI tt is a Terminal User Interface (TUI) for editing Microsoft Excel
files, inspired by Vim key bindings. It deviates from vim in a couple of places
(see the Key Bindings section).
- Create, open and save Excel files (.xlsx)
- Browse, Create and Delete Excel Sheets
- Vim-like navigation and editing
- Basic Search and replace
- Undo/Redo functionality
- Copy and paste
- Merging and Unmerging
- Row and column selection
- Block selection
- Insert rows and columns
- Basic Formula Support
Get the binary via go install
go install github.com/olyro/tt@latestor check out the repository and build it from source
go build -o tt# Create new Excel file
tt
# Open existing Excel file
tt file.xlsx| Key | Description |
|---|---|
h, ←, b |
Move left |
j, ↓, w |
Move down |
k, ↑ |
Move up |
l, → |
Move right |
0 |
Go to row beginning |
$ |
Go to row end |
gg |
Go to first row |
G |
Go to last row |
[Num]G |
Jump to row [Num] |
Ctrl+d |
Move page down |
Ctrl+u |
Move page up |
| Key | Description |
|---|---|
i |
Edit current cell (cursor at beginning) |
a |
Edit current cell (cursor at end) |
c |
Change cell content (clear and edit) |
x |
Clears the selected cells |
d |
Deletes the selected rows or columns, in case of block and cell select it clears the selected cells |
Enter |
Confirm input |
Esc |
Cancel editing / return to normal mode |
| Key | Description |
|---|---|
I |
Insert column before current position |
A |
Insert column after current position |
O |
Insert row before current position |
o |
Insert row after current position |
[Num]I/A/O/o |
Insert multiple rows/columns |
| Key | Description |
|---|---|
v |
Start column selection |
V |
Start row selection |
Ctrl+v |
Start block selection |
Merged Cells are highlighted, only the top left value is shown.
| Key | Description |
|---|---|
m |
Merge block selection (undoing restores old values) |
M |
Unmerge block selection (does not restore old values) |
| Key | Description |
|---|---|
y |
Copy current selection |
p |
Paste copied content |
| Key | Description |
|---|---|
/ |
Start search |
n |
Next search result |
N |
Previous search result |
| Key | Description |
|---|---|
: |
Open command mode |
| Command | Short | Description |
|---|---|---|
:sheet [name] |
:b |
Switch to sheet (shows current if no name) |
:nextSheet |
:bn |
Switch to next sheet |
:previousSheet |
:bp |
Switch to previous sheet |
:deleteSheet [name] |
:bd |
Delete sheet (current sheet if no name) |
:addSheet <name> |
:badd |
Create new sheet with given name |
:columnWidth [width] |
:cw |
Set column width (shows current if no width) |
:write [filename] |
:w |
Save file (save as filename if provided) |
:quit |
:q |
Exit program |
This only applies to actions on a per sheet basis (it does not track deleting sheets or creating them).
| Key | Description |
|---|---|
u |
Undo last action |
Ctrl+r |
Redo undone action |
| Key | Description |
|---|---|
Ctrl+c |
Exit program |
Esc |
Return to normal mode |
Most navigation commands support number prefixes:
5j- Move 5 rows down10l- Move 10 columns right3I- Insert 3 columns
The program has different modes:
- NORMAL: Standard navigation mode
- COMMAND: Command input (with
:) - SEARCH: Search mode (with
/) - INPUT: Cell editing
You can see the current cell type by executing :type or :t. Formulas have to
be start with =. Numbers are automatically recognized. To force a string
prefix your input with '.
Built on top of these great projects:
- Bubble Tea - TUI Framework
- Excelize - Excel Library
- Bubbles - TUI Components
- Lipgloss - Styling
This project is licensed under the MIT License.