VIM: simple steps to create syntax highlight file - for logfiles

后端 未结 5 1746
别跟我提以往
别跟我提以往 2020-12-23 02:24

I have some (log4j generated) logfiles to go through; I know their format pretty well (I mean I have already got off-the-peg regexes etc I can use).

I want to automa

相关标签:
5条回答
  • 2020-12-23 02:44

    Try using Log4jHighlighter. The installation details are present on github.

    0 讨论(0)
  • 2020-12-23 02:50

    You can start from

    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
    

    and then just continue to experiment

    0 讨论(0)
  • 2020-12-23 02:57

    There are three ways of defining syntax items (see :help :syn-define):

    • Keywords: these are for items that are simple strings of keyword characters. This is the fastest matcher.
    • Matches: these are regular expressions for matching.
    • Regions: these are for long regions that are likely to contain other items.

    There are various arguments that make things more complicated (to do with matches within regions etc), see :help :syn-arguments for a discussion of this.

    There is a priority that comes into effect (see :help :syn-priority).

    Colouring is controlled by the highlight command and is separate to the syntax commands.

    A simple way to get started would be to use a match to detect the date and a keyword to detect error. Then use highlight to make the colours come to life:

    " 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
    

    Bung all of that in ~/.vim/syntax/log.vim and make sure the file type is set properly (see :help filetype.txt) - it should then load automatically.

    Hopefully that should give you something to get going with. Have a (very gradual) read of the various sections of :help syntax.txt and :help usr_44.txt for further info.

    0 讨论(0)
  • 2020-12-23 03:02

    This highlighting style works just great for me:

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

    The author (@AlexanderDzyoba) says it is based on "messages" syntax highlighting file.

    0 讨论(0)
  • 2020-12-23 03:06

    To load automatically with *.log files you should make an ftplugin for this filetype.

    For example, in my log.vim file in my .vim/ftplugin folder I have simple instructions for setting a keyboard shortcut when loading *.log files.

    Note: ftplugins may not be the best way to do this... setting the syntax file as Al describes is probably better. I'll leave this answer here though for the alternative possibility.

    0 讨论(0)
提交回复
热议问题