web-dev-qa-db-ja.com

Vimのオートコンプリートは途方もなく遅い

ほとんどの場合、Vimのオートコンプリート機能は私にとってはうまく機能しますが、現在のファイルが参照しているファイルをスキャンしているように見えることがあり、それから非常に遅くなり、フォーカスを解放するのに数秒かかることがあります。

時々Vimはそれが「スキャン中」であると単に私に言う、それは「タグをスキャンしている」と言っている

私はこれがRubyファイルでのみ発生し、ファイルにrequireがある場合にほとんど発生します。

これは、関連ファイルのオートコンプリートオプションをチェックする機能の一種だと思いますが、実際には必要ないので、より高速なオートコンプリートをお勧めします。

63
jnicklas

コメントで述べたように、私は同じ問題を抱えていました。これが私が見つけたものです。

VIM completeと呼ばれる補完を探す場所を指示する設定があります。

:set complete
complete=.,w,b,u,t,i

これがデフォルト値です。私の問題は(実際には..)含まれているすべてのファイルをスキャンする「i」です。ここに2つの問題があります。最初の問題はfindingこれらのファイルはすべて、特に私のように、

:set path=**

2番目の問題は、見つかったら読み取る必要があります。ネットワークファイルシステムを使用している場合(私はクリアケースを使用しています)、これらのファイルをすべて見つけて読み取ると、キャッシュミスが発生し、非常に遅くなる可能性があります。

タグファイルがあり、多くの場合、「b」と「u」の結果として検索される関連ファイル(ロードまたはアンロード)もあるため、今のところiを削除しました。 '。

使用する

set complete-=i

リストからiを削除するには、これがバッファに対してローカルであることに注意してください。

107
falstro

Vim 7.3(7.2から)にアップグレードしてから非常によく似た問題がありました:(優れた) ACPプラグイン を使用していましたが、より長いソースファイル(Cファイル、1700 LOC)では、ポップアップに何年もかかりましたファイルの下部近くで編集していたときに、提案をジャンプします。

PerformanceValidator (from Softwareverify )を使用すると、いくつかのfoldメソッドが何度も呼び出され、プロセッサの負荷が非常に高くなり、完了が遅くなることがわかりました。

私の回避策は foldmethodfdm)を manual に設定することでした。そしてこれはそれを解決しました...

42
eckes

作業中のプロジェクトのタグファイルはありますか?そうでない場合は、exuberant-ctagsを使用して生成してみてください。そうすれば、Vimはタグリストプラグリンでそれを取得する必要があります。

5
Farrel