スポンサーリンク

このドキュメントの内容は、以下の通りです。

はじめに


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 ごとに違うタスクをやるので、必要なプラグインも違う
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]

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

はてなの人気のブックマーク

スポンサーリンク
 

過去ログ

2019 : 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

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー