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

时间:2010-02-03 15:44:02

标签: vim syntax-highlighting

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

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

日志文件条目如下所示:

YYYY-MM-DD HH:MM:ss,SSS [...] #LOG-LEVEL# [...] Message

其中#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. 确保我的启动设置中包含以下内容:

    语法 文件类型

5 个答案:

答案 0 :(得分: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

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

希望这应该给你一些东西。对:help syntax.txt:help usr_44.txt的各个部分进行(逐步)阅读以获取更多信息。

答案 1 :(得分: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

然后继续尝试

答案 2 :(得分:3)

尝试使用Log4jHighlighter。安装细节出现在github上。

答案 3 :(得分:1)

要使用* .log文件自动加载,您应为此文件类型设置ftplugin

例如,在我的log.vim文件夹中的.vim/ftplugin文件中,我有关于在加载* .log文件时设置键盘快捷键的简单说明。

注意:ftplugins可能不是最好的方法...将语法文件设置为Al描述可能更好。我会在这里留下这个答案,但另一种可能性。

答案 4 :(得分:0)

这种突出显示样式非常适合我:

https://github.com/dzeban/vim-log-syntax

作者(@AlexanderDzyoba)说它基于“消息”语法突出显示文件。