Help us understand the problem. What is going on with this article?

Vim8でプラグイン管理

More than 1 year has passed since last update.

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away