
2026/02/11 2:51
## VI キーバインディング対応のMarkdown CLIビューア 標準的な **VI** ナビゲーションキー(`h`, `j`, `k`, `l` など)でスクロールや移動ができる、軽量なコマンドライン Markdown ビューアです。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
mdvi は Rust で書かれた軽量なターミナルベースの Markdown ビューワーです。 crossterm と ratatui を使用してドキュメントをフルスクリーンテキストユーザーインターフェイス(TUI)としてレンダリングし、Vim スタイルのナビゲーション(
j/k、Ctrl‑d/u、PageUp/Down など)が可能です。
レンダラーは Markdown 構文を完全にサポートします:見出し、リスト(タスクリスト含む)、引用符、インライン画像(Markdown と HTML
<img> タグ)、言語タグ付きシンタックスハイライト付きのコードブロック、リンク、テーブル、脚注、および強調/太字/打ち消し線。
画像は
--image-protocol で選択できる複数のバックエンド(auto、halfblocks、sixel、kitty、iterm2)を介して表示できます。これらはローカルファイル、file:// URL、およびリモート HTTP(S) ソースに対して機能します。macOS ではターミナルネイティブプロトコルを使用すると「Allow Terminal‑Initiated Display?」というダイアログが表示される場合があります。このダイアログを避けるには --image-protocol halfblocks を選択してください。
その他の機能としては、ソースファイルが変更されたときにライブリロード(
r)や行番号指定で開始するフラグ(--line)があります。インストールは簡単です:Homebrew (brew tap taf2/tap && brew install mdvi) かソースからビルド、あるいはインストール不要で直接実行できます。
Rust で書かれたため端末制御が正確で、大きなファイルでも高性能を発揮し、単一の静的バイナリ配布を実現しています。mdvi は TUI/Markdown エコシステムにおけるベストプラクティスに従っています。開発用コマンドは
cargo test、cargo fmt、cargo clippy -- -D warnings です。このプロジェクトは MIT ライセンスでリリースされています。本文
mdvi
mdvi は Vim スタイルの操作で Markdown を閲覧できる端末向けビューアです。高速なキーボード操作、読みやすいタイポグラフィ、そして大きなファイルでも予測可能な振る舞いを備えた、洗練されたフルスクリーン TUI(テキストユーザーインターフェース)として Markdown をレンダリングします。
主な機能
- フルスクリーン端末ビューア(crossterm + ratatui)
- Vim スタイルのナビゲーションコントロール
- カーソルと行:列位置をステータスバーに表示
- pulldown-cmark による高品質 Markdown レンダリング
サポート対象要素:
| 要素 | 説明 |
|---|---|
| 見出し | , , … |
| 箇条書き・チェックリスト | , , |
| 引用ブロック | |
| 画像 | インライン Markdown () と HTML タグ |
| コードブロック & インラインコード | 言語タグ付きの構文強調表示されたフェンス付きコードブロック(例: ) |
| リンク、表、脚注、斜体/太字/打ち消し線 | 標準 Markdown |
画像バックエンドは
で設定可能です(--image-protocol
, auto
, halfblocks
, sixel
, kitty
)。iterm2
ファイルがディスク上で変更された場合にリロード (
) ができます。r
を指定すると特定行から開始します。標準的な端末キー(矢印, PageUp/PageDown, Home/End)にも対応しています。--line
備考
- ローカル、
、およびリモートのfile://
/http://
画像ソースがサポートされています。https:// - macOS 上では、端末ネイティブな画像プロトコルが「Terminal‑Initiated Display?」というダイアログを表示する場合があります。その際は
を使用してダイアログを回避してください。--image-protocol halfblocks - 言語タグ付きのフェンスコードブロック(例:
)は構文ハイライト付きでレンダリングされます。rust
インストール
Homebrew (tap)
brew tap taf2/tap brew install mdvi
ソースからビルド / インストール不要で実行
# リポジトリをクローン git clone https://github.com/taf2/mdvi.git cd mdvi # ビルドして実行 cargo build --release ./target/release/mdvi <file.md>
使い方例
mdvi docs/spec.md mdvi --line 120 CHANGELOG.md mdvi --image-protocol halfblocks README.md
ナビゲーション
| キー | アクション |
|---|---|
/ 下矢印 | 行単位で下へスクロール |
/ 上矢印 | 行単位で上へスクロール |
| 半ページ下へ |
| 半ページ上へ |
| PageDown | ページ単位で下へ |
| PageUp | ページ単位で上へ |
| Vim スタイルのページダウン |
| Vim スタイルのページアップ |
/ Home | 先頭にジャンプ |
/ End | 最後尾にジャンプ |
| ファイルをディスクからリロード |
| 検索開始 |
| 次の検索結果へ |
| 前の検索結果へ |
| ヘルプ行の表示/非表示切替 |
| 終了 |
Rust を選んだ理由
- 端末制御が正確にできる
- 大きなファイルでも優れたパフォーマンスを発揮
- 単一の静的バイナリで配布可能
- TUI と Markdown パーシングに成熟したエコシステム
開発
cargo test cargo fmt cargo clippy -- -D warnings
ライセンス: MIT