用于VIM中语法突出显示的多个匹配项

时间:2013-05-07 03:43:07

标签: vim

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

我有两个主要目标。

首先,我想说第3列是“组件”字段(假设它标有标题;它也可以位于固定位置)并将背景设置为例如Gray。然后我想说组件“foo”获得Red的前景色,组件“bar”获得Green的前景色,但是它们应该继承“component”列的背景色。在这种情况下,该字段应该有两个语法匹配;这也可以很容易地隐藏整个列(la Toggling the concealed attribute for a syntax highlight in VIM

其次,有一个水平的领域;我想将关键级别消息的整行背景设置为红色,但应继续通过正常突出显示(组件,源等等)来设置前景;我将大多数其他要求中断。

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

由于

1 个答案:

答案 0 :(得分:0)

你不能(还)。对于每个字符,Vim仅使用一个特定的突出显示组,由最后一个“最内部”非透明语法组匹配确定。

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

有一个patch proposed会为combine命令添加:syntax修饰符;这是在Bram的Todo名单中。