プラグインマネージャをpacker.nvimからlazy.nvimへ移行する、ついでにちゃんと遅延読み込みする

プラグインマネージャ、今まではpacker.nvimを使っていたが最近lazy.nvimがいいらしいので移行する。

github.com

ちょっといじって見た感じ、packer.nvimよりも使い勝手が良さそう。
個人的にはlazy-lock.jsonでプラグインのバージョンの追跡ができるのが好みかも。

とりあえずインストールするべ

インストールする前にpacker.nvim関連のコードを消すなりコメントアウトするなりしておきましょう

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",
    "--single-branch",
    "https://github.com/folke/lazy.nvim.git",
    lazypath,
  })
end
vim.opt.runtimepath:prepend(lazypath)

setupする

require("lazy").setup({})

インストールはこれだけ。

本格的にpacker.nvimから移行するぞ

試しに一つプラグインをlazy.nvim経由でインストールして遅延読み込みまでしてみる。
何がいいかなーって考えたときにパッと思い浮かんだのが普段使っているファイラプラグインのnvim-tree.lua。

github.com

これにしよう。

require("lazy").setup({
  { 
    "kyazdani42/nvim-web-devicons", 
    lazy = true  -- 起動時には読み込みさせない 
  },
  "kyazdani42/nvim-tree.lua", 
  dependencies = {
    -- nvim-tree.luaをロードするときに
    -- nvim-web-deviconsもロードする
    "kyazdani42/nvim-web-devicons" 
  },
  cmd = {
    -- これらのコマンドのいずれかが実行された時点でロードする
    "NvimTreeOpen",
    "NvimTreeClose",
    "NvimTreeToggle",
    "NvimTreeFocus",
    -- Other plugin commands...
  },
  keys = {
    -- keyampを設定した上で、
    -- 設定したkeymapに該当するキー入力が実行された時点でロードする
    -- 設定しているkeymapは↓と同じ 
    -- vim.keymap.set("n", "<C-n>", "<cmd>NvimTreeToggle<cr>", { noremap = true })
    {
      "<C-n>",
      "<cmd>NvimTreeToggle<cr>",
      noremap = true,
      mode = "n",
    }
  },
  config = function()
    require("nvim-tree").setup({
      -- Some options...
    })
  end,
})

これでnvim-tree.lua(+ nvim-web-devicons)を遅延読み込みできるようになった。

他のプラグインも頑張って移すぞ。