重い腰を上げてVim8にしました。ついでにvimrcとプラグインの整理も。
できるだけミニマムにしたかったので、使うプラグインをゴリゴリ削りました。
プラグインの管理も、Vim8自体のプラグイン機能を使ってできるぽいとのことだったので、
今まで使っていたdeinをやめました。
pluginを登録する
vimの起動時に自動的に読み込みたいものは
.vim/plugin/hoge/start/
遅延ロード任意のタイミングで読み込みたいものは
.vim/plugin/hoge/opt/
に置きます。
/opt/に置いたものは、:packadd
で読み込めます。
gitでvimの設定を管理している場合は、submoduleとして登録しておくと便利。
遅延読み込み?
ここで少しハマったのですが、
「optに置くものは遅延読み込み」という表現をよく見かけますが、それはちょっと違いまして、、、
(:h plugin にも"lazy"という表現は見当たらない)
vimの起動→vimrcの読み込み→/start/のプラグインの読み込み
となります。
この場合、プラグインに対しての設定をvimrcに書くと、「未知の関数です」と言われて死んでしまうんですね。。。
例えば、deniteのキーマッピングをカスタマイズしたくて
nnoremap [denite] <Nop>
nmap <C-c> [denite]
if executable('rg')
call denite#custom#var('file_rec', 'command', ['rg', '--files', '--glob', '!.git'])
" 〜いろいろ〜 (詳しくはGitHubへ)
endif
とか書いていたのですが、「denite#custom#var
なんて知らねーぞ」と言われました。せやな。
deniteは/opt/に置いて、
packadd denite.nvim
nnoremap [denite] <Nop>
nmap <C-c> [denite]
if executable('rg')
call denite#custom#var('file_rec', 'command', ['rg', '--files', '--glob', '!.git'])
" 〜いろいろ〜
endif
としてあげたらいけました。やったね。
余談
整理のついでにいろいろやってみた。
- NERDTree→denite
- ターミナルや
:!
でrg(grep)→deniteでrg - tigでGit操作→vim-fugitive
など。
現場からは以上です!