Neovim のプラグイン仕様とキー管理

5 分で読了
このページの目次

追加前に解決したい問題を書く。「削除してもコピー内容を残す」はレジスタ、「復用器まで方向キーで移る」は入力の受け渡しの問題である。目的が明確なら、標準機能で足りるか、追加がどの動作を変えるか判断できる。

仕様の読み込まれ方

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移動と構造一覧
Gitgitsigns対象 hunk だけの操作
言語連携rustaceanvim、roslyn.nvim、flutter-toolsSDK、ルート、サービス
表示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 へ戻る。

一機能ずつ追加する

  1. 設定と lockfile を保存し、練習対象を選ぶ。
  2. 仕様を一つ追加し、導入・読み込みを確認する。
  3. コピー後の削除など、差が分かる操作を行う。
  4. キー、起動時間、別ファイルタイプへの影響を見る。
  5. 有用なら設定と lockfile を保存し、不要なら仕様とバージョンを戻す。

プラグインごとに新しい接頭キーを増やさず、既存の機能分類に合わせる。

言語プラグインの選択

まず言語 extra を使い、プロジェクト固有の不足を補う。Roslyn、OmniSharp、Rust、Flutter の連携は実 SDK とプロジェクトで確かめる。ある大型案件で安定した経験を、全案件の優劣へ一般化しない。

言語ツール、入力と連携、保守へ続く。