VIM:创建语法高亮文件的简单步骤 - 用于日志文件

mon*_*nny 29 vim syntax-highlighting

我有一些(log4j生成)日志文件要通过; 我知道他们的格式很好(我的意思是我已经有了可以使用的现成的正则表达式等).

我想在加载它时自动在VIM中突出显示它们(*.log).

日志文件条目如下所示:

YYYY-MM-DD HH:MM:ss,SSS [...] #LOG-LEVEL# [...] Message
Run Code Online (Sandbox Code Playgroud)

其中#LOG-LEVEL#是标准'ERROR'之一,'INFO','DEBUG','FATAL'......和'YYYY-MM ......'表示毫秒级分辨率的日期/时间.

为了让我开始,在(例如)黄色背景中用蓝色文本突出显示日期字符串所需的步骤是什么 - 以及当文本显示为"错误"时,这应该具有带有白色文本的红色背景.

我已经尝试过这方面的一些教程,但是找不到一个很容易理解的,所以我在这里做了一些真正的基本步骤!

干杯

编辑:以下是我所做的总结,基于以下说明:

  1. 在.vim\syntax中创建了语法文件'log.vim'(请参阅下面的示例内容).

  2. 在.vim\ftdetect\log.vim中创建了一个文件,其中包含以下内容:

    au BufRead,BufNewFile*.log set filetype = log

  3. 确保我的启动设置中包含以下内容:

    文件类型的语法

DrA*_*rAl 30

定义语法项有三种方法(请参阅参考资料:help :syn-define):

  • 关键字:这些是针对简单字符串关键字字符的项目.这是最快的匹配器.
  • 匹配:这些是匹配的正则表达式.
  • 区域:这些区域适用于可能包含其他项目的长区域.

有各种各样的论点会使事情变得更复杂(与区域内的匹配等有关),请参阅:help :syn-arguments讨论.

有一个优先权生效(见:help :syn-priority).

着色由高亮命令控制,并与语法命令分开.

一种简单的入门方法是使用匹配来检测日期,使用关键字来检测错误.然后使用高亮使颜色变为现实:

" This creates a keyword ERROR and puts it in the highlight group called logError
:syn keyword logError ERROR
" This creates a match on the date and puts in the highlight group called logDate.  The
" nextgroup and skipwhite makes vim look for logTime after the match
:syn match logDate /^\d\{4}-\d\{2}-\d\{2}/ nextgroup=logTime skipwhite

" This creates a match on the time (but only if it follows the date)
:syn match logTime /\d\{2}:\d\{2}:\d\{2},\d\{3}/

" Now make them appear:
" Link just links logError to the colouring for error
hi link logError Error
" Def means default colour - colourschemes can override
hi def logDate guibg=yellow guifg=blue
hi def logTime guibg=green guifg=white
Run Code Online (Sandbox Code Playgroud)

在〜/ .vim/syntax/log.vim中填写所有内容并确保文件类型设置正确(请参阅参考资料:help filetype.txt) - 然后应自动加载.

希望这应该给你一些东西.有一个(非常渐进的)阅读各个部分:help syntax.txt:help usr_44.txt更多信息.


Myk*_*yev 10

你可以从

syn match group1 /^\d\+-\d\+-\d\+/ nextgroup=group2 skipwhite
syn match group2 /....../ nextgroup=group3 contained skipwhite
syn match group3 /....../ nextgroup=group4 contained skipwhite

hi link group1 Comment
hi link group2 Conditional
hi link group3 Identifier
Run Code Online (Sandbox Code Playgroud)

然后继续试验