2010-01-30 98 views
55

大多數情況下,Vim中的自動完成功能對我來說很好,但有時它似乎在掃描當前文件引用的文件,然後它變得非常緩慢,有時需要幾秒鐘才能釋放焦點回到我的身邊。Vim的自動完成速度很慢

有時Vim的告訴我簡單地認爲它是「掃描」其他時候,它說:「掃描標籤」

我只有這一點在Ruby文件,並且它發生主要是當有文件中的要求。

我的猜測是,這是某種功能,它會檢查相關文件的自動完成選項,但我並不真的需要這種功能,並且希望更快地自動完成。

+1

你使用了什麼樣的完整功能? –

+1

我有同樣的問題,但在C++中。你有沒有受到控制?我嘗試過使用和不使用標籤文件,但是它會以遞歸方式持續掃描當前目錄(我將它放大,看看它在做什麼,並且一直在調用它可以找到的所有文件的統計信息)。這是一個清晰的環境== slooooow。 – falstro

回答

98

正如我在評論中提到的,我有同樣的問題。這是我發現的;

有一個設置告訴VIM在哪裏尋找完成,稱爲complete

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

這是默認值。我的問題是(實際上是)'我',它掃描所有包含的文件。這裏有兩個問題,第一個,找到所有這些文件可能需要相當長的時間,特別是如果你像我一樣,有

:set path=** 

問題二,一旦發現,他們需要被讀取,如果你如果使用網絡文件系統(我是清晰的),發現並讀取所有這些文件可能會觸發緩存未命中,使其變得非常緩慢。

我已經刪除了我現在,因爲我有一個標籤,文件,往往不是,我也有我的緩衝區(加載或卸載)相關的文件將被搜索「B的結果' 和你'。

使用

set complete-=i 

從列表中刪除我,注意,這是本地緩存。

+0

非常感謝。這是'insert.txt'幫助中未提及的其中一個曝光不足的相關配置選項 – sehe

4

您有正在使用的項目的標籤文件嗎?如果不嘗試使用exuberant-ctags生成一個,Vim應該使用taglist pluglin來獲取它。

+0

ctags -R 在您的項目根目錄中;是你的命令,如果你在linux上 – gustavgans

40

從升級到Vim 7.3(從7.2開始)有一個非常類似的問題:我使用(出色的)ACP plugin,在較長的源文件(C文件,1700 LOC)中,彈出窗口花費時間跳過這些建議當我在文件底部附近進行編輯時。

使用PerformanceValidator(從Softwareverify),我發現了一些摺疊方法進行了一次又一次打來電話,導致非常高的處理器負載和緩慢完成。

我的解決方法是將foldmethodfdm)設置爲manual。這解決了它...

+1

您真是太棒了。對於我來說,在Ruby文件中完成的速度非常慢,文件大小很小(大約100 LOC)。解決不了。然後我讀了這個。我將Ruby緩衝區中的foldmethod更改爲除「語法」之外的任何內容,並立即完成完成。 現在,爲什麼在Vim執行自動完成時,foldmethod被稱爲瘋狂? – Legion

+1

這也適用於我。再說一遍,「爲什麼在Vim做自動完成時,foldmethod被稱爲瘋狂?」! – Jason

+1

如果可以的話,我會給+5。大聲呼籲[這個博客](http://economyofeffort.com/2012/03/01/fixing-slow-vim-auto-completion-with-ruby-files/)指向我在這裏。 – Kelvin