如果匹配的线路在屏幕外,Vim matchadd可以工作吗?

时间:2017-03-09 20:36:40

标签: vim

如果我运行this,则要突出显示从private行到end行的所有内容:

:call matchadd('Error', '^.*private\_.\{-}\(^end\)\@=')

然后它仅在屏幕上显示private行时才有效。

如果我滚过它,所以它不在屏幕上,当我运行该命令时,没有任何内容突出显示。

这是matchadd的固有限制吗?有什么方法吗?

1 个答案:

答案 0 :(得分:1)

:match用于突出显示当前在窗口中可见的(短)内容。因此,出于性能原因,它会将搜索范围限制为当前可见的文本。

您尝试做的是滥用该功能。如果您确实需要此功能,请确定:autocmd TextChanged,TextChangedI <buffer>上涵盖私有函数的行,并使用与所有这些行号匹配的正则表达式调用matchadd()(例如\%>4l\%<7l.*)。