突出显示由模式定义的文本

时间:2012-04-03 17:23:15

标签: regex highlighting vim

我想突出显示光标前的文本的某些部分以及光标后的文本的某些部分。 光标前后的部分将由某种模式定义(如正则表达式)。这种模式不应受到线条的限制。 突出显示的区域将随光标移动而改变。

这在vim设置或脚本中是否可行?

1 个答案:

答案 0 :(得分:2)

理论上,以下两个命令都应该有效:

match Error /\v\u\_\U{-}%#\_.{-}\./
syn match Error /\v\u\_\U{-}%#\_.{-}\./

。最后,使用这两个命令我发现了一个错误:在我点击<C-l>之前,突出显示没有正确更新。更多信息,:syn match有时会突出显示两个不同句子的两个不同部分,因此首选一个更优先(另请参阅:h matchadd():h 2match,因为:match突出显示可能会消失,因为它AFAIR也被其他东西使用。)

更新:虽然由于上述错误我不建议将其添加到vimrc,但您可以使用以下内容:

augroup vimrcSentenceMatch
    autocmd!
    autocmd WinEnter * : if !exists('w:sentence_match') 
                     \ |     let w:sentence_match=matchadd('Error', '\v\u\_\U{-}%#\_.{-}\.')
                     \ | endif
augroup END