はじめに

WSL2のUbuntuにNeovimをインストールし、lazy.nvimを利用するまでの手順を記載します。

Neovimのインストール手順は、こちらに記載されているTarballパッケージからのインストール手順を参考に実施します。

環境

  • OS:Windows 11 Pro
    • バージョン:23H2
    • OSビルド:22631.4037
  • WSL2
    • Ubuntu 22.04.3
    • Docker 27.0.3
    • Docker Compose v2.26.1-desktop.1

Neovimインストール

今回は操作ユーザの$HOME/.local/binにNeovimをインストールします。

Neovimを他のユーザでも利用したい場合、/usr/local等に読み替えて実行します。

$HOME/.localディレクトリ作成

$ mkdir -p ~/.local/{bin,share}

Neovimパッケージの取得・展開

Neovimのパッケージを$HOME/.localに展開します。

$ curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz

$ tar xzf nvim-linux64.tar.gz --strip-components 1 -C ~/.local

これで$HOME/.local/binにnvimの実行ファイルが展開されます。

PATHが$HOME/.local/binに通っていない場合は、.bashrcや.zshrcへ以下を追記します。

export PATH=$PATH:$HOME/.local/bin

以下のコマンドでNeovimのバージョンが確認できたらOKです。

$ nvim -v
NVIM v0.10.1
Build type: Release
LuaJIT 2.1.1713484068

lazy.nvimセットアップ

こちらの「Structured Setup」に則りインストールします。

lazy.nvimのインストール

インストールに必要なディレクトリ構成は以下の通りです。

~/.config/nvim
├── lua
│   ├── config
│   │   └── lazy.lua
│   └── plugins
│       ├── spec1.lua
└── init.lua

以下のコマンドでディレクトリを作成します。

$ mkdir -p ~/.config/nvim/lua/{config,plugins}

ドキュメントの通り、「~/.config/nvim/init.lua」と「~/.config/nvim/lua/config/lazy.lua」という2つのファイルを作成します。

まずは「~/.config/nvim/init.lua」を作成します。

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

続いて、「~/.config/nvim/lua/config/lazy.lua」を作成します。

この際、init.luaの作成後はまだlazy.nvimのインストールが完了していないため、以下のようなエラーが出ますが、Enterを押下して無視してlazy.luaを作成します。 lazy_nvim_error

$ nvim ~/.config/nvim/lua/config/lazy.lua
-- Bootstrap 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)

-- Make sure to setup `mapleader` and `maplocalleader` before
-- loading lazy.nvim so that mappings are correct.
-- This is also a good place to setup other settings (vim.opt)
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"

-- Setup lazy.nvim
require("lazy").setup({
  spec = {
    -- import your plugins
    { import = "plugins" },
  },
  -- Configure any other settings here. See the documentation for more details.
  -- colorscheme that will be used when installing plugins.
  install = { colorscheme = { "habamax" } },
  -- automatically check for plugin updates
  checker = { enabled = true },
})

init.luaでconfig/lazy.luaを読み込む設定とし、lazy.luaでlazy.nvimのインストールのための設定が記載されています。

また、plugins配下にプラグインの設定ファイルを格納すれば自動で読み込んでくれる設定となっております。

lazy.nvimの起動

Neovimを開き、:Lazyを実行すると、lazy.nvimが起動します。

この際、まだplugins配下にプラグインの設定ファイルを格納していないためエラーが出ますが、Enterを押下して無視して起動します。

startup_error start_lazy_nvim

これでlazy.nvimが起動できていることを確認できました。

続いて試しにプラグインを導入します。plugins配下にプラグインの設定ファイルを作成することで自動で読み取ってくれます。

今回は試しにtoggleterm.nvimを導入してみます。

$ nvim ~/.config/nvim/lua/plugins/toggleterm.lua
return {
  {
    'akinsho/toggleterm.nvim',
    version = "*",
    config = function()
      require("toggleterm").setup {
        open_mapping = [[<c-t>]],
        direction = 'float',
        shade_terminals = true,
      }
    end
  }
}

再度Neovimを起動すると自動的にtoggleterm.nvimのインストールが開始されます。 install_plugin

その後、Ctrl+tを押下するとtoggleterm.nvimによってFloatタイプのターミナルが起動できます。 toggleterm_nvim

終わりに

ここまでで、Neovimのインストール、lazy.nvimのセットアップが完了しました。

Neovimは色々なプラグインがあるので、設定しているだけで楽しいですね。