在Vim中突出显示单词/行的表现

时间:2012-10-28 17:41:51

标签: performance vim highlighting

我在VimL中有一组小函数,根据特定条件突出显示一行(或一个单词)。

您应该考虑函数的工作方式与拼写(:set spell)类似,并在条件满足时加下划线。

然而,我发现,当突出显示的行数超过75时,移动时会出现明显的滞后现象。无论是从一侧到另一侧,还是向上或向下。

我有一些方便的AutoCommands我默认启用(例如,回显为什么突出显示该行),但即使所有这些都被禁用,只要我调用突出显示所有内容的函数,我可以说有一个巨大的滞后。

这是我用来突出显示的一个词:

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

这就是我用来突出整行的原因

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

我用作确定延迟的参考的75号只是一个参考,对我来说这是一个很好的选择,但只是为了证明大多数事情变得越来越糟。

我还使用SpellBad突出显示MyCheck,但严重怀疑这会导致任何问题。

我能做些什么来避免滞后? matchadd是最佳选择吗?

编辑: 为了确保它不是我的任何功能或代码做一些奇怪的事情,我打开了一个500行文件并做了这个:

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

这基本上突出显示了文件中的每一行。一切显然都很慢。

1 个答案:

答案 0 :(得分:0)

取消设置游标线会对性能产生极大的(正面)影响。

我做了:set nocursorline现在我的动作(无论突出显示)都像以前一样活泼。