💤

新世代のneovimプラグインマネージャlazy.nvimの紹介

2024/01/29に公開

この記事は Vim駅伝 2024/1/29 の記事です。

はじめに

neovimではluaで設定ファイルを書く場合、かつてはpacker.nvimを使用するのが主流でした。
しかし現在はメンテナンスされていないため、現在はlazy.nvimを使用するのがオススメです。

lazy.nvimの良いところ

  • プラグインの管理をファイルごとに分割できるため、非常に管理しやすい。
  • setupをわざわざ書かなくてよい。
  • 速い
  • インストール画面が綺麗

最初の二点が個人的に気に入っています。

使用例

この記事で使用するディレクトリ構造です。

~/.config/nvim/
├── init.lua
├── lua
│   ├── core
│   └── plugins
└── stylua.toml

まずはREADMEにあるように、bootstrapを書きましょう。

init.lua
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "https://github.com/folke/lazy.nvim.git",
    "--branch=stable", -- latest stable release
    lazypath,
  })
end
vim.opt.rtp:prepend(lazypath)

そして次にプラグインを管理する関数を書きます。

require("lazy").setup("plugins", {
  performance = {
    rtp = {
      disabled_plugins = {
        "netrw",
        "netrwPlugin",
        "netrwSettings",
        "netrwFileHandlers",
      },
    },
  },
})

lazy.nvimの凄いところは、第一引数にディレクトリ名を文字列として渡してしまえば設定を自動で読み込んでくれることです。ここでは"plugins"を渡しています。
第二引数ではneovim自体に組み込まれている不要なプラグインを読み込まないようにしています。
では実際にプラグインを設定してみましょう。このようにtableを返すだけで使用できます。

plugins/others.lua
return {
  {
    "windwp/nvim-autopairs",
    config = true,
  },
}

たったこれだけです。require("nvim-autopairs").setup {}と書くことすらも不要です。
setup{}になにかオプションを渡したい場合は

  {
    "max397574/better-escape.nvim",
    opts = {
      mapping = { "kj", "jj" },
    },
  },

のようにoptsにオプション渡すだけで可能です。
設定をより多く書きたい場合はファイルを追加するだけで勝手にプラグインを入れてくれます。

return {
  "numToStr/Comment.nvim",
  event = "UIEnter",
  dependencies = { "JoosepAlviste/nvim-ts-context-commentstring" },
  opts = {
    enable_autocmd = false,
    toggler = {
      line = "<Leader>/",
    },
    extra = {
      eol = "<Leader>a",
    },
    pre_hook = function()
      require("ts_context_commentstring.integrations.comment_nvim").create_pre_hook()
    end,
  },
}

プラグインを消したい場合はファイルを削除するだけです。

まとめ

lazy.nvim凄いぞ!って記事でした。READMEにはここには紹介しきれない多くの機能があります。
neovimを使っていて、設定をluaで書きたいという人はぜひ試してはいかがでしょうか。

おまけ

この記事で参考にした設定です。ぜひ活用してみてください。
https://github.com/Liquid-system/dotfiles/tree/main/nvim

GitHubで編集を提案

Discussion