Vimを遅くしているプラ​​グインを確認するにはどうすればよいですか?


318

Vimプラグインをプロファイルする方法はありますか?

大きなものを開くと、MacVimが次第に遅くなります.py。すべてのプラグインの選択を解除し、1つずつ再選択して、どのプラグインが原因であるかを確認できることはわかっていますが、もっと速い方法はありますか?

私のdotvimはここにあります:https : //github.com/charlax/dotvim



1
実際には、起動は問題ありません。Vimは数分使用すると遅くなります。特に.pyファイルに関係します。
charlax 2012

二分探索進むべき道です。2時間前に質問しましたが、問題の原因はその時間内に発見されていました。インゴカーカットのautocmd直感は、私にとってもっともらしい音です。
romainl 2012

それは本当です-しかし、1時間で同じ結果を得る方法がある場合、それはより良いと思いませんか?さらに、起動は問題なく、数分の使用後なので、非常に長い時間がかかっていました。autocmdかっこいいね。試してみただけですが、Vimは今のところ遅くありません。
charlax 2012

1
ちょうど同じ問題に直面しましたが、大きなルビファイルです。folding=syntax遅くなることがわかった。試してみましたがfolding=manual、今ではすべてが正常に機能しています
Aleksandr K.

回答:


496

組み込みのプロファイリングサポートを使用できます:vim doを起動した後

:profile start profile.log
:profile func *
:profile file *
" At this point do slow actions
:profile pause
:noautocmd qall!

(終了noautocmdが実際に必要ではないのとは異なり、vimをより速く終了させるだけです)。

注:vimが終了する前に削除された関数に関する情報は取得できません。


13
これは素晴らしいです。EasyTagsが原因であることがわかりました。どうもありがとう!
charlax

5
これにより、「vim-gitgutter」が詰まりとして検出されました。
セバスティアンGrignoli

6
@subjectego :set more | verbose function {function_name}は、関数の内容とその場所を示します。
ZyX 2015

26
明確でない場合、結果profile.logはVimセッションの現在のディレクトリにあるファイルになります。
ミカ・スミス

7
の最後にジャンプして、profile.log合計時間で並べ替えられた関数のリストを確認します(profile.log最後に並べ替えられたリストがあることに気付くまで、私には役に立たないようでした)。
Andrey Portnoy 2018年

78

.vimrcの読み込み中に正確なタイミングメッセージを表示する、非常に役立つ別のvimビルドインメソッドを見つけました。

vim --startuptime timeCost.txt timeCost.txt

実行してください:

:help --startuptime

VIMで詳細情報を取得します。


3
他の誰かが疑問に思っている場合に備えて、これはすべてのvim / gvimディストリビューションには存在しません。在庫品のWin Gvim 7.4はここにはありません(viminfoに記載されていますが)
thynctank 2014

1
@thynctank私のgvim 7.4を試してみましたが、うまくいきました。ここに私のバージョンがあるIM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 10 2013 14:33:40)
feihu

ベストアンサー!vimを起動するたびに腹を立てる最も遅いプラグインを特定するのに役立ちました。Thanx :)
kovpack 2016

これと基本的には、-Vそれが非ローカルであることを示した$HOME問題の原因
BSB

:eファイルを更新するには、実行する必要があります。同様に、各操作に要した合計時間に従ってファイルを所定の場所に並べ替えます:%! sort -k2 -nr
Ashutosh Jindal

31

プラグインまたは構文の強調表示である可能性があります。:syntax offこれが発生したときに試して、Vimがすぐに速くなるかどうかを確認してください。

プラグインでは、「一般的な遅延」は通常、自動コマンドに起因します。a :autocmdはそれらすべてをリストします。を介してそれらのいくつかを殺して調査し:autocmd! [group] {event}ます。頻度の高いイベントCursorMoved[I](例BufWinEnter)から頻度の低いイベント(例)に進みます。

~/.vim/plugin/速度の低下をある程度確実に再現できる場合は、バイナリ検索が役立つ場合があります。でファイルの半分を移動してから、もう一方を低速のセットで繰り返します。

実際に内部を調べる必要がある場合は、:profileコマンドが有効になっているVimバージョンを入手してください。(バニラBIG Windowsバージョンではありませんが、Cygwinに同梱されているバージョンにはあります。また、ほとんどのディストリビューションで自己コンパイルは非常に簡単です。)


17

次の-VオプションでVimを起動して、すべてのVimアクティビティをファイルに出力すると便利です。

vim -V12log

これは最大の冗長性(レベル12)を提供し、それをファイルに出力しますlog。次に、遅いことがわかっているVimアクションをいくつか実行してから、内部で呼び出されている関数/マッピングを確認できます。


10
ログにタイミングがない
Kokizzu

7

画面の更新操作(^L、スクロールなど)が遅いという問題がある場合、問題は非効率的な構文強調表示ファイルである可能性があります。これをテストするには、構文の強調表示(:syn off)を一時的に無効にし、問題が解消するかどうかを確認します。詳細を確認したい場合は、次のコマンドを使用して現在の構文ファイルのプロファイルを作成できます:syntime

  1. 構文を強調表示するパフォーマンスの問題を引き起こすファイルを開きます。
  2. 実行:syntime onしてプロファイリングを開始します。
  3. ファイルを少しスクロールします。
  4. 実行:syntime reportしてレポートを生成します。レポートの最初にリストされているパターンは、処理に最も時間がかかったパターンです。

2
構文強調表示ファイルが原因であると思われる場合、次のアクションは何ですか?
Spectator6
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.