🤠

lazyvimインストール エラー解決記録

に公開

lazyvimとは、lazyな人のためのvimの設定パッケージ。
lazyvimをインストールし、その過程で解決したエラーと、設定について記録する。
lazyといえど、めんどくさい設定作業はわりとあった。

lazyvimをインストール

https://www.lazyvim.org/installation

インストール後、ビルド時、masonでエラー

ビルド時、masonでエラーが発生

issue
https://github.com/LazyVim/LazyVim/issues/6039

リリースノート
https://github.com/mason-org/mason.nvim/releases
→2.0.0で破壊的な変更をしたらしいので、バージョン固定で解決

lua/plugin/mason.lua

return {
  { "mason-org/mason.nvim", version = "^1.0.0" }, -- 2.0.0で破壊的変更が入ったため,v1.x に固定
}

lua/plugin/mason-lspconfig.lua

return {
  { "mason-org/mason-lspconfig.nvim", version = "^1.0.0" }, -- 2.0.0で破壊的変更が入ったため,v1.x に固定
}

再起動

rm -rf ~/.local/share/nvim  # プラグインを全削除
rm -rf ~/.local/state/nvim  # キャッシュ削除
nvim  # 再起動後にプラグインが自動インストールされる

入れてよかったプラグイン

supermaven

https://www.lazyvim.org/extras/ai/supermaven
補完提案速度に最もフォーカスしたプラグイン。
copilotよりこっちの方が使いやすい。
lazyvimのextrasに入っており、チェックを入れるだけで、インストールできる。
インストールしたら、自動的にsupermavenのサイトの登録動線にリダイレクトしてくれる。

avante

vimをcursor化するプラグイン
https://github.com/yetone/avante.nvim

僕はdeepseekをモデルに使ってる。(安いから)
lua/plugins/avante.lua

return {
  {
    "yetone/avante.nvim",
    ...
    opts = {
      provider = "deepseek",
      vendors = {
        deepseek = {
          __inherited_from = "openai",
          api_key_name = "****", -- ここはzshrcなどに環境変数を定義して、読み込むと良き

          endpoint = "https://api.deepseek.com",
          model = "deepseek-coder",
        },
      },
      -- tab押した時、windowスイッチするデフォルトの挙動を無効化
      mappings = {
        --- @class AvanteConflictMappings
        sidebar = {
          switch_windows = "<Nop>",
          reverse_switch_windows = "<Nop>",
        },
      },
    },
...
}

conform

formatterプラグイン
https://github.com/stevearc/conform.nvim

一応lazyvimのextraもあるけど、保存時自動フォーマットを無効化したかったので、自前で入れた。
最初はconform.nvimのformat_on_saveにfalse入れるだけでいけるかと思ったけど、LazyVim 側が BufWritePre で conform を内部的に呼んでいるため、format_on_save = false だけでは無効化されない。autocmd のグループごと消す必要がある。(:autocmd BufWritePreするとわかる)

lua/plugins/conform.lua

return {
  "stevearc/conform.nvim",
  ...
  keys = {
    {
      "<leader>cf",
      function()
        require("conform").format({ async = true })
      end,
      desc = "Format file",
    },
  },
  -- LazyVim の保存時自動フォーマットを無効化
  init = function()
    vim.api.nvim_clear_autocmds({
      group = vim.api.nvim_create_augroup("LazyFormat", { clear = false }),
    })
  end,
  opts = {
    format_on_save = false,

    formatters_by_ft = {
      lua = { "stylua" },
      sh = { "shfmt" },
    ...
    },
  },
}

Discussion