如何让vim语法突出显示整行?

val*_*dil 11 syntax vim syntax-highlighting highlighting line

我想让vim突出显示符合某些模式的整行.我可以在一行中获取所有文本以突出显示(通过执行syn match MyMatch "^.*text-to-match.*$"),但它始终在文本末尾停止.我想继续这个术语的结尾,就像突出显示CursorLine一样.

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

这是我第一次尝试制作vim语法,而且我对vim相对较新.请保持温和,并附上解释.

谢谢!

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

mat*_*kie 13

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

可以使用:符号机制突出显示整行.
一个例子可以:help sign-commands
在简而言之找到:

:sign define wholeline linehl=ErrorMsg
:sign place 1 name=wholeline line=123 file=thisfile.txt
Run Code Online (Sandbox Code Playgroud)

显然,你应该选择一个higlight组来改变linehl参数的背景颜色.

来源:Erik Falor,vim邮件列表


Jay*_*Jay 9

从以下文档syn-pattern:

突出显示的区域永远不会出现在匹配的文本之外.

如果你让这个工作起来我会感到很惊讶,但是再一次,Vim总是充满了惊喜.

  • 如果窗口为80个字符,文本为4个字符,则仅匹配4个字符,仅突出显示4个字符。OP 希望突出显示所有 80 列。 (2认同)
  • 杰伊是对的.使用标准语法高亮显示无法模仿`cursorline`选项的行为.语法突出显示仅用于突出显示现有文本. (2认同)