Подтвердить что ты не робот

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

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

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

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

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

Где # LOG-LEVEL # является одним из стандартных "ERROR", "INFO", "DEBUG", "FATAL".... и "YYYY-MM..." представляет дату/время до миллисекунды разрешение.

Чтобы начать работу, какие шаги необходимо для того, чтобы получить строку даты, выделенную (скажем) желтым фоном с синим текстом, а также когда текст читает "ОШИБКА", это должно иметь красное фоновое изображение с белым текстом.

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

Приветствия

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

  • Создал синтаксический файл "log.vim" в синтаксисе .vim\(см. ниже пример содержимого).

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

    au BufRead, BufNewFile *.log set filetype = log

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

    синтаксис

    filetype on

4b9b3361

Ответ 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.

Ответ 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

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

Ответ 3

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

Ответ 4

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

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

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

Ответ 5

Этот стиль подсветки отлично подходит для меня:

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

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