Editing markdown tables can be a drag. mdtt makes it easier with a slick TUI for terminal use and vim-style keybindings. It supports output to stdout and in-place file editing.
To install mdtt using Go, run:
go install github.com/szktkfm/mdtt/cmd/mdtt@latestOr, download it:
To start editing your markdown table, simply run:
mdtt filename.mdUpon launching, mdtt will display the tables from your markdown file in a TUI.
While editing, you can utilize the following vim-like keybindings to navigate and modify your tables efficiently:
- Navigation: Use
hjklfor left, down, up, and right movements. - Editing: Press
ito switch to insert mode and edit cell content, exit insert mode withescorctrl+c. - Row and Column Manipulation:
- Add a new row or colymn with
o,vo. - Delete the current row or column with
dd,vd. - Copy the current row or column with
yy,vy. - Paste a copied row or column with
p. - Clear the current cell with
x. - Copy the current cell with
y..
- Add a new row or colymn with
For direct editing and saving changes to the same file, use:
mdtt -i filename.mdYou can use piping with mdtt as shown below:
pbpaste | mdtt | pbcopyTo create a new table without an existing file, run mdtt without any arguments:
mdttWhen multiple tables are present, you will be prompted to select the table you wish to edit.
Press I to open the cell in the text editor set as your $EDITOR, allowing you to edit the cell directly within your chosen editor.
| Key | Action |
|---|---|
โ/k |
Move up |
โ/j |
Move down |
โ/h |
Move left |
โ/l |
Move right |
b/pgup |
Page up |
f/pgdn |
Page down |
ctrl+u |
Half page up |
ctrl+d |
Half page down |
g/home |
Go to start |
G/end |
Go to end |
i |
Insert mode |
I |
Open $EDITOR |
esc/ctrl+c |
Normal mode |
o/vo |
Add row/column |
dd/vd |
Delete row/column |
x |
Clear cell |
yy/vy |
Copy row/column |
y. |
Copy cell |
p |
Paste |
q |
Quit |
? |
Toggle help |
- Vim-like Keybindings: Navigate and edit tables using familiar vim commands.
- Inplace Editing: Directly modify your original markdown files with the -i option.
- Piping Support
- Multi-Table Selection
- External Editor Integration: Delegate cell editing to an external editor specified by your $EDITOR environment variable.
- HTML in Cells: Enable rich content formatting by using HTML directly within table cells.
This project, mdtt, was inspired by mdvtbl, a tool that reads markdown from stdin, allows for table editing in a web view, and outputs to stdout.







