連載 本記事は複数記事の連載記事の1つです。 自動コマンドとは VimではInsertやNormalモードの切り替えなど、様々なイベント時に設定したコマンドを実行できます。 ハンドルできるイベントの一…
連載
本記事は複数記事の連載記事の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' '''
コメントを書く