12

我想让 vim 突出显示匹配某些模式的整行。我可以让一行中的所有文本突出显示(通过做syn match MyMatch "^.*text-to-match.*$"),但它总是停在文本的末尾。我想继续到学期结束,比如突出显示 CursorLine。

我试过用 替换$\n^希望能把它包起来。没变。(我实际上没想到这会起作用,但尝试并没有什么坏处。)我还尝试调整 syn-pattern-offset (我在这里读到:http: //vimdoc.sourceforge.net/htmldoc/syntax。 html#:syn 模式)。长话短说,添加he=he-5将突出显示少 5 个字符,但he=he+5不会显示任何额外的字符,因为没有要突出显示的字符。

这是我第一次尝试制作 vim 语法,而且我对 vim 比较陌生。请保持温和并包括解释。

谢谢!

(编辑:忘了包括,这是一个多行亮点。这可能会增加一点复杂性。)

4

3 回答 3

15

它不是很自适应,因为需要明确识别文件名(缓冲区)和行到整行突出显示,但显然可以使用sign命令:

可以使用:sign机制突出显示整行。 简而言之
,可以在以下位置找到一个示例::help sign-commands

:sign define wholeline linehl=ErrorMsg
:sign place 1 name=wholeline line=123 file=thisfile.txt

显然,您应该选择一个高亮组来更改 linehl 参数的背景颜色。

来源:Erik Falor,vim 邮件列表

于 2010-12-12T10:40:05.280 回答
10

从文档中syn-pattern

突出显示的区域永远不会超出匹配的文本。

如果你能做到这一点,我会觉得自己很惊讶,但话又说回来,Vim 总是充满惊喜。

于 2010-01-27T21:36:45.890 回答
0

也可以尝试 :set cursorline :set cursorcolumn 像这样改变颜色: :hi cursorline :hi cursorcolumn 使用通常的 term=, ctermfg=, ctermbg= 等 看到这个答案 VIM 突出显示整个当前行

于 2018-07-05T08:52:27.370 回答