Vim Advent Calendar 2013 116日目:neobundle.vim で Vim のフォーカスが外れた時に自動でプラグインを読み込む

この記事は Vim Advent Calendar 2013 116日目の記事になります。

以前、Vim Advent Calendar で上記のような記事を書いたのですが、この機能が neobundle.vim 本体に組み込まれたので簡単に紹介でも。

NeoBundleLazy したプラグイン
bold;"> Vim のフォーカスが外れている時に自動的に読み込みを行います。

挙動としてはわたしが実装したものとほとんど同じになっています。

[使い方]

:NeoBundleLazy の設定に "focus" を追加する事で Vim のフォーカスが外れている時に自動的にプラグインを読み込むようになります。
また、"focus" に設定した値はプラグインを読み込む優先順位としての意味も持ち、設定した値が少ない方が先に読み込まれます。

" Vim のフォーカスが外れている時に自動的に読み込みを粉いたい場合
" "focus" を設定する
" "autoload" と併用して利用することも可能
NeoBundleLazy "Shougo/unite.vim", {
\   "focus" : 10,
\   "autoload" : { "commands" : [ "Unite" ] }
\}


" unite.vim よりも先にプラグインが読み込まれる
NeoBundleLazy "Shougo/vimshell.vim", {
\   "focus" : 5,
\   'autoload' : { 'commands' : [ 'VimShell', "VimShellPop", "VimShellInteractive" ] }
\}

[プラグインの読み込み時にメッセージを出力する]

わたしの実装だとプラグインが読み込まれた時に『sourced:unite.vim』みたいなメッセージを出力していたのですが、Shougo さんにお願いして本体にも組み込んでもらいました。
これは "verbose" : 1 を設定する事で出力されるようになります。

" unite.vim が読み込まれた時にメッセージを出力する
NeoBundleLazy "Shougo/unite.vim", {
\   "verbose" : 1,
\   "autoload" : { "commands" : [ "Unite" ] }
\}

[全ての設定に対して "focus" や "verbose" を行う]

上記のような "focus" や "verbose" を1つ1つ設定するのが手間という方は g:neobundle#default_options を利用して全ての設定に対するデフォルト値を設定しておくとよいでしょう。

" "_" に対して、全ての設定に対するデフォルト値を設定する
let g:neobundle#default_options = {
\   "_" : {
\       "focus" : 1000,
\       "verbose" : 1,
\   },
\}

" g:neobundle#default_options で設定してあるのでここで "focus" を設定しなくても
" 自動読み込みが行われる
NeoBundleLazy "Shougo/unite.vim", {
\   "autoload" : { "commands" : [ "Unite" ] }
\}


" 他のプラグインよりも先にプラグインを読み込みたい場合は個別に "focus" を設定する
NeoBundleLazy "Shougo/vimshell.vim", {
\   "focus" : 10,
\   'autoload' : { 'commands' : [ 'VimShell', "VimShellPop", "VimShellInteractive" ] }
\}


g:neobundle#default_options を利用する事で、わたしの実装とほとんど同じ挙動になると思います。
Vim を起動している最中に頻繁に画面を切り替えたりする人は設定しておくとよいと思います。