はじめに
一月三日である。私は今、ソファの深淵に身を沈め、己の怠惰と対峙しているところである。年末にやろうと固く心に誓った開発環境の整理は、見事なまでに手つかずのまま新年を迎えてしまった。大掃除もしていない。年賀状も書いていない。結婚もしていないし、友人と過ごす予定もなかった。やらなかったことを指折り数えていると、正月休みの大半が、まるで人生の棚卸しのような様相を呈し、胸中は罪悪感で満たされていくのである。
「年末年始は何をしていたのか」と問われれば、私は途方に暮れるほかない。身体は動かしていない。コードは書いた。本を読み、近所を散歩した。であるから、休んだと言えば休んだのであろう。しかしながら、休んだという実感が皆無なのである。なぜか。「あのキーバインド、なんだったか」という問いが、四六時中、頭蓋骨の内側をぐるぐると巡り続けていたからに相違ない。
私はNvChadを使っている。かれこれ四年ほど使い続けている。それにもかかわらず、半年ぶりに設定を見直すたびに「これ、なんのキーだったか」と首を傾げてしまうのである。設定ファイルには丁寧にコメントを書いてある。過去の自分が、未来の自分のために残してくれた親切なメモである。しかし、読んでも思い出せない。覚えた数だけ忘れている。どうやら人間の脳というものは容量が有限であり、Vimのキーバインドよりも優先して記憶すべき事柄があるらしいのだ。たとえば、それが何であるかは私にもわからないのだが。
毎年、年始になると私は同じことを繰り返している。設定を見直す。新しいプラグインを試す。キーマッピングを整理する。そしてまた忘れる。「今年こそ覚える」という新年の誓いは、結局のところ、翌年の自分に対する壮大な裏切り行為でしかないのである。
このガイドは、そんな救いようのない私のための備忘録である。来年の今頃、またしても全てを忘れ去った自分のために書いている。もしかすると、同じように忘れっぽい誰かの役に立つかもしれない。立たないかもしれない。たぶん、立たない。
ちなみに、一昨年にも同じようなことを書いている。進歩がない。ただし、構成はだいぶ変わった。ステータスラインを廃止し、ファイルエクスプローラーをoil.nvimに変え、Snacks.nvimを導入した。変わっていないのは、私が相変わらずキーマッピングを忘れ続けているという事実だけである。
開発環境全体についてはこちらに記した。興味のある方は参照されたい。
さて、前置きが長くなった。よく忘れるキーマッピングをまとめていくこととする。設定ファイルは以下に置いてある。
基本的なショートカット表記
<C>= Ctrlキー<leader>= スペースキー(デフォルト)<A>= Altキー<S>= Shiftキー
よく使う機能とそのキーマッピング
基本操作で必須のコマンド
<C-s> - 保存(これだけは絶対覚える。:w なんてやっているとVSCodeを使っている人にバカにされる) ; - コマンドモードに入る(:を押す必要がない) jk または jj - インサートモードを抜ける(Escより断然速い) <Esc> - 検索ハイライトをクリア <leader>y - システムクリップボードにヤンク <leader>Y - 行全体をシステムクリップボードにヤンク <leader>d - ヤンクせずに削除(レジスタを汚さない)
ナビゲーション(移動系)
スクロールと検索が画面中央に来るようにカスタマイズしている。迷子にならない。
<C-d> - 半ページ下スクロール(画面中央維持) <C-u> - 半ページ上スクロール(画面中央維持) n - 次の検索結果(画面中央維持) N - 前の検索結果(画面中央維持)
検索系(2つのピッカーを使い分け)
Snacks Picker(s系)- メインで使う
Snacks.nvimは2024年末に登場した新しいユーティリティセット。高速で美しい。
<leader><leader> - スマートピッカー(最重要:状況に応じた最適な検索) <leader>sf - ファイル検索 <leader>sg - プロジェクト内テキスト検索(grep) <leader>sw - カーソル下の単語を検索 <leader>sb - 開いているバッファを検索 <leader>sr - 最近開いたファイルを検索 <leader>sc - コマンド検索 <leader>sh - ヘルプ検索 <leader>sk - キーマップ検索(何かわからなくなったらこれ) <leader>sd - 診断情報を検索 <leader>ss - LSPシンボル検索 <leader>sR - 直前のピッカーを再開
Telescope(f系)- 補助的に使う
長年使い慣れたTelescope。fzf-nativeで高速化済み。
<C-p> - ファイル検索(VSCodeユーザーも安心) <leader>ff - ファイル検索 <leader>fg - ライブgrep <leader>fb - バッファ検索 <leader>fh - ヘルプタグ検索 <leader>fr - 最近のファイル <leader>fc - Gitコミット検索 <leader>fs - Gitステータス <leader>fd - 診断情報
ファイルエクスプローラー(oil.nvim)
NvimTreeからoil.nvimに乗り換えた。バッファのようにディレクトリを編集できる革命的なプラグイン。ファイル名を間違えて作成しても、ddで消せる。Vimの操作で世界を編集している気分になれる。気分だけ。
- - 親ディレクトリを開く(最重要:ファイル階層を上る) <leader>e - ファイルエクスプローラーを開く <CR> - ファイル/ディレクトリを選択 <C-v> - 垂直分割で開く <C-s> - 水平分割で開く g. - 隠しファイルの表示切り替え
高速移動(flash.nvim)
EasyMotion系のモダンな代替。画面内のどこにでも2-3キーで飛べる。
s - Flash(画面内の任意の位置にジャンプ) S - Flash Treesitter(構文単位でジャンプ) r - Remote Flash(オペレーターモード用)
LSP関連(コードジャンプ・リファレンス)
コードリーディングする時に本当に助かる機能たち。
gd - 定義へジャンプ(最も使う) gD - 宣言へジャンプ gi - 実装へジャンプ(インターフェースから実装を探せる) gr - 参照を探す(変数やメソッドの使用箇所を探せる) K - ホバー情報を表示(ドキュメント、型情報) Ctrl-^ 直前に編集していたファイルに切り替え <leader>rn - シンボルをリネーム <leader>ca - コードアクション(自動修正候補など) <leader>fm - フォーマット(conformで整形) <leader>cf - フォーマット(代替キー) <leader>lk - シグネチャヘルプ <leader>lD - 型定義へジャンプ
コードピーク(overlook.nvim)
定義にジャンプせずに、フローティングウィンドウで確認できる。
<leader>pd - 定義をピーク(フローティングで定義を確認) <leader>pc - すべてのポップアップを閉じる <leader>pu - 最後のポップアップを復元 <leader>pU - すべてのポップアップを復元 <leader>pf - フォーカスを切り替え <leader>ps - 分割で開く <leader>pv - 垂直分割で開く <leader>po - 元の場所で開く
診断・エラー確認(Trouble)
診断情報を一覧で見やすく表示してくれる。
[d - 前の診断へ ]d - 次の診断へ <leader>ld - 行の診断情報をフロートで表示 <leader>lq - 診断をloclistに送る <leader>xx - 診断パネルをトグル(Trouble) <leader>xX - 現在のバッファの診断のみ <leader>xs - シンボル一覧(Trouble) <leader>xl - LSP定義一覧 <leader>xq - Quickfixリスト <leader>xt - TODO/FIXME一覧
画面分割とウィンドウ移動
複数のファイルを同時に見たい時に使う。
<C-h> - 左のウィンドウへ <C-l> - 右のウィンドウへ <C-j> - 下のウィンドウへ <C-k> - 上のウィンドウへ <leader>| - 垂直分割 <leader>- - 水平分割 <leader>w= - ウィンドウサイズを均等に <leader>wm - ウィンドウを最大化(他を閉じる)
バッファ操作
<S-h> - 前のバッファへ(Shift + h) <S-l> - 次のバッファへ(Shift + l) <leader>x - バッファを閉じる <leader>bd - バッファを削除(Snacks) <leader>bo - 他のバッファをすべて削除
ビジュアルモードの改善
J - 選択した行を下に移動 K - 選択した行を上に移動 <leader>p - ペースト(レジスタを上書きしない)
Git操作
LazyGitとの統合が最高に便利。ターミナルでgitコマンドを打つ必要がほぼなくなった。git add -pのインタラクティブモードを思い出せなくても、もう困らない。
<leader>gg - LazyGitを開く(これだけで全部できる) <leader>gl - LazyGit ログを表示 <leader>gf - 現在のファイルのログを表示 <leader>gd - Git Diff(作業ツリー全体) <leader>gD - 前のコミットとのDiff <leader>gh - ファイルの履歴 <leader>gH - ブランチの履歴 <leader>gs - ステージされた変更のDiff <leader>gm - mainブランチとのDiff <leader>gM - masterブランチとのDiff <leader>gq - Diffviewを閉じる <leader>gt - ファイルパネルをトグル <leader>gp - Hunkをプレビュー <leader>gb - 行のBlameを表示 <leader>gB - 行Blameのトグル ]c - 次のHunkへ [c - 前のHunkへ <leader>hr - Hunkをリセット <leader>hs - Hunkをステージ <leader>hu - Hunkのステージを取り消し
ターミナル操作
<leader>tt - ターミナルをトグル(Snacks) <C-x> - ターミナルモードを抜ける
AI統合(2026年の目玉)
GitHub CopilotとClaudeの両方を使える贅沢な環境。
CopilotChat(a系)
<leader>ao - チャットを開く <leader>aq - チャットを閉じる <leader>ar - チャットをリセット <leader>ae - コードを説明(ビジュアルモード対応) <leader>af - コードを修正 <leader>at - テストを生成 <leader>ad - ドキュメントを生成 <leader>aR - コードをレビュー
Avante(Cursor風のAI体験)
<leader>aa - AIに質問 <leader>ax - コードを編集 <leader>aS - 回答をリフレッシュ
ClaudeCode(ターミナル統合)
<leader>cc - Claudeをトグル <leader>cf - Claudeにフォーカス <leader>cr - 会話を再開 <leader>cC - 会話を継続 <leader>cm - モデルを選択 <leader>cb - 現在のバッファを追加 <leader>cs - 選択範囲をClaudeに送信(ビジュアルモード)
補完操作(nvim-cmp)
<C-p> - 前の候補 <C-n> - 次の候補 <C-d> - ドキュメントを下にスクロール <C-f> - ドキュメントを上にスクロール <C-Space> - 補完を手動で開始 <C-e> - 補完を閉じる <CR> - 候補を確定 <Tab> - 次の候補 / スニペット展開 <S-Tab> - 前の候補 / スニペット前へ
トグル系(u系)
Snacks.nvimが提供する便利なトグル機能。
<leader>us - スペルチェックのトグル <leader>uw - ワードラップのトグル <leader>ud - 診断のトグル <leader>uh - インレイヒントのトグル
その他の便利機能
<leader>? - 現在のバッファのキーマップを表示(which-key) <leader>rr - カーソル下の単語を置換 <leader>cx - ファイルに実行権限を付与 <leader>j - 次のQuickfix項目へ <leader>k - 前のQuickfix項目へ <leader>sT - TODO/FIXME/HACKなどを検索(TodoTelescope) ]t - 次のTODOへ [t - 前のTODOへ
Diffviewコンフリクト解決
マージコンフリクトの解決が格段に楽になる。
]x - 次のコンフリクトへ [x - 前のコンフリクトへ <leader>co - oursを選択 <leader>ct - theirsを選択 <leader>cb - baseを選択 <leader>ca - 両方を選択 dx - コンフリクトを削除
ビジュアル・UI設定
2026年版の大きな特徴は、ミニマルなUIへの移行だ。ステータスラインとタブラインを完全に廃止し、編集スペースを最大化している。情報が多すぎて、結局何も見ていなかったことに気づいたからだ。
テーマとカラースキーム
aquariumテーマを採用。落ち着いた色調で長時間の作業でも目が疲れにくい。
-- chadrc.lua M.base46 = { theme = "aquarium", transparency = false, hl_override = { Comment = { italic = true }, ["@comment"] = { italic = true }, CursorLine = { bg = "#2a2a3a" }, CursorLineNr = { fg = "#fab387", bold = true }, }, }
ステータスライン廃止の理由
従来のステータスラインは廃止し、代わりに以下のプラグインで情報を表示している:
- incline.nvim: ウィンドウ右下にファイル名と診断情報を表示
- modes.nvim: カーソルラインの色でモードを表示(Insert=水色、Visual=紫、Delete=赤、Copy=黄)
- noice.nvim: コマンドラインをフローティングで中央に表示
-- options.lua o.cmdheight = 0 -- コマンドラインを非表示(noice.nvimが担当) o.laststatus = 0 -- ステータスラインを非表示(incline.nvimが担当) o.showmode = false -- モード表示を非表示(modes.nvimが担当)
行番号設定
相対行番号を有効化。5jや10kのような相対移動が直感的になる。
o.number = true -- 現在行は絶対行番号 o.relativenumber = true -- 他の行は相対行番号 o.numberwidth = 4 -- 行番号の幅
スクロール設定
カーソルが画面端に到達する前にスクロールが始まる。常に周囲のコンテキストが見える。
o.scrolloff = 8 -- 上下8行を常に表示 o.sidescrolloff = 8 -- 左右8列を常に表示
インデント設定
2スペースインデントを採用。タブは使わない。
o.tabstop = 2 o.shiftwidth = 2 o.expandtab = true o.smartindent = true
その他のUI設定
o.termguicolors = true -- 24bitカラー o.signcolumn = "yes" -- サインカラムを常に表示(ガター) o.cursorline = true -- カーソル行をハイライト(modes.nvimで色が変わる) o.splitright = true -- 垂直分割は右に o.splitbelow = true -- 水平分割は下に o.clipboard = "unnamedplus" -- システムクリップボードと連携 o.undofile = true -- 永続的なundo履歴 o.swapfile = false -- スワップファイルを作らない
使用プラグイン一覧と説明
UI系プラグイン
| プラグイン | 説明 |
|---|---|
| incline.nvim | ウィンドウ右下にファイル名・アイコン・診断情報を表示するミニマルなフローティングステータスライン。init.luaやmod.rsのような一般的なファイル名の時は親ディレクトリ名も表示される。 |
| modes.nvim | Vimのモード(Normal/Insert/Visual/Delete)に応じてカーソルラインと行番号の色を変える。モード表示がなくても今どのモードにいるか一目でわかる。 |
| noice.nvim | コマンドライン、メッセージ、通知をモダンなフローティングUIで表示。画面中央にポップアップするコマンドパレット風のUIが特徴。詳細は後述。 |
| nvim-notify | 通知をモダンなポップアップで表示。フェードアニメーションで視認性が高い。 |
| vimade | 非アクティブなウィンドウ/バッファを薄暗く表示。どのウィンドウがアクティブかが視覚的にわかる。 |
| better-escape.nvim | jkやjjでインサートモードから抜ける。Escキーに手を伸ばす必要がなくなる。 |
| which-key.nvim | キーを押すと次に押せるキーのヒントを表示。<leader>を押して300ms待つとメニューが出る。 |
| indent-blankline.nvim | インデントレベルを縦線で可視化。ネストの深さが一目でわかる。 |
noice.nvim の詳細
noice.nvimは、Neovimの標準的なコマンドライン(画面下部の:プロンプト)を完全に置き換え、モダンなフローティングUIを提供するプラグイン。従来の「画面下に張り付いたコマンドライン」から「画面中央にポップアップするコマンドパレット」へと体験が一変する。
主な機能:
コマンドラインのポップアップ化
:を押すと画面中央にフローティングウィンドウが出現- 入力中のコマンドがシンタックスハイライトされる
- コマンドタイプに応じたアイコン表示
検索のポップアップ化
/(前方検索)や?(後方検索)もポップアップで表示- 検索パターンが正規表現としてハイライトされる
コマンドタイプ別のアイコン | 入力 | アイコン | 説明 | |------|---------|------| |
:|| 通常のVimコマンド | | `/` | ` ` | 前方検索 | | `?` | ` ` | 後方検索 | | `:!` | `$` | シェルコマンド実行 | | `:lua` || Lua実行 | |:help|| ヘルプ |メッセージ・通知の統合
- エラーや警告メッセージをnvim-notify経由で右下にポップアップ
- 長いメッセージは自動的にスプリットウィンドウに表示
LSP統合
- LSPの処理進捗を表示
- ホバー情報やシグネチャヘルプもモダンなUIで表示
-- 設定例(私の設定) views = { cmdline_popup = { position = { row = "50%", col = "50%" }, -- 画面中央 size = { width = 60, height = "auto" }, border = { style = "rounded", padding = { 0, 1 } }, }, },
この設定により、従来のNeovimとは全く異なる、VSCodeやCursor風のモダンな操作感が得られる。
ナビゲーション系プラグイン
| プラグイン | 説明 |
|---|---|
| snacks.nvim | folke氏による多機能ユーティリティセット。LazyGit統合、高速ピッカー、バッファ削除、ターミナル、デバッグ機能などを提供。2024年末に登場し、急速に普及した。 |
| telescope.nvim | 定番のファジーファインダー。ファイル、バッファ、grep、Git操作など何でも検索できる。fzf-nativeで高速化済み。 |
| oil.nvim | ディレクトリをバッファとして編集できるファイルエクスプローラー。ファイル名の変更や移動がテキスト編集と同じ感覚でできる革命的なプラグイン。 |
| flash.nvim | 画面内の任意の位置に2-3キーでジャンプ。EasyMotionの後継。Treesitterと連携して構文単位のジャンプも可能。 |
| overlook.nvim | 定義にジャンプせずにフローティングウィンドウでコードをプレビュー。元の位置を見失わずに定義を確認できる。 |
| hbac.nvim | 開いているバッファが一定数を超えると、最近使っていないバッファを自動的に閉じる。バッファが溢れかえるのを防ぐ。 |
Git系プラグイン
| プラグイン | 説明 |
|---|---|
| gitsigns.nvim | 変更行の左側にサイン(追加=緑、変更=青、削除=赤)を表示。Hunk単位でのステージ、リセット、プレビュー、Blame表示も可能。 |
| diffview.nvim | Git Diffを視覚的に表示。2画面分割で変更前後を比較できる。コンフリクト解決UIも備え、ours/theirs/baseの選択が簡単。 |
診断・コード品質系プラグイン
| プラグイン | 説明 |
|---|---|
| trouble.nvim | 診断情報(エラー、警告)をパネルに一覧表示。プロジェクト全体の問題を俯瞰できる。シンボル一覧やQuickfixリストの表示にも対応。 |
| todo-comments.nvim | コード内のTODO、FIXME、HACK、BUG、NOTEなどをハイライト表示し、検索可能にする。放置されたTODOを見つけやすい。 |
LSP・フォーマッタ系プラグイン
| プラグイン | 説明 |
|---|---|
| nvim-lspconfig | Neovim内蔵LSPクライアントの設定を簡単にする公式プラグイン。各言語のLanguage Serverとの接続を管理。 |
| mason.nvim | LSPサーバー、DAP(デバッガ)、リンター、フォーマッタを簡単にインストール・管理できる。:MasonコマンドでUIが開く。 |
| conform.nvim | フォーマッタの統合プラグイン。保存時に自動フォーマットを実行。複数フォーマッタの連携も可能。 |
| nvim-treesitter | Tree-sitterによる高精度なシンタックスハイライトとインデント。正規表現ベースよりも正確な構文解析。 |
| schemastore.nvim | JSON/YAMLファイル用のスキーマを提供。package.jsonやtsconfig.jsonなどの補完と検証が効く。 |
AI統合プラグイン
| プラグイン | 説明 |
|---|---|
| copilot.lua | GitHub Copilotの純粋なLua実装。インライン補完を提供するが、私の設定ではcopilot-cmp経由で補完メニューに統合。 |
| copilot-cmp | Copilotの補完をnvim-cmpのソースとして使用。補完メニュー内で他のソース(LSP、バッファ等)と一緒にCopilot候補が表示される。 |
| CopilotChat.nvim | AIとのチャットインターフェース。コードの説明、レビュー、テスト生成、ドキュメント生成などをチャット形式で依頼できる。Claude Sonnetモデルを使用。 |
| avante.nvim | Cursor風のAI編集体験をNeovimで実現。選択範囲に対してAIに編集を依頼し、差分をプレビューしてから適用できる。 |
| claudecode.nvim | Claude Code CLIをNeovim内で直接使用。ターミナル統合でClaude Codeの全機能にアクセス可能。 |
補完系プラグイン
| プラグイン | 説明 |
|---|---|
| nvim-cmp | Neovimの補完エンジン。高速でカスタマイズ性が高い。複数のソースからの補完を統合して表示。 |
| cmp-nvim-lsp | LSPからの補完をnvim-cmpに提供するソース。 |
| cmp-buffer | 現在開いているバッファ内の単語を補完候補として提供。 |
| cmp-path | ファイルパスを補完。ディレクトリ構造をたどりながら入力できる。 |
| cmp-cmdline | コマンドラインモード(:)での補完を提供。 |
| LuaSnip | スニペットエンジン。定型コードを素早く展開。 |
| lspkind.nvim | 補完メニューにアイコンを表示。種類(関数、変数、クラス等)が視覚的にわかる。 |
言語固有プラグイン
| プラグイン | 説明 |
|---|---|
| rustaceanvim | Rust開発を強化するプラグイン。rust-analyzerとの統合を改善し、Rust固有の機能(expand macro、join lines等)を提供。 |
| crates.nvim | Cargo.toml内のクレート(依存関係)のバージョン情報を表示。最新バージョンへの更新や、利用可能なバージョンの確認が簡単。 |
フォーマッタ・LSP設定
保存時に自動フォーマットが走る。conform.nvimを使用。
| 言語 | フォーマッタ |
|---|---|
| TypeScript/JavaScript | prettier, deno_fmt |
| Lua | stylua |
| Rust | rustfmt |
| Go | gofmt, goimports, gofumpt |
| Python | black, isort |
| Terraform | terraform_fmt |
| Bash/Shell | shfmt |
| YAML/JSON/Markdown | prettier |
Treesitter対応言語
シンタックスハイライトとインデントはTreesitterで処理。
vim, lua, vimdoc, html, css, markdown, markdown_inline, terraform, hcl, bash, python, rust, go, typescript, javascript, tsx, json, yaml, toml
2024年版からの主な変更点
追加されたプラグイン・機能
- Snacks.nvim: folke氏の新しいユーティリティセット。LazyGit統合、高速ピッカー、バッファ管理など
- oil.nvim: NvimTreeに代わるファイルエクスプローラー。ディレクトリをバッファとして編集
- flash.nvim: EasyMotion系のモダンな代替。Treesitter対応
- Trouble.nvim: 診断情報の一覧表示
- diffview.nvim: Git Diffの可視化とコンフリクト解決
- overlook.nvim: 定義をフローティングでピーク
- Avante.nvim: Cursor風のAI編集体験
- ClaudeCode: Claude Code CLIとのNeovim統合
- noice.nvim: コマンドラインとメッセージのモダン化
- which-key.nvim: キーバインドのヒント表示
- incline.nvim: ミニマルなファイル名表示
- modes.nvim: モードに応じたカーソルライン色変更
- vimade: 非アクティブウィンドウの薄暗化
- hbac.nvim: 未使用バッファの自動クローズ
変更されたキーマッピング
- バッファ切り替え:
<Tab>/<S-Tab>→<S-h>/<S-l>(より直感的) - スクロール: 画面中央維持が追加
- 検索: SnacksとTelescopeの二刀流に
UI設計の変更
- ステータスラインを完全廃止(incline.nvim + modes.nvim で代替)
- タブラインを廃止(Snacks pickerで代替)
- コマンドラインをフローティング化(noice.nvim)
なぜこれらのキーマッピングを覚える必要があるのか
私の経験上、以下の機能は開発効率を大きく向上させてくれる。
ファイル検索(Snacks/Telescope)
- プロジェクト内のファイルを素早く見つけられる
- コードベースの把握が容易になる
<leader><leader>のスマートピッカーが特に便利
LSP機能
Git統合(LazyGit + Diffview)
- エディタを離れずにすべてのGit操作ができる
- コンフリクト解決が視覚的でわかりやすい
<leader>ggでLazyGitを開けば、ステージ、コミット、プッシュ、ブランチ操作など全部できる
AI統合
- コードの説明、レビュー、修正をエディタ内で完結
- CopilotChatでClaude Sonnetが使える時代
- Avanteでカーソル位置に応じたAI編集
高速移動(flash.nvim)
- 画面内のどこにでも2-3キーで移動できる
- マウスに手を伸ばす必要がなくなる
なぜNvChadを選び続けているのか
2024年版でも書いたが、NvChadを選んだ理由は開発体制の健全さだった。その判断は2026年になっても変わっていない。毎年のように「今年こそAstroNvimとかに移行する」と思うが、結局設定を移行する時間で正月休みが終わる。
NvChad v3.0以降、設定の構造がより洗練された。lua/plugins/ディレクトリに機能ごとにプラグインをまとめる方式は、設定の見通しを良くしてくれる。私の設定では以下のように分割している:
ui.lua: 見た目関連(incline, modes, noice, notify)navigation.lua: 移動・検索(snacks, telescope, oil, flash)git.lua: Git統合(gitsigns, diffview)diagnostics.lua: 診断(trouble, todo-comments)lsp.lua: LSPとフォーマッタ(conform, lspconfig, mason, treesitter)ai.lua: AI統合(copilot, copilot-chat, avante, claudecode)completion.lua: 補完(nvim-cmp)lang.lua: 言語固有(rustaceanvim, crates)
この構造のおかげで、何か問題があった時にどこを見ればいいかすぐわかる。
Vimを学ぶために
通常のVimを学ぶ時は、「実践Vim 思考のスピードで編集しよう!」がおすすめだ。Vimの基本から応用までを体系的に学べ、実践的な例も豊富に掲載されている。
また、Vim Adventuresというゲームも面白い。ゲーム感覚でVimのキー操作を学べ、楽しみながら基本的なコマンドが身につく。初心者にも優しい学習カーブで、Vimの世界に入るきっかけとして最適だ。
おわりに
この文章を書き終えて、ふと時計に目をやると、針は深夜一時を回っていた。年末にやるはずだった開発環境の整理を、結局、一月三日の深夜に敢行しているのである。休めていない。そんなことは百も承知である。
正直に告白すれば、この文章を書いている最中にも、私は何度か「あれ、このキーは何だったか」と己の設定ファイルを参照せざるを得なかった。自分のための備忘録を執筆しながら、その備忘録を必要としている。なんという滑稽な光景であろうか。笑えない。いや、笑うしかないのかもしれない。
来年の今頃、私は間違いなくこの記事を読み返しているであろう。「そうだ、<leader><leader>でスマートピッカーが開くのであった」と膝を打ち、束の間の安堵を覚える。そしてまた忘れる。おそらく、その繰り返しなのである。人間とは、かくも愚かな生き物なのだ。
しかしながら、少しだけ異なることもある。毎年毎年、同じことを馬鹿の一つ覚えのように繰り返しているうちに、いつの間にか身体が記憶している操作というものが存在するのだ。gdで定義へ跳躍すること。<C-s>で保存すること。意識せずとも指が勝手に動く。それは、忘却と想起を幾度となく繰り返した果てに、ようやく獲得した境地なのである。
エディタの設定に正解などない。完璧なキーマッピングも存在しない。ただ、自分が少しでも快適に作業できる環境を、毎年少しずつ更新していくのみである。それでよいのだ。それ以上を望むのは、人間の分際で天に唾するようなものである。
さて、私はソファの深淵から這い上がることにする。正月休みはまだ幾ばくか残されている。しかし、仕事が始まれば、またすぐに「あのキーは何だったか」と途方に暮れる瞬間が訪れるに違いない。その時のために、この記事は存在するのである。
来年の自分へ。また忘れたら読み返すがよい。どうせ忘れるのだから。