(これは vim駅伝 2026-02-27 の記事です)
以前作った memd-cli をNeovimから使いやすくしたくて薄いプラグインを書きました。
主な機能
- Neovimバッファから直接プレビュー起動
- ファイル保存時の自動リロード
- 分割ウィンドウ/フローティングウィンドウの選択
- ウィンドウサイズの自動保持
インストール
npm install -g memd-cli
# 確認
which memd
lazy.nvimの設定例:
{
'ktrysmt/memd.nvim',
ft = 'markdown',
config = function()
require('memd').setup({
display_mode = 'split', -- 'split' or 'floating'
terminal_split = 'rightbelow vnew',
auto_reload_method = 'fs_watcher', -- or 'autocmd'
})
-- キーマップ(任意)
vim.keymap.set('n', '<leader>mt', require('memd').toggle)
end,
}
使い方
コマンド
- :Memd - プレビューを開く
- :MemdToggle - プレビューのオン/オフ
- :MemdClose - プレビューを閉じる
表示モードの設定
分割ウィンドウ:
require('memd').setup({
display_mode = 'split',
terminal_split = 'rightbelow vnew', -- 右 / 'botright split'で下
})
フローティングウィンドウ:
require('memd').setup({
display_mode = 'floating',
floating_opts = {
width = 0.8,
height = 0.8,
border = 'rounded',
},
})
自動リロードの設定
auto_reload_methodは2種類:
- ‘fs_watcher’(デフォルト): ファイルシステムを監視。外部エディタの変更も検知
- ‘autocmd’: Neovimの保存イベントのみ検知。オーバーヘッドが少ない
おわり
claudeに色々やらせたり書かせたりするときのプロンプトや挙動の検証ついでに書いてみたけど結構いい感じになりました。 luaはコードサイズが小さめだからかLLMフレンドリーで手入れしやすいです。 一昔前はlua, vimLはまったく書けなかったのですが性能も申し分ないです。claudeさまさまでした。