我正在编写一个语法文件来匹配日志格式(基本上是基于列的;想想类似的例子中的syslog),我正在尝试为列设置一种继承类型。
我有两个主要目标。
首先,我想说第3列是“组件”字段(假设它标有标题;它也可以位于固定位置)并将背景设置为例如Gray。然后我想说组件“foo”获得Red的前景色,组件“bar”获得Green的前景色,但是它们应该继承“component”列的背景色。在这种情况下,该字段应该有两个语法匹配;这也可以很容易地隐藏整个列(la Toggling the concealed attribute for a syntax highlight in VIM)
其次,有一个水平的领域;我想将关键级别消息的整行背景设置为红色,但应继续通过正常突出显示(组件,源等等)来设置前景;我将大多数其他要求中断。/ p>
从我在vim文档中看到的内容来看,这似乎是不可能的。我错过了什么吗?或者,任何人都可以建议一个好的解决方法吗?
由于
答案 0 :(得分:0)
你不能(还)。对于每个字符,Vim仅使用一个特定的突出显示组,由最后一个“最内部”非透明语法组匹配确定。
要解决此问题,您需要定义组合的突出显示组和相应的:syntax
命令。一些语法(例如$VIMRUNTIME/syntax/html.vim
和各种Wiki格式)使用它来组合粗体,斜体和下划线,但在此之后它会变得乏味和重复。
有一个patch proposed会为combine
命令添加:syntax
修饰符;这是在Bram的Todo名单中。