NeovimはVim同様にプラグインを通して様々な機能を拡張できる。
でもプラグインを手動でインストールするのはめんどい。
dein.vimというプラグインを管理する為のプラグインを使おう。
確認環境
PC | Thinkpad X1 Carbon 2nd Gen |
OS | FreeBSD 12.1-RELEASE-p1 |
Neovim | NVIM v0.4.3 |
Python | Python 3.7.6 |
Ruby | ruby 2.6.5p114 |
Node.js | v13.3.0 |
やること
ここでは、以下について説明する。
- 確認環境
- やること
- 1. よく使われる開発言語の実行環境インストール
- 2. dein.vimの設定とインストール
- 3. プラグインの登録とインストール
- 4. dein.tomlに記載するオプション
- 5. プラグインの更新
- 6. プラグインの削除
- 最後に
- 参考
dein.vimを入れる前に、プラグインの開発によく使われる言語の実行環境を入れておく。
これは実際に使うプラグインで必要になったときに実施すればOK。
ただ、今回お試しでインストールするdeoplete
にはPython3
が必要。
deoplete
を入れてみたい人は、下の2つの手順は実施してね。
- 1.1 Pythonのインストール
- 1.4 Neovimとの連携確認
1. よく使われる開発言語の実行環境インストール
1. Pythonのインストール
下のコマンドを管理者権限で実行してね。
> pkg install python27 python37 # Python本体 > pkg install py27-pip py37-pip # Python2のパッケージ管理ツール > pip-2.7 install pynvim # Neovimとの通信ライブラリ(Python2) > pip-3.7 install pynvim # Neovimとの通信ライブラリ(Python3)
ちなみに通信ライブラリのアップデートは下のコマンド。
> pip-2.7 install -U pynvim > pip-3.7 install -U pynvim
2. Rubyのインストール
下のコマンドを管理者権限で実行してね。
> pkg install ruby ruby-gem26 # Rubyとパッケージ管理ツール > gem install neovim # Neovimとの通信ライブラリ
ちなみに通信ライブラリのアップデートは下のコマンド。
> gem update neovim
3. Node.jsのインストール
下のコマンドを管理者権限で実行してね。
> pkg install node # Node.js(パッケージ管理ツールもセット) > npm install -g neovim # Neovimとの通信ライブラリ
ちなみに通信ライブラリのアップデートは下のコマンド。
> npm update -g neovim
4. Neovimとの連携確認
各実行環境をインストールしたら、Neovimを起動して:checkhealth
を実行しよう。
参考までに僕の環境での実行結果は以下。
## Python 2 provider (optional) - INFO: `g:python_host_prog` is not set. Searching for python2.7 in the environment. - INFO: Executable: /usr/local/bin/python2.7 - INFO: Python version: 2.7.17 - INFO: pynvim version: 0.4.1 - OK: Latest pynvim is installed. ## Python 3 provider (optional) - INFO: `g:python3_host_prog` is not set. Searching for python3.7 in the environment. - INFO: Executable: /usr/local/bin/python3.7 - INFO: Python version: 3.7.6 - INFO: pynvim version: 0.4.1 - OK: Latest pynvim is installed. ## Ruby provider (optional) - INFO: Ruby: ruby 2.6.5p114 (2019-10-01 revision 67812) [amd64-freebsd12] - INFO: Host: /usr/local/bin/neovim-ruby-host - OK: Latest "neovim" gem is installed: 0.8.1 ## Node.js provider (optional) - INFO: Node.js: v13.3.0 - INFO: Neovim node.js host: /usr/local/lib/node_modules/neovim/bin/cli.js - OK: Latest "neovim" npm/yarn package is installed: 4.8.0
もし、インストールしたPythonやRubyが見つからない旨のERRが出ていたら、
init.vim
で下のような設定を追記すればいいかも。
(パスは各環境に合わせて変更してね)
let g:python_host_prog='/usr/local/bin/python2.7' let g:python3_host_prog='/usr/local/bin/python3.7' let g:ruby_host_prog='/usr/local/bin/ruby' let g:node_host_prog='/usr/local/bin/node'
もし、対象言語のサポートを無効にしたい場合は、下の設定で良さげ。
let g:loaded_python_provider=0 # Pythno2のサポート無効化 let g:loaded_python3_provider=0 # Pythno3のサポート無効化 let g:loaded_ruby_provider=0 # Rubyのサポート無効化 let g:loaded_node_provider=0 # Node.jsのサポートを無効化
いずれもinit.vim
の最初の方に追記すること。
追記したらNeovimを再起動して、もう一度:checkhealth
を実行して確認しよう。
2. dein.vimの設定とインストール
それではdein.vim
本体をインストールする。
と、その前にgit
は予めインストールしておいてね。
(管理者権限で実行してね)
> pkg intall git
1. init.vimの修正
下のコードを~/.config/nvim/init.vim
に追記して、Neovimを再起動すればOK。
4,5行目は各自好きなパスを指定して下さいまし。
これでNeovim起動時に、dein.vim
本体と指定のプラグインを自動でインストールしてくれる。
2. dein.vim関連のディレクトリ/ファイル構成
上のコードだと、下のようなディレクトリ/ファイル構成になる。
~/.config/nvim |-- init.vim # Neovim設定ファイル |-- dein.toml # プラグインの登録ファイル |-- plugins/*.vim # 各プラグインの設定ファイル(必要であれば) ~/.cache/nvim/dein/ |-- repos/* # 各プラグインをインストールするディレクトリ |-- repos/github.com/Shougo/dein.vim # dein.vimプラグイン本体
3. プラグインの登録とインストール
プラグインをインストールするには、dein.toml
を編集して必要なプラグインを登録する。
ここでは、入力補完プラグインのdeopleteをインストールしてみる。
1. dein.tomlの修正
dein.toml
に下のコードを追記しよう。
deoplete
はcontext_filetype.vimに依存しているので、こちらも一緒にインストールする。
追記したら、Neovimを再起動してみよう。
起動時に上の2つのプラグインがインストールされるはずだ。
インストールが終わったら、Neovimを再起動して、適当なファイルを開いてみよう。
deopleteがちゃんと動いていれば、Insertモードで2文字以上入力したときに、補完候補が表示されるはずだ。
2. 各プラグインの設定を別ファイルにする場合
プラグインが増えてくると、dein.toml
が長くなってゴチャゴチャしてくる。
それが嫌な人は、先程のhook_add
に書いた設定を別ファイルにするといい。
まず下のように、source
で任意のファイルを指定する。
hook_add = ''' source ~/.config/nvim/plugins/deoplete.rc.vim '''
そして、source
で読み込むファイルに対象プラグインの設定を書けばOK。
let g:deoplete#enable_at_startup = 2 let g:deoplete#auto_complete_delay = 0 let g:deoplete#auto_complete_start_length = 2 let g:deoplete#enable_camel_case = 0 let g:deoplete#enable_ignore_case = 0 let g:deoplete#enable_refresh_always = 0 let g:deoplete#enable_smart_case = 1 let g:deoplete#file#enable_buffer_path = 1 let g:deoplete#max_list = 1000
4. dein.tomlに記載するオプション
dein.toml
に指定するオプションでわりと見かけるものをご紹介。
repo
は必須。
それ以外は、各プラグインのマニュアルを読んで必要に応じて指定する感じ。
設定項目 | 設定内容 | 設定値の例など |
---|---|---|
repo | プラグインの公開リポジトリ | repo='Shougo/deoplete.nvim' |
depends | 依存しているプラグイン | depends='context_filetype.vim' |
frozen | 自動更新しない場合に1を指定(更新されない古いプラグインなど) | frozen=1 |
build | プラグインインストールコマンド | bash install.sh |
if | プラグインを登録する条件を指定 | if='has("nvim")' if=0 |
on_event | プラグインをロードするタイミング(Vimのイベント) | on_event='InsertEnter' on_event=['BufEnter','WinEnter'] |
on_ft | プラグインをロードするFileType | on_ft='rust' on_ft=['css','html','php'] |
on_if | プラグインロード時にロード条件を追加で指定 デフォルトはBufRead,BufNewFile,VimEnter,FileTypeイベント時、 on_event指定時はそのイベント発生時に判定とのこと |
on_if='winnr("$")>1' |
hook_add | ロード時に実行するVimスクリプト | hook_add='g:variiable=value' hook_add='source path/to/file.vim' |
その他のオプションについては、deinのマニュアルを見てね。
5. プラグインの更新
上で紹介したinit.vim
の設定では、下のコードでプラグインの更新関数を割り当てている。
" Update plugins (bind keymap) " ---------------------------- nnoremap <Leader>du :call dein#update()<CR>
各自好きに割り当てて下さいな。
6. プラグインの削除
dein.toml
から対象プラグインの記載をコメントアウトか削除すればい。
Neovim起動時に記載を削除したプラグインのインストールファイル(プラグインのコードなど)も削除するようにしている。
また、if=0
オプションを指定した場合も同様に削除する。
自動でインストールファイルを自動で削除したくない場合は、init.vim
の下のコードを削除するなり、関数化してキーに割り当てるなりしてねと。
" Remove plugins " ---------------------------- let s:removed_plugins = dein#check_clean() if len(s:removed_plugins) > 0 call map(s:removed_plugins, "delete(v:val, 'rf')") call dein#recache_runtimepath() endif
最後に
これで手動に比べるとだいぶ楽にパッケージ管理が出来るようになったと思う。
あとは下のサイトさんなどを参考に手始めに入れるプラグインを探してみてはいかがだろうか。