vim: 日志文件的自定义突出显示
vim: custom highlighting for log files
我有以下形式的日志文件:
YYYY-MM-DD HH:MM:SS.sss SEVERITY [thread.name] class.name:line -
SEVERITY 是 DEBUG、INFO、WARN 或 ERROR 之一。
我设置了一个语法文件,它独特地突出显示了时间戳和每个不同的严重性。但是,现在我想突出显示线程名称以及 class 名称和行号。问题是日志消息中可能有方括号,所以简单地从 +\[+
开始到 +\]+
结束是行不通的。
我很想写下我尝试过的东西,但老实说,我只是不知道该怎么做。这是我目前拥有的文件:
: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
同样,:syn match
比区域更简单。
我有以下形式的日志文件:
YYYY-MM-DD HH:MM:SS.sss SEVERITY [thread.name] class.name:line -
SEVERITY 是 DEBUG、INFO、WARN 或 ERROR 之一。
我设置了一个语法文件,它独特地突出显示了时间戳和每个不同的严重性。但是,现在我想突出显示线程名称以及 class 名称和行号。问题是日志消息中可能有方括号,所以简单地从 +\[+
开始到 +\]+
结束是行不通的。
我很想写下我尝试过的东西,但老实说,我只是不知道该怎么做。这是我目前拥有的文件:
: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
同样,:syn match
比区域更简单。