2012、268日目の記事になります。日本全国3億人のVimmerのみなさんこんにちは。最近.vimrcを1から書きなおしていると噂の私です。そこで、今回はももんが流NeoBundle管理術をお伝えして行きましょう。記事の対象NeoBundleに関する基本的な知識があるかたNeoBundleLazyを利用されている方コンセプトコンセプトは、プラグイン管理とプラグイン設定を分離させる、です。具体的には、NeoBundle及びNeoBundleLazyコマンドのオプションは、依存関係やビルドコマンドなどの「プラグインのインストール方法・管理方法」といったものに絞り、autoloadの設定やプラグイン読み込み時の設定は固有のセクションで管理していきます。これにより、プラグインリストの見通しがよくなりますし、まぁ色々便利になります。s:bundle_untap()endifはい、こんなかんじで、まずプラグインのリストを記述し、その下にプラグインごとの設定をs:bundle_tap関数によりセクション化しています。ここで、オリジナルの関数が3つ登場しています。s:bundle_tap、s:bundle_config、s:bundle_untapの3つですね。これらの関数によって、ある程度宣言的にNeoBundleの設定を記述できるようになります。それぞれ解説して行きましょう。s:bundle_tap、これは、引数としてプラグイン名を渡すことで、そのプラグインがNeoBundleでインストール・管理されており、かつ有効な状態であるかどうかを返し、同時に対象のプラグインを現在の設定対象プラグインとして設定します。設定対象プラグインは、自動的にs:tapped_bundle変数に格納されます。ここで言う「有効な状態である」とは、NeoBundle・NeoBundleLazyコマンドなどで呼び出され、NeoBundleによってrtpに追加されている状態を言います。一時的にプラグインを無効化したい場合はNeoBundle・NeoBundleLazyの行をコメントアウトするだけでよく、わざわざプラグイン個別の設定セクションを編集する必要はありません。次にs:bundle_config関数です。こちらに辞書を渡すと、現在の設定対象プラグインに対して、neobundle#config関数で設定を行ってくれます。現在の設定対象プラグインはs:tapped_bundleに格納されていますので、s:tapped_bundle.hooks.on_source関数を定義することで、プラグインの読み込みをフックとした設定も定義することができます。最後にs:bundle_untap関数ですが、こちらは単純にs:tapped_bundleの参照先プラグインをリセットする関数です。ここで、これらの関数のコードを見てみましょう。{}endfunctionお分かりでしょうか。実はこれら3つの関数は、neobundle#is_installed関数及びneobundle#config関数のハンドリングを抽象化したものに過ぎず、これに頼らずともそれらの関数を直接使用することでNeoBundleの設定を行うことは(当たり前ですが)可能です。これらの関数を利用することで、s:bundle_tap関数とif文により設定のセクションを明確化し、かつ閉じたスコープによりで何度もプラグイン名を記述することなくなることにより、無駄な記述を行わずプラグインの設定コードを書くことに集中することができます。結果として設定の見通しがよくなり、.vimrcのメンテナンスコストも当ももんが比約1/2となりました。まとめべんりはてブに追加この記事をツイートFeedlyで購読supermomongaかなりすごいことでゆうめい。したまちでしらぬものはいない。),;’EmacsユーザーがVimを1ヶ月使った感想RubyでGUIアプリを作るならJRuby+JavaFX+Rawrで決まり!automatic.vimでウィンドウの一時的分割をハンドリングしようVimと対話せよVimShellが動的プロンプトに対応しました(やばい)ジャズだって聴ける。X(1)homebrew(1)rbenv(1)Evil(1)Mechanize(1)Scraping(1)聴いてるやつ。