mdvi
mdvi is a terminal markdown viewer with Vim-style navigation.
It renders markdown into a polished full-screen TUI with fast keyboard navigation, clear typography, and predictable behavior for large files.

Features
- Full-screen terminal viewer (
crossterm+ratatui) - Vim-style navigation controls
- High-quality markdown rendering via
pulldown-cmark - Support for:
- headings
- lists and task lists
- blockquotes
- inline markdown images (
) and HTML<img ...>tags - code blocks and inline code
- links, tables, footnotes, emphasis/strong/strikethrough
- Configurable image backend via
--image-protocol(auto,halfblocks,sixel,kitty,iterm2) - Live reload (
r) when the file changes on disk - Start at specific line (
--line) - Works with standard terminal keys (arrows, page up/down, home/end)
Notes:
- Local,
file://, and remotehttp:///https://image sources are supported. - On macOS, terminal-native image protocols can trigger an "Allow Terminal-Initiated Display?" prompt.
Use
--image-protocol halfblocksif you want image rendering without that dialog.
Install
Homebrew (tap)
brew tap taf2/tap brew install mdvi
From source
Run without install
Usage
Examples:
mdvi docs/spec.md mdvi --line 120 CHANGELOG.md mdvi --image-protocol halfblocks README.md
Navigation
j/Down: scroll down one linek/Up: scroll up one lineCtrl-d: half-page downCtrl-u: half-page upPageDown: full-page downPageUp: full-page upCtrl-f: full-page down (Vim-style)Ctrl-b: full-page up (Vim-style)g/Home: jump to topG/End: jump to bottomr: reload file from disk/: start searchn: next search matchN: previous search match?: toggle help lineq: quit
Why Rust?
Rust is a strong fit for a serious CLI viewer:
- precise terminal control
- excellent performance for large files
- single static binary distribution
- mature ecosystem for TUI and markdown parsing
Development
cargo test
cargo fmt
cargo clippy -- -D warningsLicense
MIT