A terminal-based Markdown viewer written in Rust. Renders Markdown files with syntax highlighting, styled formatting, and interactive navigation.
![]() |
![]() |
![]() |
![]() |
![]() |
/ to search with regex support, n/N to jump between matcheso to browse and jump to any heading: to filter headings by name[ / ] to jump between sectionsBackspace to go backf to list all links, type a number to open in browserY copies full document, c copies nearest code block$\alpha + \beta$ renders as α + β--slides treats --- as slide separators for terminal presentationscurl ... | mdtermmdterm a.md b.md, switch with Tab / Shift+Tab--export html outputs themed, self-contained HTMLt, or set via --theme / config filel for code blocks~/.config/mdterm/config.toml for persistent preferencesRequires Rust 1.85+ (edition 2024).
cargo install --path .
mdterm README.md # view a file
mdterm a.md b.md # multiple files (Tab to switch)
cat README.md | mdterm # read from stdin
mdterm --slides deck.md # slide mode
mdterm --export html doc.md > out.html # export to HTML
mdterm --theme light README.md # light theme
mdterm -l README.md # line numbers in code blocks
When piped, mdterm outputs styled text without the interactive viewer:
mdterm README.md | less -R
| Key | Action |
|---|---|
j / Down |
Scroll down one line |
k / Up |
Scroll up one line |
Space / Page Down |
Page down |
b / Page Up |
Page up |
d / u (or Ctrl+d / Ctrl+u) |
Half-page down / up |
g / Home |
Jump to top |
G / End |
Jump to bottom |
[ / ] |
Previous / next heading |
Backspace |
Go back (after following a local file link) |
| Mouse scroll | Scroll up/down |
| Key | Action |
|---|---|
/ |
Open search (supports regex) |
Enter |
Execute search |
n / N |
Next / previous match |
Esc |
Clear search |
| Key | Action |
|---|---|
o |
Table of contents overlay |
: |
Fuzzy heading search |
f |
Link picker (open URLs / follow local links) |
t |
Toggle dark/light theme |
l |
Toggle line numbers in code blocks |
| Click heading | Copy heading section to clipboard |
| Click list | Copy entire list to clipboard |
| Click code block | Copy code block to clipboard |
Y |
Copy entire document to clipboard |
c |
Copy nearest code block to clipboard |
Tab / Shift+Tab |
Switch between files |
F1 |
Help screen |
q / Ctrl+C |
Quit |
--slides)| Key | Action |
|---|---|
Right / Space / l / j / Down / Page Down |
Next slide |
Left / b / h / k / Up / Page Up |
Previous slide |
g / Home |
First slide |
G / End |
Last slide |
Create ~/.config/mdterm/config.toml:
theme = "dark" # "dark" or "light"
line_numbers = false # show line numbers in code blocks
width = 0 # display width (0 = auto)
CLI flags override config file settings.
mdterm [OPTIONS] [FILES]...
Arguments:
[FILES]... Markdown file(s) to view
Options:
-T, --theme <THEME> Theme: dark or light
-w, --width <WIDTH> Display width override (0 = auto)
-s, --slides Slide mode (--- as slide separators)
-l, --line-numbers Show line numbers in code blocks
--export <FORMAT> Export format (html)
--no-color Disable colors
-h, --help Print help
-V, --version Print version
cargo build --release

MIT
$ claude mcp add mdterm \
-- python -m otcore.mcp_server <graph>