2

我在 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

这基本上突出了文件中的每一行。一切显然都变得异常缓慢。

4

1 回答 1

0

取消设置 cursorline 对性能有很大的(积极的)影响。

我做到了:set nocursorline,现在我的动作(不管突出显示)和以前一样敏捷。

于 2012-12-19T16:04:29.307 回答