【问题标题】:VIM: simple steps to create syntax highlight file - for logfilesVIM:创建语法高亮文件的简单步骤 - 用于日志文件
【发布时间】:2010-02-03 15:44:02
【问题描述】:

我有一些(log4j 生成的)日志文件要查看;我非常了解它们的格式(我的意思是我已经有了现成的正则表达式等我可以使用)。

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

日志文件条目如下所示:

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

其中#LOG-LEVEL# 是标准“错误”、“信息”、“调试”、“致命”...之一,而“YYYY-MM...”表示日期/时间到毫秒分辨率。

为了让我开始,需要哪些步骤才能使日期字符串在(比如说)黄色背景中突出显示并带有蓝色文本 - 当文本显示为“错误”时,它应该有一个带有白色文本的红色背景.

我已经尝试过一些关于这方面的教程,但找不到一个足够简单易懂的教程,所以我在这里完成了一些真正的基本步骤!

干杯

编辑: 根据以下说明,这是我所做的总结:

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

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

    au BufRead,BufNewFile *.log set filetype=log

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

    语法 文件类型打开

【问题讨论】:

    标签: vim syntax-highlighting


    【解决方案1】:

    定义语法项有三种方式(见: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 的各个部分(非常循序渐进地)了解更多信息。

    【讨论】:

    • 很棒的东西 - 很有效(即使时间字段在浅绿色上显示为令人讨厌的灼热白色;-))确实非常感谢。
    • 很高兴它有帮助。抱歉,我只是随机挑选了一些颜色,没有经过测试。那将是一个非常讨厌的颜色组合!
    • 不-不比我选择的黄色/蓝色差! (我认为 BBC Micro 上的模式 7 对我的影响太大了 ;-) 干杯 - 效果很好 - 现在文件匹配也能正常工作 - 很好。
    【解决方案2】:

    你可以从

    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
    

    然后继续实验

    【讨论】:

    • 谢谢 - 这是一个好的开始。 +1 假设我在加载“*.log”时想要这个自动:我应该把它放在哪里(我认为是语法\log.vim?) - 我在启动时需要任何额外的位吗?
    【解决方案3】:

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

    【讨论】:

    • 当我尝试更改 .xlog 上的扩展名时 - 它可以工作,但在 .log 上却不行。有什么问题?谢谢!
    • 错误在我的.vimrc中,对不起
    【解决方案4】:

    要自动加载 *.log 文件,您应该为此文件类型创建一个 ftplugin

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

    注意:ftplugins 可能不是执行此操作的最佳方法...将语法文件设置为Al 描述的可能更好。不过,我将把这个答案留在这里,以备不时之需。

    【讨论】:

    • 谢谢你 - 实际上使用了另一种方法,即创建一个文件 '.vim\ftdetect\log.vim' 内容为 "au BufRead,BufNewFile *.log set filetype=lo"让它发挥作用。
    【解决方案5】:

    这种突出显示样式对我来说非常有用:

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

    作者 (@AlexanderDzyoba) 说它基于“消息”语法高亮文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 2014-05-01
      • 2021-03-03
      • 2011-12-30
      • 2011-06-03
      相关资源
      最近更新 更多