web-dev-qa-db-ja.com

どのプラグインがVimを遅くしているのかを確認する方法は?

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

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

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

281
charlax

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

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

noautocmdを終了することは実際には必要ありませんが、vimをより速く終了するだけです)。

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

448
ZyX

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

vim --startuptime timeCost.txt timeCost.txt

実行してください:

:help --startuptime

VIMで詳細を取得します。

66
feihu

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

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

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

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

28
Ingo Karkat

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

vim -V12log

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

14
Prince Goulash

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

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