Vimは構文をオンにして時間をかけて遅くなります


11

syntax onVimを使用する際に守れることはありますか?

実質的なものを開くとすぐに、しばらくすると編集することがほぼ不可能になります。キーを押すたびに遅延が発生します。構文の強調表示をオフにするか、vimを再起動すると、問題ありません。

私はsynmaxcol120に設定しました。サンプルのルビファイルは59行のみで、80文字を超えません。

とを使用vim-rubyしていvim-railsます。

問題は、遅延が時間の経過とともに蓄積するように見えることです。ファイルを最初から開くと問題ありません。しばらくすると、だんだん遅くなります。


1
これを複製してみましたvim -Nu NONE -c 'syntax on'か?この投稿の
akshay

どのファイルタイプ?どれか?
romainl 2015

1
ルビー。確かにそれはで編集-u NONEできるので、その場合はプラグインでなければなりません。ほとんどの質問に対する答えは「犯人が見つかるまでプラグインを無効にする」だと思います:(
firedev

しかし問題は-遅延は時間の経過とともに蓄積するようです。ファイルを最初から開くと問題ありません。しばらくすると、だんだん遅くなります。
firedev 2015

回答:


13

最近のVimバージョンには、:syntime各構文グループが一致するのにかかる時間のレポートを生成することにより、構文の強調表示の遅さをトラブルシューティングするコマンドがあります。これは非常に役立ち、犯人をすばやく見つけることができます。唯一の欠点は、プロファイリングを有効にしたVimの(通常は「巨大な」)ビルドが必要なことです。:help :syntimeそれを使用する方法についての良い指示を提供します。

または、(現在のに従って)~/.vim/syntax/およびから個々の構文スクリプトを削除してから、スクリプト内の構文定義の一部を削除してさらにドリルダウンすることもできます。$VIMRUNTIME/syntax/'filetype'


うーん面白い、これはタグ関連の何かのように聞こえます。最も時間がかかる一番上の行には、他のプロジェクトのメソッドがあります。 TOTAL COUNT MATCH SLOWEST AVERAGE NAME PATTERN 0.129674 247 182 0.002365 0.000525 rubyMethodNameTag \C\<\%(roi\|paginate\|admin_index_attributes\|facilities\|manager\|net_price?\ ....–これは明らかに他のフォルダからのものです。タグを無効にしますか?
firedev 2015

vim-easytagsなどのタグを強調表示するプラグインを使用していますか?それは確かに減速を引き起こすかもしれません。
Ingo Karkat

うん、それを無効にしたのではなく、数が再び正気である。ありがとう。
firedev 2015

うーん、今度は再び動作します。今回は次のとおりです0.121880 2078 54 0.002260 0.000059 rubySymbol []})\"':]\@<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@= 。–それについて私ができることは何ですか?
firedev 2015

2
新しい正規表現エンジンかもしれません。試す:set regexpengine=1(Rubyファイルを開く前に、新しいVimインスタンスで最適)。
Ingo Karkat

5

vimの構文ハイライトのもう1つの典型的なボトルネックは、折りたたみです。折りたたみに多くの構文項目が含まれている場合(つまり、基本的には複数行に渡る場合)、vimは挿入されたすべての文字のすべての構文を更新するため、編集が非常に遅くなる可能性があります。

これが発生している場合は、FastFoldプラグインの使用をお勧めします。このプラグインは構文の折り畳みを識別し、それらを手動の折り畳みに置き換え、vimの構文の強調表示をはるかに高速にします。


1

これが最後に私がしたことです:

  • 削除されました xolox/vim-easytags
  • 削除されました xolox/vim-misc
  • 交換 kien/ctrlp d11wtq/ctrlp_bdeletetacahiroy/ctrlp-funkyjunegunn/fzf
  • セットする regexpengine=1

今のところ、Vimはバターのように滑らかですが、タグはもうありません。はぁ...


1
Vimには組み込みのタグサポートがあります。サードパーティのプラグインは必要ありません(もちろん、タグファイルを生成するためのctags以外)。Tim PopeによるGitを使った簡単なCtagsの記事を参照してください。私はこれを使用し、それは不思議に動作します。:help tag-commandsタグにジャンプすることも参照してください。私はVimで作業するときにctagsをかなり不可欠だと考えています。ナビゲーションが非常に簡単になり、:help i_Ctrl-x_Ctrl-]
akshay

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.