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
Ответы
Ответ 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) говорит, что он основан на файле подсветки синтаксиса "сообщений".