2

我正在编写一个语法文件来匹配日志格式(基本上是基于列的;类似的例子可以考虑 syslog),并且我正在尝试为列设置一种继承类型。

我有两个主要目标。

首先,我想说第 3 列是“组件”字段(假设它由标题标记;它也可以在固定位置)并将背景设置为灰色。然后我想说组件“foo”的前景色为红色,组件“bar”的前景色为绿色,但它们应该继承“组件”列的背景色。在这种情况下,该字段实际上应该有两个语法匹配;这也使得隐藏整个列变得容易(在 VIM 中切换隐藏属性以实现语法高亮

其次,有一个级别字段;我想将关键级别消息的整行背景设置为红色,但应继续通过正常突出显示设置前景(组件、源等;我放弃了大部分其他要求)。

从我在 vim 文档中可以看到,这似乎是不可能的。我错过了什么吗?或者,任何人都可以提出一个好的解决方法吗?

谢谢

4

1 回答 1

1

你不能(还)。对于每个字符,Vim 只使用一个特定的高亮组,由最后一个“最内部”非透明语法组匹配决定。

要解决此问题,您需要定义组合的高亮组和相应的:syntax命令。一些语法(例如$VIMRUNTIME/syntax/html.vim,以及各种 Wiki 格式)使用它来组合粗体、斜体和下划线,但之后会变得乏味和重复。

提出了一个补丁,可以为命令添加combine修饰符;:syntax它在 Bram 的待办事项列表中。

于 2013-05-07T08:53:19.643 回答