[第5回] Neovimのすゝめ – プラグインマネージャーを入れる

[第5回] Neovimのすゝめ – プラグインマネージャーを入れる

連載

本記事は複数記事の連載記事の1つです。

プラグインマネージャーとは

Neovimは皆が作った拡張機能を取り入れて機能を拡張することが出来ます。
プラグインはGitHubで公開されており、プラグインマネージャーを使って取り入れます。
プラグインマネージャーは様々な種類があり、シンプルなものからキャッシュ機能や遅延読み込みに対応して高速に動作するものまで様々です。

プラグインマネージャーの種類

Shougo/dein.vim

Shougo/dein.vimは、日本人のShougoさんが開発されたパッケージマネージャーです。
細かな設定が可能で、必要なタイミングで必要なプラグインを読み込む遅延ローディングの設定を行うことで起動時間を早めることが可能です。
また、設定をTOML形式で記述することができるので分かりやすく設定ファイルを管理することができます。

junegunn/vim-plug

junegunn/vim-plugは、シンプルで簡単に使い始められるパッケージマネージャーです。
海外でも知名度は高く、大抵のプラグインはVim Plugを使った場合のセットアップ方法をサポートしています。

wbthomason/packer.nvim

wbthomason/packer.nvimは、Lua言語製の数少ないパッケージマネージャーです。
機能も一通り揃っていますが、日本語の情報は少ないので公式の情報をよく見てセットアップする必要があるでしょう。

dein.vim をセットアップする

ここではdein.vimのセットアップ方法を記載します。
各OSごとにセットアップするためのスクリプトが用意されているため、ターミナルから実行します。

Unix/Linux or Mac OS X

curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
# For example, we just use `~/.cache/dein` as installation directory
sh ./installer.sh ~/.cache/dein

For Windows(PowerShell)

Invoke-WebRequest https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.ps1 -OutFile installer.ps1
# Allow to run third-party script
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# For example, we just use `~/.cache/dein` as installation directory
./installer.ps1 ~/.cache/dein

dein.vim の設定ファイル

GitHubに Examples が公開されていますが、VimScriptのサンプルになります。
以下はLua言語で記載する場合のサンプルです。

local api = vim.api

local dein_dir = vim.fn.expand('~/.cache/dein')
local dein_repo_dir = dein_dir..'/repos/github.com/Shougo/dein.vim'

vim.o.runtimepath = dein_repo_dir..','..vim.o.runtimepath

-- dein install check
if (vim.fn.isdirectory(dein_repo_dir) == 0) then
  os.execute('git clone https://github.com/Shougo/dein.vim '..dein_repo_dir)
end

-- begin settings
if (vim.fn['dein#load_state'](dein_dir) == 1) then
  local rc_dir = vim.fn.expand('~/.config/nvim')
  local toml = rc_dir..'/dein.toml'
  vim.fn['dein#begin'](dein_dir)
  vim.fn['dein#load_toml'](toml, { lazy = 0 })
  vim.fn['dein#end']()
  vim.fn['dein#save_state']()
end

-- plugin install check
if (vim.fn['dein#check_install']() ~= 0) then
  vim.fn['dein#install']()
end

-- plugin remove check
local removed_plugins = vim.fn['dein#check_clean']()
if vim.fn.len(removed_plugins) > 0 then
  vim.fn.map(removed_plugins, "delete(v:val, 'rf')")
  vim.fn['dein#recache_runtimepath']()
end

 

dein install check

最初にスクリプトでインストールしたdein.vimですが、あるべきディレクトリに存在しない場合はインストールするようにしています。
これによって新しい環境へセットアップする時に作業が自動化できます。

begin settings

拡張機能をインストールするステップです。
サンプルでは実際にインストールするプラグインの情報は dein.toml を置いて、そこへ記載しています。
インストール完了後は dein#save_state を実行することでプラグインをキャッシュして高速化します。

plugin install check

プラグインが新たにtomlに追加されている場合、Neovim起動時に自動的にインストールします。

plugin remove check

プラグインがtomlから削除サれている場合、Neovim起動時に自動的にアンインストールします。

dein.toml

インストールするプラグインを記載します。
プラグインはGitHubのURLの ユーザー名/リポジトリ名 をrepoにセットします。
そのプラグインに関する設定は、hook_addに記載することでプラグインとセットで管理できます。
tomlファイルに記載する設定はVimScriptによる記載になるため注意が必要です。

[[plugins]]
repo = 'Shougo/dein.vim'

[[plugins]]
repo = 'wsdjeg/dein-ui.vim'

[[plugins]]
repo = 'vim-jp/vimdoc-ja'

[[plugins]]
repo = 'morhetz/gruvbox'
hook_add = '''
  let g:gruvbox_contrast_dark = 'hard'
'''

 

Neovimのすゝめカテゴリの最新記事