Markdown CLI viewer with VI keybindings

Source: github.com
77 points by taf2 a day ago on hackernews | 35 comments

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. preview-mdvi

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 (![alt](...)) 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 remote http:// / https:// image sources are supported.
  • On macOS, terminal-native image protocols can trigger an "Allow Terminal-Initiated Display?" prompt. Use --image-protocol halfblocks if 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 line
  • k / Up: scroll up one line
  • Ctrl-d: half-page down
  • Ctrl-u: half-page up
  • PageDown: full-page down
  • PageUp: full-page up
  • Ctrl-f: full-page down (Vim-style)
  • Ctrl-b: full-page up (Vim-style)
  • g / Home: jump to top
  • G / End: jump to bottom
  • r: reload file from disk
  • /: start search
  • n: next search match
  • N: previous search match
  • ?: toggle help line
  • q: 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 warnings

License

MIT