web-dev-qa-db-ja.com

VIM:構文ハイライトファイルを作成する簡単な手順-ログファイル用

通過する(log4jで生成された)ログファイルがいくつかあります。私はそれらのフォーマットをかなりよく知っています(つまり、私はすでに使用できるオフザペグのregexesなどを持っています)。

それらをロードするときに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. 以下が私のスタートアップ設定にあることを確認してください:

    ファイルタイプの構文

29
monojohnny

構文項目を定義する方法は3つあります(:help :syn-defineを参照)。

  • キーワード:これらは、キーワード文字の単純な文字列であるアイテム用です。これは最速のマッチャーです。
  • 一致:これらは一致の正規表現です。
  • リージョン:これらは、他のアイテムが含まれている可能性が高い長いリージョン用です。

物事をより複雑にするさまざまな引数があります(リージョン内の一致など)。これについては、:help :syn-argumentsを参照してください。

有効になる優先順位があります(:help :syn-priorityを参照)。

色付けはhighlightコマンドによって制御され、構文コマンドとは別のものです。

開始する簡単な方法は、一致を使用して日付を検出し、キーワードを使用してエラーを検出することです。次に、ハイライトを使用して色を生き生きとさせます。

" 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のさまざまなセクションを(非常に段階的に)読んでください。

30
DrAl

あなたはから始めることができます

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

その後、実験を続けます

10
Mykola Golubyev

Log4jHighlighter を使用してみてください。インストールの詳細はgithubにあります。

3
Shivendra

* .logファイルを自動的にロードするには、このファイルタイプに対して ftplugin を作成する必要があります。

たとえば、log.vimフォルダの.vim/ftpluginファイルには、*。logファイルをロードするときにキーボードショートカットを設定するための簡単な手順があります。

:ftpluginsはこれを行うための最良の方法ではないかもしれません...構文ファイルを Al のように設定する方がおそらく良いでしょう。別の可能性のために、この答えをここに残しておきます。

1
John Weldon

このハイライトスタイルは私にぴったりです。

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

著者(@AlexanderDzyoba)は、「メッセージ」構文の強調表示ファイルに基づいていると述べています。

0