スタートアップCTOによるITエンジニアのためのブログ

【Neovim】 lazy.nvimのインストール・設定方法

本記事では、Neovimのプラグイン管理マネージャのlazy.nvimのインストール方法及び、個別プラグインのインストール・設定方法を解説します。

目次

  • lazy.nvimのインストール
  • プラグインのインストールと設定
  • プラグイン設定オプション
  • 読み込みオプション
  • Keymapsの設定(keysキー)
  • 遅延読み込み(Lazy load)オプション
  • バージョニングに関する設定
  • まとめ

lazy.nvimのインストール

事前準備

lazy.nvimのインストールには以下が必要です。

  • Neovim >= 0.8.0
  • Git >= 2.19.0

インストール

まず、~/.config/nvim/init.lua に設定ファイルを読み込む記述をします。

-- Lua
-- ~/.config/nvim/init.lua
require("config.lazy")

次に、lazy.nvim自体の設定を行うファイル ~/.config/nvim/lua/config/lazy.lua を作成し、以下のコードを記述します。

-- Lua
-- ~/.config/nvim/lua/config/lazy.lua
-- lazy.nvim自体の自動インストール処理
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
  local lazyrepo = "https://github.com/folke/lazy.nvim.git"
  local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
  if vim.v.shell_error ~= 0 then
    vim.api.nvim_echo({
      { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
      { out, "WarningMsg" },
      { "\nPress any key to exit..." },
    }, true, {})
    vim.fn.getchar()
    os.exit(1)
  end
end
vim.opt.rtp:prepend(lazypath)

-- Leaderキーの設定(lazy.nvimの起動前に設定するのが推奨)
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"

-- lazy.nvimの設定
require("lazy").setup({
  spec = {
    -- ここにプラグインを記述、または後述のimport設定を行う
  },
  install = { colorscheme = { "habamax" } },
  -- automatically check for plugin updates
  checker = { enabled = true }, -- アップデートの自動チェック
})

インストール確認

Neovimを起動(または再起動)し、:checkhealth lazy コマンドで正常に動作しているか確認します。

# Plaintext
==============================================================================
lazy:                                                               2 ⚠️  1 ❌

lazy.nvim ~
- {lazy.nvim} version `11.17.5`
- ✅ OK {git} `version 2.25.1`
- ✅ OK no existing packages found by other package managers
- ✅ OK packer_compiled.lua not found
...

※Luarocksに関するWARNINGが出る場合がありますが、LuaRocksを必要とする特定のプラグインを使用しない限りは無視して問題ありません。

プラグインのインストールと設定

個別プラグインの設定(Spec)には2種類の記載方法があります。

  • lazy.nvim設定ファイルに直接記載:少数のプラグインを管理する場合に便利です。
  • プラグインごとのSpecファイルを作成(推奨):管理がしやすく、設定の分離が可能です。

プラグインごとのSpecファイルを作成する方法

~/.config/nvim/lua/plugins/ ディレクトリ配下にファイルを置くことで、自動的に設定を読み込ませることができます。

1. 設定ファイルでのインポート指定

-- Lua
-- ~/.config/nvim/lua/config/lazy.lua
require("lazy").setup({
  spec = {
    -- lua/plugins ディレクトリ内のファイルをすべて読み込む
    { import = "plugins" },
  },
})

2. 個別プラグインの作成例(例:tokyonight.nvim)

~/.config/nvim/lua/plugins/tokyonight.lua を作成します。

-- Lua
return {
  "folke/tokyonight.nvim",
  lazy = false,
  priority = 1000,
  config = function()
    vim.cmd([[colorscheme tokyonight-night]])
  end,
}

プラグイン設定オプション

lazy.nvimでは、プラグインのセットアップに opts または config キーを使用します。

1. opts を使う場合(自動実行あり)

require("プラグイン名").setup(opts) を自動で実行します。定型的な設定に適しています。

# Lua
return {
  "folke/tokyonight.nvim",
  opts = { style = "moon" },
}

2. config を使う場合(自動実行なし)

自分で require("...").setup() を呼び出す必要があります。複雑な初期化処理が必要な場合に使用します。

-- Lua
return {
  "neovim/nvim-lspconfig",
  dependencies = {
    "williamboman/mason.nvim",
    "williamboman/mason-lspconfig.nvim",
  },
  config = function()
    require("mason").setup()
    require("mason-lspconfig").setup({
      ensure_installed = { "solargraph" },
    })

    -- 標準的なlspconfigの設定方法
    local lspconfig = require('lspconfig')
    lspconfig.solargraph.setup({
      settings = {
        solargraph = { diagnostics = true }
      }
    })
  end,
}

読み込みオプション

プラグインの読み込み方法や状態を制御するための重要なオプションです。

キー説明
dependencies依存するプラグインを指定。親より先に読み込まれます。dependencies = { "nvim-lua/plenary.nvim" }
enabledfalse にするとプラグインを読み込まず、インストールもしません。enabled = false
priority読み込みの優先順位(数値が高いほど優先)。主にカラースキームで使用。priority = 1000
dirローカルにあるプラグインを読み込む際に使用します。dir = "~/projects/my-plugin"

Keymapsの設定(keysキー)

lazy.nvimでは、keysキーを使ってプラグイン固有のキーバインドを設定できます。最大のメリットは、keysを定義するとそのプラグインが自動的に「遅延読み込み」対象になる点です。

-- Lua
return {
  "nvim-telescope/telescope.nvim",
  dependencies = { "nvim-lua/plenary.nvim" },
  -- keysキーにショートカットを定義
  keys = {
    { "<leader>ff", "<cmd>Telescope find_files<cr>", desc = "Find Files" },
    { "<leader>fg", "<cmd>Telescope live_grep<cr>", desc = "Live Grep" },
  },
}

この設定により、<leader>ff を入力した瞬間に telescope.nvim がロードされ、コマンドが実行されます。

遅延読み込み(Lazy load)オプション

lazy.nvimはデフォルトでは即時読み込みを行いますが、keys 以外にも、特定の条件でロードさせるトリガーを指定できます。

キー説明(トリガー)
event特定のイベント発生時event = "InsertEnter"
cmd特定のコマンド実行時cmd = "Neotree"
ft特定のファイルタイプを開いた時ft = "ruby"

バージョニングに関する設定

安定した環境を保つために、バージョンを指定することも可能です。

-- Lua
return {
  "folke/lazy.nvim",
  version = "*", -- 最新の安定版(stable)を使用
  -- version = "^1.0.0", -- セマンティックバージョニングでの指定
}

まとめ

lazy.nvim は、単なるプラグインマネージャではなく、Neovimの起動速度と設定の可読性を劇的に向上させるツールです。特に keysevent を活用して、「必要な時にだけ読み込む」環境を構築してみてください。