Open4

Neovim にプラグインを追加してみる

SAWSAW

まず、 Neovim のプラグインを管理するためのプラグインマネージャー lazy.nvim をインストールしてみる。
以下の環境に対してインストールする。

  • OS: macOS Sonoma 14.6.1
  • Neovim: v0.10.0

lazy.nvim のインストール

公式ドキュメントの Installation に沿って、設定ファイルを記述していく。
方針は公式で推奨する Structured Setup を採用する。

まず、 .config/nvim/lua/config/lazy.lua という空ファイルを作成しておく。
後述の init.lua を作成した後に Neovim を起動した際に、エラーが発生しないようにするためである。

次に .config/nvim/init.lua を作成して、以下の内容を記述する。

~/.config/nvim/init.lua
require('config.lazy')

上記の内容は、 .config/nvim/lua/config/lazy.lua を読み込んでいる。
具体的な lazy.nvim の設定は .config/nvim/lua/config/lazy.lua に記述する。

~/.config/nvim/lua/config/lazy.lua
-- lazy.nvim の repo の設定
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/flke/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)

vim.g.mapleader = ' '
vim.g.maplocalleader = '\\'

-- lazy.nvim のセットアップ
require('lazy').setup({
  spec = {
    -- .config/nvim/lua/plugins 配下の .lua ファイルをインポート
    -- 現段階では .config/nvim/lua/plugins 配下に何も作っていないので、コメントアウト
    -- { import = 'plugins' }
  },
  -- プラグインの自動更新を有効化
  checker = { enabled = true },
})

.config/nvim/lua/config/lazy.lua を保存して終了した後、 Neovim を再起動した後、 :Lazy コマンドを実行して以下の画像のように lazy.nvim の UI が表示されることを確認する。

SAWSAW

ステータスラインの導入

lualine.nvim というプラグインをインストールしてみる。

GitHub の repo の lazy.nvim のセクションを参考に、プラグインの設定ファイルを作成する。
設定ファイルは .config/nvim/lua/config/lazy.lua に作成する。

~/.config/nvim/lua/plugins/statusline.lua
return {
  'nvim-lualine/lualine.nvim',
  dependencies = {
    'nvim-tree/nvim-web-devicons',
  },
}

.config/nvim/lua/config/lazy.lua のプラグインの読み込みをコメントアウトしていたので、コメントアウトを解除する。

~/.config/nvim/lua/config/lazy.lua
  require('lazy').setup({
    spec = {
      -- .config/nvim/lua/plugins 配下の .lua ファイルをインポート
-    -- 現段階では .config/nvim/lua/plugins 配下に何も作っていないので、コメントアウト
-    -- { import = 'plugins' }
+    { import = 'plugins' }
    },
    -- プラグインの自動更新を有効化
    checker = { enabled = true },
  })

これでステータスラインが表示されると思ったが、 Neovim を再起動してもステータスラインが表示されない。
lualine のセットアップの実行が必要なので、 .config/nvim/lua/config/lazy.lua に追記する。

~/.config/nvim/lua/config/lazy.lua
require('lazy').setup({
  -- 省略
})

-- lualine のセットアップ
require('lualine').setup()

これでステータスラインが表示されるようになったが、アイコンが表示できていない。

Nerd Fonts のインストール

ターミナルのフォントを Nerd Fonts に変更することで表示されるようになる。
日本語を使えるので、 白源 の Nerd Fonts を追加合成されているものをインストールする。

白源をインストールした後、ターミナルの設定から、フォントを HackGen Console NF に変更する。

フォントが白源に設定されているターミナルのウィンドウで Neovim を起動すると、無事にアイコンが表示された。

SAWSAW

行番号とインデントの設定

これまでの設定では、まだ行番号が表示されていない。
また、インデントがタブ文字になってしまっているので、スペース 2文字にしたい。

~/.config/nvim/init.lua に行番号とインデントについての設定を追加する。

~/.config/nvim/init.lua
local opt = vim.opt

-- 行番号を表示
opt.number = true

-- 自動インデントの設定
opt.autoindent = true
opt.smartindent = true

-- インデントの文字数設定
-- タブ幅を 2文字分に設定
opt.tabstop = 2
opt.softtabstop = 2
opt.shiftwidth = 2
-- インデントの Tab をスペースで挿入
opt.expandtab = true

-- カーソル行のハイライト
opt.cursorline = true

require('config.lazy')

行番号が表示されるようになった。
また、 Tab キーを押すと、 2文字のスペースでインデントされるようになった。

macOS の terminal では、カーソル行がハイライトされなかった。
何か設定を加えれば、カーソル行のハイライトが表示されるかもしれない。

参考文献

https://zenn.dev/haru_0205/books/48722565471d83/viewer/009_about_lua#vim.opt
https://qiita.com/marrontan619/items/541a1374e1ac672977e6

SAWSAW

カラーテーマの変更

Neovim はターミナル上で起動するため、カラーテーマを設定しないとターミナルのデフォルトの背景色や文字色で表示される。
しかし、カラーテーマを設定すれば、 Neovim では好みの背景色や文字色に変更できる。

以下のサイトを確認すると、多くのカラーテーマが公開されていることがわかる。
https://dotfyle.com/neovim/colorscheme/trending

今回は Catppuccin for (Neo)vim (以降 Catppuccin と表記) というカラーテーマを導入してみる。

カラーテーマの設定

設定ファイルを .config/nvim/lua/plugins/colorscheme.lua に作成する。

~/.config/nvim/lua/plugins/colorscheme.lua
return {
  'catppuccin/nvim',
  name = "catppuccin",
  priority = 1000,
}

lualine の時と同様にセットアップが必要なので、 .config/nvim/lua/config/lazy.lua にも追記する。
Catppuccin のテーマは 4つあるが、今回は catppuccin-mocha を指定する。

~/.config/nvim/lua/config/lazy.lua
-- Catppuccin のセットアップ
require('catppuccin').setup({})
vim.cmd.colorscheme 'catppuccin-mocha'

これで Catppuccin のカラーテーマが適用されるが、 macOS のターミナルで Neovim を開き直すと、期待する背景色や文字色とは異なる色で表示される。

なお、 Ubuntu 24.04 の場合は、デフォルトのターミナル (GNOME Terminal) で問題なくカラーテーマが適用される。

iTerm2 のインストール

macOS の場合、ターミナルの色の設定が Neovim のカラーテーマの色の設定との相性が悪いらしい。
iTerm2 を利用すれば解決するようなので、インストールする。

iTerm2 の公式ページから安定版をインストールする。
https://iterm2.com/

ダウンロードした ZIP ファイルを展開すると、 iTerm.app が展開される。
iTerm.app は Applications に移動する。

iTerm2 のフォントの変更

iTerm2 の設定からフォントを白源の Nerd Fonts に変更する。
Profiles > Text > Font からフォントを変更できる。

フォントを設定した後、 iTerm2 で Neovim を起動すると、正常に Catppuccin のテーマの色が適用されていることが確認できた。