2012-10-28 33 views
2

根據特定條件,我在VimL中有一組小函數突出顯示一行(或一個單詞)。在Vim中突出顯示單詞/行的性能

您應該考慮功能的工作方式與拼寫(:set spell)類似,強調何時符合條件。

但是,我發現當高亮線的數量超過75時,移動時會出現明顯的滯後。無論是從一側到另一側還是向上或向下。

我有一些方便的AutoCommands,我默認情況下啓用(例如,爲了迴應爲什麼該行被突出顯示),但即使他們都被禁用,只要我調用突出顯示所有內容的函數,我可以告訴有一個巨大的滯後。

這是我使用突出一個字是什麼:

call matchadd('MyCheck', '^\%'. line . 'l\_.\{-}\zs\k\+\k\@!\%>' . column . 'c') 

這是我用來突顯整體線條

call matchadd('MyCheck', '\%' . line . 'l\n\@!') 

75號我作爲參考用於確定一個滯後只是一個參考,對我來說這是一個甜蜜的地方,但僅僅是爲了證明大多數事情越來越糟糕。

我也使用SpellBadMyCheck突出顯示,但嚴重懷疑這會導致任何問題。

有什麼我可以做的不同,以避免滯後? matchadd是最佳選擇嗎?

編輯: 只是爲了確保它不是我的任何功能或代碼做一些奇怪的,我開了一個500行的文件,這樣做,:

highlight link MyCheck SpellBad              
for line in range(line('$')) 
    call matchadd('MyCheck', '\%' . line . 'l\n\@!') 
endfor 

這基本上凸顯了該文件的每一個行。一切顯然變得不可能慢。

+0

如果解決了問題,您可以將編輯1移動到答案並選擇它作爲解決方案。 –

回答

0

取消設置cursorline對性能有很大的(正面)影響。

我做了:set nocursorline,現在我的動作(不管突出顯示)都像以前一樣活潑。