VIM: простые шаги для создания файла подсветки синтаксиса - для файлов журналов - PullRequest
29 голосов
/ 03 февраля 2010

У меня есть несколько (сгенерированных log4j) лог-файлов, через которые нужно пройти; Я хорошо знаю их формат (я имею в виду, что у меня уже есть регулярные выражения и т.д., которые я могу использовать).

Я хочу автоматически выделить их в VIM при загрузке (* .log).

Запись в лог-файле выглядит примерно так:

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

Где # LOG-LEVEL # является одним из стандартных «ОШИБКА», «ИНФО», «ОТЛАДКА», «ФАТАЛЬНЫЙ» .... и «ГГГГ-ММ ...» представляет дату / время в миллисекундах разрешение.

Для начала, каковы шаги, необходимые для выделения строки даты (скажем) желтым фоном с синим текстом, а также, когда текст читается как «ОШИБКА», это должен иметь красный фон с белым текстом .

Я попытался пройти некоторые уроки по этому вопросу, но не могу найти ту, которая достаточно проста для понимания, поэтому я прошёл некоторые реальные базовые шаги здесь!

Приветствия

EDIT: Вот краткое изложение того, что я сделал, основываясь на следующих инструкциях:

  1. Создан файл синтаксиса 'log.vim' в .vim \ синтаксис (см., Например, содержимое).

  2. Создан файл в .vim \ ftdetect \ log.vim со следующим содержимым:

    au BufRead, BufNewFile * .log set filetype = log

  3. Убедитесь, что в моих настройках запуска указаны следующие параметры:

    синтаксис включен тип файла на

Ответы [ 5 ]

30 голосов
/ 03 февраля 2010

Существует три способа определения элементов синтаксиса (см. :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 для получения дополнительной информации.

10 голосов
/ 03 февраля 2010

Вы можете начать с

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

, а затем просто продолжайте экспериментировать

3 голосов
/ 05 сентября 2015

Попробуйте использовать Log4jHighlighter . Детали установки присутствуют на github.

1 голос
/ 03 февраля 2010

Для автоматической загрузки с * .log файлами вы должны сделать ftplugin для этого типа файла.

Например, в моем файле log.vim в моей папке .vim/ftplugin есть простые инструкции по установке сочетания клавиш при загрузке файлов * .log.

Примечание : ftplugins может быть не лучшим способом сделать это ... установка файла синтаксиса, как описано в Al , вероятно, лучше. Я оставлю этот ответ здесь для альтернативной возможности.

0 голосов
/ 03 апреля 2019

Этот стиль подсветки прекрасно работает для меня:

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

Автор (@AlexanderDzyoba) говорит, что он основан на файле подсветки синтаксиса "messages".

...