Edited at

Vim8でプラグイン管理

重い腰を上げて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

など。

現場からは以上です!


リンク集

.vimrc

dotfiles

Twitter