【发布时间】:2010-02-04 15:54:23
【问题描述】:
这是来自:
VIM: simple steps to create syntax highlight file - for logfiles
我正在尝试使用“区域匹配”工具在一些日志文件中语法高亮堆栈跟踪:这些日志文件(基于 log4j)看起来有点像这样:
YYYY-MM-DD HH:MM:ss,SSSS...INFO...Message
YYYY-MM-DD HH:MM:ss,SSSS...INFO...Message
YYYY-MM-DD HH:MM:ss,SSSS...ERROR...Message
...stack trace...
...stack trace...
...blah blah, more server-vomit...
...
YYYY-MM-DD HH:MM:ss,SSSS...INFO...Message
到目前为止,我几乎已经成功地做到了:
:syntax region error matchgroup=string start=/^\d\{4}-\d\{2}-\d\{2} \d\{2}:\d\{2}:\d\{2},\d\{3}.* ERROR/ end=/^\d\{4}-\d\{2}-\d\{2} \d\{2}:\d\{2}:\d\{2},\d\{3}/
但问题是匹配太过分了 - 它包括下一条记录(即,匹配包括下一条 YYYY-MM-DD....)。
我相信从 VIM 手册中的这个示例(关于引用文本的示例)中,我应该能够在两者之间突出显示? (但我似乎无法为我的示例映射语法)
http://vimdoc.sourceforge.net/htmldoc/syntax.html#:syn-excludenl
所以要明确一点:我需要匹配第一个 YYYY-MM-DD... 行(包括“错误”),然后匹配所有后续行,但不包括下一个 YYYY-MM-DD 行。
【问题讨论】:
-
带区域的解决方案看起来有点难看。末尾的这个 '^' 开始符号就像一个 hack。
标签: vim syntax-highlighting logging