
Neovim マークダウンプレビュー - markdown-preview.nvim を選んだ理由
Neovimでマークダウンをプレビューするプラグインを導入しました。
Redditでの議論も参考にしながら検討しました。
検討したプラグイン
1. markview.nvim
Neovimのバッファ内でマークダウンをレンダリングするプラグイン。 見出しやリスト、コードブロックが装飾されて表示されます。
特徴:
- バッファ内でリアルタイムレンダリング
- 追加のブラウザやツールが不要
- Neovimの画面だけで完結
2. markdown-preview.nvim
ブラウザでマークダウンをプレビューするプラグイン。 ローカルサーバーを立ち上げて、ブラウザで確認できます。
特徴:
- ブラウザでプレビュー
- リアルタイム同期
- Mermaid、KaTeX、PlantUMLなどに対応
選んだのは markdown-preview.nvim
いくつか試した結果、markdown-preview.nvim を選びました。
選んだ理由
1. エディタの見た目が変わらない
markview.nvimはバッファ内でレンダリングするため、Neovimの画面自体が装飾されます。
これに違和感がありました。
- ソースコードとして編集しているのに、見た目が変わる
- 「生のマークダウン」を見ながら編集したい
- 装飾が入ると、記法の確認がしづらい
markdown-preview.nvimなら、エディタはそのまま。 「編集画面」と「プレビュー画面」が明確に分離されていて、頭の切り替えがしやすいです。
2. Mermaid などの高度な表示に対応
これが決め手でした。
markdown-preview.nvimは以下に対応しています:
- Mermaid — フローチャート、シーケンス図、ガントチャートなど
- KaTeX — 数式
- PlantUML — UML図
- chart.js — グラフ
技術文書を書くときに、Mermaidでフローチャートを描くことが多いので、これは必須でした。
graph LR
A[ユーザー] --> B[アプリ]
B --> C[データベース]
C --> B
B --> A
こういった図がブラウザでそのままレンダリングされます。
markview.nvimでもMermaid対応はあるようですが、ブラウザでの表示に比べると制限があります。
インストールと設定
lazy.nvimを使っている場合:
{
"iamcco/markdown-preview.nvim",
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
ft = { "markdown" },
build = function() vim.fn["mkdp#util#install"]() end,
}
基本的な使い方
:MarkdownPreview " プレビュー開始
:MarkdownPreviewStop " プレビュー停止
:MarkdownPreviewToggle " トグル
コマンドを実行すると、自動的にブラウザが開いてプレビューが表示されます。
キーマップ設定
vim.keymap.set('n', '<Space>mp', ':MarkdownPreviewToggle<CR>', { desc = 'Toggle Markdown Preview' })
<Space>mp でプレビューをトグルできるようにしています。
オプション設定
-- プレビューを開くブラウザ(デフォルト: システムのデフォルトブラウザ)
vim.g.mkdp_browser = ''
-- プレビューページのテーマ(dark / light)
vim.g.mkdp_theme = 'dark'
-- 自動スクロール同期
vim.g.mkdp_preview_options = {
sync_scroll_type = 'middle',
}
-- ファイル保存時に自動更新
vim.g.mkdp_refresh_slow = 0
-- プレビューを開いたときにカーソル位置に自動スクロール
vim.g.mkdp_auto_start = 0
vim.g.mkdp_auto_close = 1
使用感
良い点
- リアルタイム同期 — 編集すると即座にブラウザに反映
- スクロール同期 — エディタのカーソル位置とブラウザが連動
- Mermaid対応 — フローチャートがきれいにレンダリング
- ダークテーマ — 目に優しい
気になる点
- ブラウザが必要 — 当たり前だけど、ブラウザが立ち上がる
- リソース消費 — サーバーが常駐するので、多少メモリを使う
とはいえ、常時使うわけではないので問題ありません。 READMEを書くときや、技術文書を整理するときに使っています。
markview.nvim が向いている人
markview.nvimも素晴らしいプラグインです。以下のような人には向いていると思います:
- バッファ内で完結させたい
- ブラウザを開きたくない
- シンプルなマークダウン(見出し、リスト、コードブロック程度)がメイン
- Neovimの画面が装飾されても気にならない
「ターミナルから出たくない」という人には、markview.nvimの方が合うかもしれません。
まとめ
| プラグイン | 表示場所 | Mermaid対応 | エディタの見た目 |
|---|---|---|---|
| markview.nvim | バッファ内 | 限定的 | 変わる |
| markdown-preview.nvim | ブラウザ | フル対応 | 変わらない |
markdown-preview.nvim を選んだ理由:
- エディタの見た目が変わらない(ソースコードとして編集したい)
- Mermaidなどの高度な表示にフル対応
どちらが良いかは好みの問題ですが、私は「編集画面」と「プレビュー画面」を分けたい派でした。