重い腰を上げて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のキーマッピングをカスタマイズしたくて
.vimrc
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/に置いて、
.vimrc
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
など。
現場からは以上です!