Neovim マークダウンプレビュー - markdown-preview.nvim を選んだ理由

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 を選んだ理由:

  1. エディタの見た目が変わらない(ソースコードとして編集したい)
  2. Mermaidなどの高度な表示にフル対応

どちらが良いかは好みの問題ですが、私は「編集画面」と「プレビュー画面」を分けたい派でした。


参考