我在 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
这基本上突出了文件中的每一行。一切显然都变得异常缓慢。