我有采用以下形式的日志文件:
YYYY-MM-DD HH:MM:SS.sss SEVERITY [thread.name] class.name:line -
严重性是DEBUG,INFO,WARN或ERROR之一。
我设置了一个语法文件,可以唯一地突出显示时间戳和每个不同的严重级别。但是,现在,我要突出显示线程名,类名和行号。问题是日志消息中可能有方括号,因此仅在其开头+\[+
和结尾+\]+
都行不通。
我很想放下我尝试过的东西,但老实说我只是不知道该怎么做。这是我到目前为止的文件:
:syn region logTime start=+^\d\{4}-\d\{2}-\d\{2} \d\{2}:\d\{2}:\d\{2}+ end=+ +me=e-1
:syn region logError start=+ERROR+ end=+ +me=e-1
:syn region logWarn start=+WARN+ end=+ +me=e-1
:syn region logInfo start=+INFO+ end=+ +me=e-1
:syn region logDebug start=+DEBUG+ end=+ +me=e-1
hi def logError ctermfg=white ctermbg=red
hi def logWarn ctermfg=yellow
hi def logInfo ctermfg=green
hi def logDebug ctermfg=blue
hi def logTime ctermfg=white ctermbg=blue
首先,您过度使用了:syntax region
; 对于严重程度,简单得多(更快!):syn keyword
就足够了:
:syn keyword logInfo INFO
由于线程名称在严重性之后(在空格之后),因此您可以指示Vim在之后专门尝试解析它们:
:syn keyword logInfo INFO skipwhite nextgroup=logThreadName
为避免括号中的线程名称在其他地方被解析,请指定contained
参数:
:syn match logThreadName "\[\S\+\]" contained
同样,a:syn match
比区域更简单。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句