如何让 vim 语法高亮整行?

发布于 2024-08-20 01:55:21 字数 627 浏览 10 评论 0原文

我想让 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 还比较陌生。请保持温和并提供解释。

谢谢!

(编辑:忘记包含,这是多行突出显示。这可能会增加一点复杂性。)

I'd like to have vim highlight entire lines that match certain patterns. I can get all the text in a line to highlight (by doing syn match MyMatch "^.*text-to-match.*$"), but it always stops at the end of the text. I'd like to to continue to the end of the term, like highlighting CursorLine.

I've tried replacing $ with a \n^, hoping that would wrap it around. No change. (I didn't actually expect this would work, but there's no harm in trying.) I also tried adjusting the syn-pattern-offset (which I read about here: http://vimdoc.sourceforge.net/htmldoc/syntax.html#:syn-pattern). Long story short, adding he=he-5 will highlight 5 fewer characters, but he=he+5 doesn't show any extra characters because there aren't characters to highlight.

This is my first attempt at making a vim syntax and I'm relatively new to vim. Please be gentle and include explanations.

Thanks!

(edit: Forgot to include, this is a multiline highlight. That probably increases the complexity a bit.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

自由如风 2024-08-27 01:55:21

它的适应性不是很强,因为需要明确标识文件名(缓冲区)和行到整行突出显示,但显然 sign 命令:

可以突出显示整个
使用 :sign 机制的线路。
可以在 :help 中找到示例
签名命令

简而言之:

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

显然,你应该选择一个亮点
改变颜色的组
linehl 论证的背景。

来源: Erik Falor,vim 邮件列表

It's not very adaptive as the filename (buffer) and line to full row highlight needs to be explicitly identified, but apparently the sign command can be used:

It is possible to highlight an entire
line using the :sign mechanism.
An example can be found at :help
sign-commands

In a nutshell:

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

Obviously, you should pick a higlight
group that changes the color of the
background for the linehl argument.

source: Erik Falor, vim mailing list

忱杏 2024-08-27 01:55:21

来自 syn-pattern 的文档:

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

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

From the documentation on syn-pattern:

The highlighted area will never be
outside of the matched text.

I'd count myself surprised if you got this to work, but then again, Vim is always full of surprises.

无言温柔 2024-08-27 01:55:21

也可以尝试
:设置光标线
:设置光标列
像这样改变颜色:
:嗨光标线
:嗨光标栏
使用常用术语=、ctermfg=、ctermbg= 等
看到这个答案
VIM 突出显示整个当前行

could also try
:set cursorline
:set cursorcolumn
change colors like this:
:hi cursorline
:hi cursorcolumn
using the usual term=, ctermfg=, ctermbg= etc
see this answer
VIM Highlight the whole current line

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文