Neovim のプラグイン仕様とキー管理
このページの目次
追加前に解決したい問題を書く。「削除してもコピー内容を残す」はレジスタ、「復用器まで方向キーで移る」は入力の受け渡しの問題である。目的が明確なら、標準機能で足りるか、追加がどの動作を変えるか判断できる。
仕様の読み込まれ方
LazyVim は lua/plugins/ が返す表を統合する。lua/plugins/editing.lua の例:
return {
{
"gbprod/cutlass.nvim",
event = "VeryLazy",
opts = {},
},
}
リポジトリが対象、event が読み込み時期、opts が設定を表す。VeryLazy は lazy.nvim のイベント名で、読み込まないという意味ではない。:Lazy で導入と読み込みを確認してから機能を試す。
既存プラグインは opts や keys の上書きを優先する。config の置き換えは元の初期化処理も置き換える場合がある。プラグイン設定
役割ごとに整理する
| 役割 | 例 | 確認する動作 |
|---|---|---|
| 編集とレジスタ | cutlass、yanky、mini-surround | コピー、削除、貼り付け |
| 探索 | flash、aerial | 移動と構造一覧 |
| Git | gitsigns | 対象 hunk だけの操作 |
| 言語連携 | rustaceanvim、roslyn.nvim、flutter-tools | SDK、ルート、サービス |
| 表示 | noice、snacks、smear-cursor | メッセージの再確認と応答性 |
| 外部サービス | claudecode.nvim、vim-wakatime | 操作とデータ送信先 |
必須導入一覧ではない。既定設定を丸ごと重複記述せず、外部連携は必要に応じて使う。AI による変更にもテストと差分確認が必要である。
標準動作が変わる場合
cutlass 導入後は dd、ciw、yy、p を編集課題で再確認する。yanky の履歴とシステムクリップボードは別の機構である。
flash のラベル移動を使っても、通常検索、テキストオブジェクト、移動履歴は残して学ぶ。プラグインが使えないときも役立つ。
gitsigns の hunk は近接した変更の単位である。reset は実ファイルを変えるため先に内容を見る。コミット対象はガターの色だけで判断せず、git diff --cached で確認する。
キーには名前と範囲を付ける
lua/config/keymaps.lua の例:
vim.keymap.set("n", "<leader>uN", function()
vim.wo.relativenumber = not vim.wo.relativenumber
end, { desc = "Toggle relative numbers" })
n は普通モード、vim.wo は現在の窓、desc は説明である。追加前に既存割り当てを調べる。
:verbose nmap <leader>uN
:verbose nmap <C-h>
定義内容と最後に設定した場所を確認できる。特定ファイルだけで失敗するなら buffer 固有マッピングや附着イベントも調べる。キー自体が届かない場合は端末や Zellij へ戻る。
一機能ずつ追加する
- 設定と lockfile を保存し、練習対象を選ぶ。
- 仕様を一つ追加し、導入・読み込みを確認する。
- コピー後の削除など、差が分かる操作を行う。
- キー、起動時間、別ファイルタイプへの影響を見る。
- 有用なら設定と lockfile を保存し、不要なら仕様とバージョンを戻す。
プラグインごとに新しい接頭キーを増やさず、既存の機能分類に合わせる。
言語プラグインの選択
まず言語 extra を使い、プロジェクト固有の不足を補う。Roslyn、OmniSharp、Rust、Flutter の連携は実 SDK とプロジェクトで確かめる。ある大型案件で安定した経験を、全案件の優劣へ一般化しない。