如何使 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 语法突出显示整行?的主要内容,如果未能解决你的问题,请参考以下文章

vim 在 Docker 容器中使用时不突出显示语法

单元格处于活动状态时突出显示整行

如何突出显示和检测 CSS 网格行上的鼠标点击?

哪种语言的语法突出显示.vimrc使用?

如何关闭 Vim 搜索突出显示

XtraGrid 整行突出显示,除了单击的单元格