👨‍💼

Neovim Part6.0 ~pluginの管理について~

2024/06/23に公開

LazyVimを使ったNeovimプラグイン管理の詳細ガイド

はじめに

このエピソードの目標は、最初のエピソードで確立された基本設定を元にして、LazyVimを活用してプラグインを管理し、設定を管理しやすいモジュールに分割することです。このアプローチにより、設定がより整理され、保守や拡張が容易になります。

初期設定の復習

初期設定には、基本的なNeovimの設定と主要なプラグインが含まれます。例えば:

  • カラースキーム: 美観のためにcatppuccinを使用。
  • ファジーファインダー: 効率的なファイルナビゲーションのためにnvim-telescopeを使用。
  • シンタックスハイライト: 高度なコードハイライトとインデントのためにnvim-treesitterを使用。

Neo-treeを使ったファイルエクスプローラーの追加

ファイル構造をより良く視覚化するために、Neo-treeを導入します。Neo-treeは、人気のあるIDEのようなファイルエクスプローラーを提供します。

Neo-treeのインストール

以下の設定を追加して、Neo-treeをインストールします。

{
  'nvim-neo-tree/neo-tree.nvim',
  requires = {
    'nvim-lua/plenary.nvim',
    'kyazdani42/nvim-web-devicons', -- オプション、ファイルアイコン用
    'MunifTanjim/nui.nvim',
  }
}

キーバインディングの設定

Neo-treeのキーバインディングを設定します。

vim.api.nvim_set_keymap('n', '<C-n>', '<cmd>Neotree toggle<CR>', { noremap = true, silent = true })

使い方

コマンド :Neotree toggle を使用して、ファイルエクスプローラーを開閉します。

設定のモジュール化

基本設定が整ったら、次のステップはそれを小さく管理しやすいモジュールに分割することです。

プラグインディレクトリの作成

プラグインをlua/plugins/ディレクトリに整理し、各プラグインは自身の設定テーブルを返すLuaファイルを持ちます。

例: Catppuccinプラグイン

catppuccinの設定をinit.luaからlua/plugins/catppuccin.luaに移動します。

-- lua/plugins/catppuccin.lua
return {
  'catppuccin/nvim',
  as = 'catppuccin',
  config = function()
    vim.cmd 'colorscheme catppuccin'
  end
}

メイン設定の更新

init.luaを調整して、プラグインディレクトリをロードします。

require('lazy').setup('plugins')

新しいプラグインの追加と設定

モジュール化のアプローチを取ることで、新しいプラグインの追加が簡単になります。各プラグインの設定は独自のファイルに分離されます。

例: Telescope

Telescopeの設定をlua/plugins/telescope.luaに移動します。

-- lua/plugins/telescope.lua
return {
  'nvim-telescope/telescope.nvim',
  requires = { {'nvim-lua/plenary.nvim'} },
  config = function()
    require('telescope').setup{
      defaults = {
        -- your defaults here
      }
    }
  end
}

例: Treesitter

Treesitterの設定をlua/plugins/treesitter.luaに移動します。

-- lua/plugins/treesitter.lua
return {
  'nvim-treesitter/nvim-treesitter',
  run = ':TSUpdate',
  config = function()
    require'nvim-treesitter.configs'.setup {
      highlight = {
        enable = true,
        additional_vim_regex_highlighting = false,
      },
    }
  end
}

モジュール化設定の最終調整

全ての設定が正しくモジュール化され、LazyVimによってロードされていることを確認します。この組織化により、読みやすさと保守性が向上します。

全プラグイン設定の移動

各プラグイン設定をそれぞれのファイルに移動します。

メイン設定

init.luaをシンプルにし、LazyVimでプラグインディレクトリを設定します。

require('lazy').setup('plugins')

追加機能の追加

設定をさらに強化するために、追加のプラグインを簡単に追加できます。

例: LuaLine

lualine.nvimでステータスラインを追加します。

-- lua/plugins/lualine.lua
return {
  'hoob3rt/lualine.nvim',
  requires = {'kyazdani42/nvim-web-devicons', opt = true},
  config = function()
    require('lualine').setup {
      options = { theme = 'dracula' }
    }
  end
}

結論

Neovimの設定をモジュール化し、LazyVimを使ってプラグインを管理することで、セットアップが非常に整理され、拡張性が高くなります。このアプローチにより、読みやすさが向上し、新しいプラグインの追加と設定が簡素化されます。この基盤があれば、オートコンプリートやLSP設定などの将来の強化も既存のセットアップにシームレスに統合でき、Neovimを強力で効率的なコーディング環境へと変えることができます。

次のエピソードでは、オートコンプリートとLSPについて掘り下げ、この設定をさらに高めていきます。お楽しみに。

Discussion