mcpField
N
neovim

neovim

github.com/julianobarbosa開発14297 回インストール2 日前に更新
リポジトリ

neovim について

モジュール型Neovim設定の利用と保守を説明するスキルです。lazy.nvimによるプラグイン管理、LSP、デバッグ、パフォーマンスの問題解決を扱い、このLua設定を拡張・診断するユーザー向けです。

主な機能

  1. 01lazy.nvimによるプラグイン管理を解説
  2. 02LSPとデバッガーの設定を案内
  3. 03モジュール構成とsetupパターンを記載
  4. 04イベント駆動の読み込みと起動プロファイルを説明
  5. 05プラグイン、キーマップ、一般的な問題への対処を掲載

活用シーン

  1. 01設定にプラグインやLSPサーバーを追加
  2. 02プラグインの読み込み、LSP起動、キーマップの問題を診断
  3. 03起動の遅さやTreesitterエラーを調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/julianobarbosa/claude-code-skills --skill neovim

インストール後、Claude Code で/neovimを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
configuration.md
debugging.md
keybindings.md
lsp.md
migration-0.11.md
performance.md
plugin-deepdives.md
plugins.md
tools.md
troubleshooting.md

詳細

Neovim 設定スキル

lazy.nvim を基盤とする、モジュール式でパフォーマンスを最適化した Neovim 設定を扱うための総合ガイドです。

クイックリファレンス

指標値
プラグインマネージャーlazy.nvim
プラグインの総数82
起動時間の目標<50ms
モジュールパターンM.setup()
リーダーキー<Space>

アーキテクチャの概要

~/.config/nvim/
├── init.lua                  # Entry point
├── lua/
│   ├── config/               # Core configuration (11 modules)
│   │   ├── lazy.lua          # Plugin manager bootstrap
│   │   ├── options.lua       # Vim options
│   │   ├── keymaps.lua       # Key bindings
│   │   ├── autocmds.lua      # Autocommands
│   │   └── performance.lua   # Startup optimization
│   ├── plugins/specs/        # Plugin specs (9 categories)
│   │   ├── core.lua          # Foundation (plenary, nui, devicons)
│   │   ├── ui.lua            # UI (lualine, bufferline, noice)
│   │   ├── editor.lua        # Editor (autopairs, flash, harpoon)
│   │   ├── lsp.lua           # LSP (lspconfig, mason, conform)
│   │   ├── git.lua           # Git (fugitive, gitsigns, diffview)
│   │   ├── ai.lua            # AI (copilot, ChatGPT)
│   │   ├── debug.lua         # DAP (nvim-dap, dap-ui)
│   │   ├── tools.lua         # Tools (telescope, neo-tree)
│   │   └── treesitter.lua    # Syntax (treesitter, textobjects)
│   ├── kickstart/            # Kickstart-derived modules
│   └── utils/                # Utility functions
└── lazy-lock.json            # Plugin version lock

標準モジュールパターン

すべての設定モジュールは M.setup() パターンに従います。

local M = {}

M.setup = function()
  -- Configuration logic here
end

return M

プラグイン管理(lazy.nvim)

新しいプラグインの追加

lua/plugins/specs/ 内の適切なカテゴリファイルに追加します。

-- lua/plugins/specs/tools.lua
return {
  -- Existing plugins...

  {
    "author/plugin-name",
    event = "VeryLazy",           -- Loading strategy
    dependencies = { "dep/name" }, -- Required plugins
    opts = {
      -- Plugin options
    },
    config = function(_, opts)
      require("plugin-name").setup(opts)
    end,
  },
}
読み込み戦略
戦略使用する場面例
lazy = trueデフォルト。必要に応じて読み込むほとんどのプラグイン
event = "VeryLazy"UI の読み込み後UI の機能強化
event = "BufReadPre"ファイルを開いたときTreesitter、gitsigns
event = "InsertEnter"入力を開始したとき補完、autopairs
cmd = "CommandName"コマンドの実行時重いツール
ft = "filetype"特定のファイルタイプ用言語プラグイン
keys = {...}キーを押したときモーションプラグイン
プラグインのコマンド
コマンド説明
:Lazylazy.nvim のダッシュボードを開く
:Lazy syncプラグインを更新してインストールする
:Lazy profile起動時間の分析を表示する
:Lazy clean未使用のプラグインを削除する
:Lazy healthプラグインの状態を確認する

LSP 設定

完全な LSP リファレンスについては、references/lsp.md を参照してください。

LSP スタック
mason.nvim (installer)
    ├── mason-lspconfig.nvim → nvim-lspconfig
    ├── mason-tool-installer.nvim (auto-install)
    └── mason-nvim-dap.nvim → nvim-dap

nvim-lspconfig
    ├── blink.cmp (completion)
    ├── conform.nvim (formatting)
    ├── nvim-lint (linting)
    └── trouble.nvim (diagnostics)
LSP サーバーの追加
-- In lua/plugins/specs/lsp.lua, add to mason-tool-installer list:
ensure_installed = {
  "lua_ls",
  "pyright",
  "your_new_server",  -- Add here
}

-- Configure in lspconfig setup:
servers = {
  your_new_server = {
    settings = {
      -- Server-specific settings
    },
  },
}
LSP のキーバインド
キーアクション
gd定義へ移動
gr参照へ移動
gI実装へ移動
gD宣言へ移動
Kホバードキュメント
<leader>rnシンボル名を変更
<leader>caコードアクション
<leader>D型定義
<leader>dsドキュメントシンボル
<leader>wsワークスペースシンボル

キーバインド

完全なリファレンスについては、references/keybindings.md を参照してください。

基本的なナビゲーション
キーアクション
<C-h/j/k/l>ウィンドウ間を移動
<S-h> / <S-l>前/次のバッファ
<leader>sfファイルを検索
<leader>sggrep で検索
<leader><space>バッファを検索
\\Neo-tree の表示/非表示を切り替え
キーバインドの追加
-- In lua/config/keymaps.lua M.setup():
vim.keymap.set('n', '<leader>xx', function()
  -- Your action
end, { desc = 'Description for which-key' })

-- Or in a plugin spec:
keys = {
  { "<leader>xx", "<cmd>Command<CR>", desc = "Description" },
}

デバッグ(DAP)

完全なリファレンスについては、references/debugging.md を参照してください。

DAP のキーバインド
キーアクション
<F5>デバッグを続行/開始
<F10>ステップオーバー
<F11>ステップイン
<F12>ステップアウト
<leader>bブレークポイントの切り替え
<leader>B条件付きブレークポイント
デバッグアダプターの追加
-- In lua/plugins/specs/debug.lua
local dap = require("dap")

dap.adapters.your_adapter = {
  type = "executable",
  command = "path/to/adapter",
}

dap.configurations.your_filetype = {
  {
    type = "your_adapter",
    request = "launch",
    name = "Launch",
    program = "${file}",
  },
}

パフォーマンスの最適化

起動最適化のレイヤー
レイヤー手法短縮時間
1vim.loader.enable()約50ms
2vim._defaults をスキップ約180ms
3プロバイダーを無効化約10ms
4組み込み機能を無効化約20ms
5設定を遅延約30ms
6イベントベースの読み込み変動
起動のプロファイリング
:Lazy profile
遅延読み込みパターン
-- In init.lua
vim.defer_fn(function()
  require('config.options').setup()
  require('config.keymaps').setup()
  require('config.autocmds').setup()
end, 0)

よくあるタスク

Autocommand の追加
-- In lua/config/autocmds.lua M.setup():
vim.api.nvim_create_autocmd("FileType", {
  pattern = { "markdown", "text" },
  callback = function()
    vim.opt_local.wrap = true
    vim.opt_local.spell = true
  end,
})
Vim オプションの追加
-- In lua/config/options.lua M.setup():
vim.opt.your_option = value
ユーティリティ関数の作成
-- In lua/utils/init.lua
local M = {}

M.your_function = function(args)
  -- Implementation
end

return M

-- Usage: require('utils').your_function(args)

プラグインのカテゴリ

コア(4 プラグイン)

plenary.nvim、nui.nvim、nvim-web-devicons、lazy.nvim

UI(11 プラグイン)

tokyonight、alpha-nvim、lualine、bufferline、noice、nvim-notify、which-key、indent-blankline、mini.indentscope、fidget、nvim-scrollbar

エディター(13 プラグイン)

nvim-autopairs、flash.nvim、clever-f、nvim-spectre、grug-far、harpoon、persistence、smartyank、vim-sleuth、vim-illuminate、tabular、todo-comments、toggleterm

LSP(12 プラグイン)

nvim-lspconfig、mason、mason-lspconfig、mason-tool-installer、lazydev、luvit-meta、SchemaStore、conform、nvim-lint、trouble、blink.cmp/nvim-cmp、LuaSnip

Git(7 個のプラグイン)

vim-fugitive、vim-rhubarb、gitsigns、diffview、vim-flog、git-conflict、octo

AI(3 個のプラグイン)

copilot.vim、ChatGPT.nvim、mcphub.nvim

デバッグ(8 個のプラグイン)

nvim-dap、nvim-dap-ui、nvim-dap-virtual-text、nvim-dap-python、nvim-dap-go、mason-nvim-dap、telescope-dap、nvim-nio

ツール(14 個のプラグイン)

telescope、telescope-fzf-native、telescope-ui-select、neo-tree、oil.nvim、nvim-bqf、rest.nvim、vim-dadbod、vim-dadbod-ui、vim-dadbod-completion、iron.nvim、markdown-preview、nvim-puppeteer、obsidian.nvim

Treesitter(3 個のプラグイン)

nvim-treesitter、nvim-treesitter-context、nvim-treesitter-textobjects

トラブルシューティング

問題解決策
プラグインが読み込まれない:Lazy sync
LSP が起動しない:LspInfo、:Mason
アイコンが表示されないNerd Font をインストールしてください
起動が遅い:Lazy profile
Treesitter のエラー:TSUpdate
キーバインドの競合:verbose map <key>
ヘルスチェック
:checkhealth
デバッグログ
-- Temporarily add to plugin config:
log_level = vim.log.levels.DEBUG,

リソース

参考資料


注意点

  • LSP は BufRead ではなく FileType でアタッチされます: プラグイン仕様の評価前に開いたバッファには LSP がアタッチされません。:LspInfo に何も表示されない場合は、同じファイルタイプの新しいバッファを開くか、:edit を実行して自動コマンドを再度実行してください。
  • lazy-lock.json はすべてを暗黙的に固定します: ロックエントリーを削除するか、明示的に :Lazy update を実行しない限り、:Lazy sync ではプラグインは更新されません。sync は、不足しているプラグインのインストールと、不要になったプラグインの削除のみを行います。
  • vim.defer_fn(..., 0) は UIEnter の後、FileType の前に実行されます: この方法で読み込まれた設定では、最初のバッファのファイルタイプイベントを取りこぼします。最初のバッファで連携機能に問題が生じる場合は、キーマップとオプションを defer_fn の外に移してください。
  • Mason のインストール先は $PATH ではなく ~/.local/share/nvim/mason/bin/ です: シェルからフォーマッターやリンターを呼び出す外部ツールは、このパスを明示的に追加しない限り、Mason がインストールしたバイナリを見つけられません。
  • event = "VeryLazy" は UI の準備が整った後まで遅延します: 起動時の動作を制御するプラグイン(セッション、ダッシュボード、カラースキーム)には、lazy = false と priority = 1000 を指定してください。VeryLazy では遅すぎます。
  • Treesitter のパーサーはインストール済みの Neovim ABI に対してコンパイルされます: Neovim のアップグレード後は :TSUpdate が必須です。実行しないと、明確な原因がわからないまま「Impossible pattern」エラーが発生します。

コメント