Edited at

NeoBundleからvim-plugへ

More than 3 years have passed since last update.


シンプルなのに強力なvim-plug


  • NeoBundleの開発が中断されてDein.vimへの移行が推奨されていた。

  • Dein.vimのプラグインの記入方法が好みではなかったので、以前から見ていたvim-plugへの引っ越しを決めた。

  • 結果的には大満足。早いということは聞いていたが、何よりプラグインの記入方法が分かりやすくてとても気に入った。

  • 60個以上のプラグインを設置するとき体感できるほどNeoBundleに比べて早かった。

  • 起動するときの速度についてはここを参考。


NeoBundle vs vim-plug


遅延読み込み(lazy loading、on-demand loading)


  • NeoBundleの方はlazy loading、vim-plugの方はon-demand loadingと読んでいる。

  • NeoBundleの場合はNeoBundleLazyを使って色んなオプションを付けられるが、場合によっては冗長になりやすい。

  • NeoBundleの場合(コマンドで呼ばれたときに読み込む)

NeoBundleLazy 'scrooloose/nerdtree', {

\ 'autoload': {
\ 'commands': 'NERDTreeToggle'
\ }
\ }


  • vim-plugの場合(コマンドで呼ばれたときに読み込む)

Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }


  • NeoBundleの場合(ファイルタイプで呼ばれたときに読み込み)

NeoBundleLazy 'vim-ruby/vim-ruby', {

\ 'autoload': {
\ 'filetypes': 'ruby'
\ }
\ }


  • vim-plugの場合(ファイルタイプで呼ばれたときに読み込み)

Plug 'vim-ruby/vim-ruby', { 'for': 'ruby' }


自動コンパイル(事前作業)


  • NeoBundleの場合


    • buildのところにOS別にやりたいことを書く。



NeoBundle 'Shougo/vimproc.vim', {

\ 'build' : {
\ 'windows' : 'tools\\update-dll-mingw',
\ 'cygwin' : 'make -f make_cygwin.mak',
\ 'mac' : 'make -f make_mac.mak',
\ 'unix' : 'make -f make_unix.mak',
\ },
\ }


  • vim-plugの場合


    • dirがディレクトリ指定で、doのところにやりたいことを書く。



Plug 'Shougo/vimproc.vim', { 'dir': '~/.vim/plugged/vimproc.vim', 'do': 'make' }


遅延読み込みについて(補足)


  • ここの内容を訳しただけだが、これぐらい分かれば大体やりたいことはできる。 


  • 指定されたコマンドが実行されるときプラグインを読み込む。


Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }


  • 複数のコマンドを指定する場合

Plug 'junegunn/vim-github-dashboard', { 'on': ['GHDashboard', 'GHActivity'] }


  • 指定されたファイルタイプのファイルを開くときプラグインを読み込む。

Plug 'tpope/vim-fireplace', { 'for': 'clojure' }


  • 複数のファイルタイプを指定する場合

Plug 'kovisoft/paredit', { 'for': ['clojure', 'scheme'] }


  • コマンドとファイルタイプを両方指定する場合

Plug 'junegunn/vader.vim',  { 'on': 'Vader', 'for': 'vader' }


  • プラグインが読み込まれるときやりたいことを記入する。

Plug 'Valloric/YouCompleteMe', { 'for': 'cpp' }

autocmd! User YouCompleteMe if !has('vim_starting') | call youcompleteme#Enable() | endif


vim-plugだけの機能


プラグインの状態を確認


  • これを使えばプラグインがロードされているかどうかわかる。

  • コマンドラインモードにてPlugStatusを実行する。

:PlugStatus


  • 遅延読み込みのプラグインは(not loaded)がプラグイン名の横に表示される。

  • vim-rubyやvim-railsなどはファイルタイプがrubyである場合のみ読み込まれるように書いた。

PlugStatus01.png


  • ファイルタイプがrubyであるファイルを開いた後、もう一度PlugStatusで確認すると今度はvim-rubyやvim-railsの横に(not loaded)の表示が消えた。

PlugStatus02.png


変更履歴の表示


  • 以前アップデートとの変更点を表示する。

:PlugDiff

PlugDiff.png


プラグインのスナップショット


  • プラグインの現在のスナップショットを生成して復元に使える。

  • スナップショットの生成

:PlugSnapshot [output path]

PlugSnapshot.png


  • 復元

vim -S [output path]


感想


  • NeoBundleを使っているときは書き方が面倒だったので遅延読み込みをあまり使っていなかったが、vim-plugで切り替えて積極的に使うようになった。

  • .vimrcが以前より読みやすくなった。

  • シンプルな上に、プラグインの状態の確認など有用な機能を提供している。


参考