Vimプラグインをプロファイルする方法はありますか?
大規模な.py
を開くと、MacVimはますます遅くなります。すべてのプラグインの選択を解除し、1つずつ選択し直して、どのプラグインが原因かを確認できますが、もっと速い方法はありますか?
私のdotvimはここにあります: https://github.com/charlax/dotvim
組み込みのプロファイリングサポートを使用できます:vim doを起動した後
:profile start profile.log
:profile func *
:profile file *
" At this point do slow actions
:profile pause
:noautocmd qall!
(noautocmd
を終了することは実際には必要ありませんが、vimをより速く終了するだけです)。
注:vimを終了する前に削除された機能に関する情報は取得できません。
.vimrcの読み込み中に正確なタイミングメッセージを表示するための別の非常に役立つvim buildinメソッドを見つけました。
vim --startuptime timeCost.txt timeCost.txt
実行してください:
:help --startuptime
VIMで詳細を取得します。
プラグインまたは構文強調表示である可能性があります。これが発生したときに:syntax off
を試して、Vimがすぐに速くなるかどうかを確認してください。
プラグインでは、「一般的な遅延」は通常オートコマンドに起因します。 :autocmd
はそれらすべてをリストします。 :autocmd! [group] {event}
を介してそれらのいくつかを殺して調査します。頻度の高いイベント(CursorMoved[I]
)から頻度の低いイベント(BufWinEnter
など)に進みます。
速度の低下をある程度確実に再現できる場合は、バイナリ検索が役立ちます。~/.vim/plugin/
のファイルの半分を移動し、次にもう一方を低速のセットで繰り返します。
本当に内部を見る必要がある場合は、:profile
コマンドが有効になっているVimバージョンを入手してください。 (Vanilla BIG Windowsバージョンではありませんが、Cygwinに同梱されているバージョンにはあります。また、ほとんどのディストリビューションでは自己コンパイルが非常に簡単です。)
-V
オプションを指定してVimを起動することにより、すべてのVimアクティビティをファイルに出力すると便利です。
vim -V12log
これにより、最大の詳細度(レベル12)が提供され、ファイルlog
に出力されます。その後、遅いことがわかっているいくつかのVimアクションを実行し、どの関数/マッピングが内部で呼び出されているかを確認できます。
画面の更新操作(^L
、スクロールなど)に問題がある場合は、構文の強調表示ファイルが効率的でない可能性があります。これをテストするには、構文の強調表示(:syn off
)を一時的に無効にし、問題が解決するかどうかを確認します。詳細を調べたい場合は、:syntime
を使用して現在の構文ファイルのプロファイルを作成できます。
:syntime on
を実行してプロファイリングを開始します。:syntime report
を実行してレポートを生成します。レポートの最初にリストされているパターンは、処理に最も時間がかかったパターンです。