如何使 vim 语法突出显示整行?
Posted
技术标签:
【中文标题】如何使 vim 语法突出显示整行?【英文标题】:How do I make vim syntax highlight a whole line? 【发布时间】:2011-01-10 03:35:30 【问题描述】:我想让 vim 突出显示匹配某些模式的整行。我可以将一行中的所有文本突出显示(通过执行syn match MyMatch "^.*text-to-match.*$"
),但它总是停在文本的末尾。我想继续到学期结束,比如突出显示 CursorLine。
我尝试将$
替换为\n^
,希望能将其包裹起来。不用找了。 (我实际上没想到这会起作用,但尝试并没有什么坏处。)我还尝试调整 syn-pattern-offset(我在这里读到:http://vimdoc.sourceforge.net/htmldoc/syntax.html#:syn-pattern)。长话短说,添加 he=he-5
会少突出 5 个字符,但 he=he+5
不会显示任何多余的字符,因为没有要突出显示的字符。
这是我第一次尝试制作 vim 语法,而且我对 vim 还比较陌生。请保持温和并包括解释。
谢谢!
(编辑:忘了包括,这是一个多行高亮。这可能会增加一点复杂性。)
【问题讨论】:
你的模式应该是^.*text-to-match.*$
吗?
杰弗罗米,是的。 SO显然使用包装的星号来做斜体。现在已经修好了。
没有其他语法,但我的语法的其余部分完全有可能是自己打的。也许我应该从我想要完全突出显示的行开始,然后在工作后编写其余部分?
哦,我完全将“整行”读作“整行文本”。我怀疑实际上没有办法做到这一点。
一直在寻找同样的东西,实际上它对我有用,因为它忽略了 ^ 和 $
【参考方案1】:
它不是很适应,因为文件名(缓冲区)和行到整行突出显示需要明确标识,但显然可以使用 sign 命令:
可以突出显示整个 行使用 :sign 机制。 可以在
:help sign-commands
找到一个示例 简而言之:
:sign define wholeline linehl=ErrorMsg
:sign place 1 name=wholeline line=123 file=thisfile.txt
显然,您应该选择一个亮点 改变颜色的组 linehl 参数的背景。
来源:Erik Falor, vim mailing list
【讨论】:
您可以通过这种方式对整行进行背景高亮显示,但文本将失去语法高亮显示。【参考方案2】:来自syn-pattern
上的文档:
突出显示的区域永远不会 在匹配的文本之外。
如果你能做到这一点,我会觉得自己很惊讶,但话说回来,Vim 总是充满惊喜。
【讨论】:
是的,但模式匹配整行。它应该突出显示整行。 如果窗口是80个字符,文本是4个字符,只匹配4个字符,只高亮4个字符。 OP 希望突出显示所有 80 列。 杰伊说得对。无法通过标准语法高亮来模仿cursorline
选项的行为。语法高亮只是为了高亮现有的文本。
这很不幸,但也解释了为什么我无法弄清楚:-P【参考方案3】:
也可以试试 : 设置光标线 :设置光标列 像这样改变颜色: :hi 光标线 :hi cursorcolumn 使用通常的 term=、ctermfg=、ctermbg= 等 看到这个答案 VIM Highlight the whole current line
【讨论】:
以上是关于如何使 vim 语法突出显示整行?的主要内容,如果未能解决你的问题,请参考以下文章