NeoBundleでVimプラグインを遅延ロードする
スポンサーリンク
このドキュメントの内容は、以下の通りです。
はじめに
Windows の Vim の起動や1回目の編集モードが遅い、と書きました。
[2013-01-14-1] WindowsのVimが遅い
昨日([2013-01-14-1] WindowsのVimが遅い)に続き、もう少し、何が遅いのか調べました。
遅い理由を想像すると以下の通りです。
Vim を起動するのが遅いのは、おそらく、プラグインの数が多いだけでしょう。
Vimを挿入モードに切り替えたに、反応が一瞬なくなるので、neocomplcache と予測してました。
Vimライフを加速させるために、Vimの高速化のために、NeoBundle周りを見直しました。
neocomplcacheを無効にしてみる
NeoBundle に入る前に、前日の確認だけしました。
Vimが編集モードに、切り替わるときに、1回めだけ遅いのですが、原因を探るために、neocomplcacheを無効にしてみました。i を押しても、まったく固まらなくなりました。原因は、解明されましたが、このままだと有効にできないではないか、ということです。
遅延ロード
ここからが本題です。
Vim を起動したときに、.vimrc を読み込んで、NeoBundleなどで指定されたプラグインを次々とロードしていきます。多種多様な目的で、プラグインを導入していますが、ロードしたプラグインすべてが、常に必要というわけでもないはずです。
- C/C++モードでしか使わないプラグイン
- Unix でしか使わないプラグイン
- Windows でしか使わないプラグイン
- UnixとMac でしか使わないプラグイン
私の場合は、OS を複数使っていますが、すべての環境で同じことをしてるわけでもありません。
- OS に依存するプラグイン
- OS ごとに違うタスクをやるので、必要なプラグインも違う
Vimが起動したときに、すぐに使いはじめるもの、と、タスクによって必要なプラグインがあります。
最初から使うものは、起動時にロードするしかありませんが、それ以外のものはどうでしょうか?必要なときに、必要なプラグインが読み込まれれば十分です。
そこで、遅延ロードです。
NeoBundle は、遅延ロードをサポートしています。遅延ロードする命令は、NeoBundleLazy です。
詳しくは、ヘルプを参照して下さい。
:help neobundle-options-autoload
NeoBundleのアップデート
NeoBundleLazy 関係のために、一度、更新しておいたほうがよいでしょう。
:NeoBundleInstall!
[2012-10-01-1] vim NeoBundleによるプラグイン管理
遅延ロードの設定
NeoBundle の遅延ロードは、ロードする条件を書けます。
以前は、NeoBundleLazyとNeoBundleSource を組分せる方法がありましたが、今回は、NeoBundleLazy だけを使います。
下記は、ファイルタイプを条件にしています。
NeoBundleLazy 'mediawiki.vim', { \ "autoload" : { "filetypes" : [ "mediawiki" ] } }
下記の設定だけだと読み込まれません。
NeoBundleLazy 'mediawiki.vim'
neocomplcache での例。
let g:neocomplcache_enable_at_startup = 1 " 起動時に有効化 NeoBundleLazy 'Shougo/neocomplcache', '', 'same', {'autoload' : { 'insert':1}}これは、モード変更時の解決には、なってない...。
filetypeでロードを限定すれば、不便もあるけど、いいかも。
C/C++, PHP に限定する例。
let g:neocomplcache_enable_at_startup = 1 " 起動時に有効化 NeoBundleLazy 'Shougo/neocomplcache', { \ "autoload" : { "filetypes" : [ "c", "cpp", "php" ] } }
OSごとにロードを分ける
OS ごとに使うもの、使わないものがあるので、それぞれ必要なものだけを対称にしました。
これは、例です。
if has("win32") || has("win64") " 設定 NeoBundleLazy 'mediawiki.vim', { "autoload" : { "filetypes" : [ "mediawiki" ] } } endif if has("unix") || has("mac") NeoBundle 'vim-scripts/gtags.vim', { "autoload" : { "filetypes" : [ "c", "cpp" ] } } NeoBundle 'vim-scripts/sudo.vim' endif
まとめ
- 必要なものは必要なタイミングでロードする
- OS ごとに必要なものをロードする
- いつも必要なプラグインは、 NeoBundle でロードする
- 適宜ロードするプラグインは、 NeoBundleLazy でロードする
参照しているページ (サイト内): [2012-10-01-1]
スポンサーリンク
スポンサーリンク
いつもシェア、ありがとうございます!
もっと情報を探しませんか?
関連記事
最近の記事
- パナソニック ジェットウォッシャードルツ EW-DJ61-Wのホースの修理
- LinuxセキュリティモジュールIntegrity Policy Enforcement
- アマゾンのEcho Show 5を買ったのでレビューします
- アマゾンのサイバーマンデーはAlexa Echo Show 5が安い
- Android スマートフォン OnePlus 7T と OnePlus 7の違い
- Android スマートフォン OnePlus 7 をAndroid10にアップデートしてみた
- クレジットカードのバーチャルカードの比較のまとめ
- 活動量計 Xiaomi Mi Band 4を買ってみたのでレビュー
- Android スマートフォン OnePlus 7 のレビュー
- AliExpressでスマートフォンを買い物してみた
- パソコンのホコリ対策 レンジフードフィルターと養生テープ
- 80PLUS GOLDのPC電源ユニットAntec NeoEco 750 Goldのレビュー
- イギリスの付加価値税 VAT は払い戻しを受けられる
- イギリスのロンドンでスーツケースなど荷物を預けられる場所は
- イギリスのロンドンで地下鉄やバスに乗るならオイスターカードを使おう
- イギリスのヒースロー空港からロンドン市内への行き方
- 航空便でほかの航空会社に乗り継ぎがある場合のオンラインチェックイン
- SFC会員がANA便ではなくベトナム航空のコードシェアを試して解ったこと
- ベトナムの入国審査でeチケットの掲示が必要だった話
- シアトルの交通ICカードはオルカカード(Orca)です
人気のページ
- Windows7 IME 辞書ツールで単語の登録に失敗しました
- C言語 popen()でコマンドを実行して出力を読み込む
- Windows7で休止状態にする方法
- CentOS MySQLの起動、停止、再起動
- loggerコマンドでsyslogにエラーを出力する方法
- パソコンパーツの買取をしてくれる店のまとめ
- Java Mapの使い方 get(),put(),remove(),size(),clear()
- 楽天のRポイントカードを作ってみた
- iPhone 5 から iPhone 6 に乗り換えたのでレビュー
- netstatコマンドのステータスの意味
スポンサーリンク
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 122019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12