У меня есть некоторые (log4j сгенерированный) файлы журнала для прохождения через; я знаю их формат вполне прилично (я подразумеваю, что уже получил готовый regexes и т.д., я могу использовать).
Я хочу автоматически выделить их в VIM, когда я загружаю их (*.log).
Запись файла журнала выглядит примерно так:
YYYY-MM-DD HH:MM:ss,SSS [...] #LOG-LEVEL# [...] Message
Где #LOG-LEVEL# является одним из стандарта 'ОШИБКА', 'ИНФОРМАЦИЯ', 'ОТЛАДКА', 'ФАТАЛЬНАЯ'.... и 'YYYY-MM...', представляют дату/время разрешению миллисекунды.
Запустить меня, что является шагами, должно было выделить строку даты в (говорят), что желтый фон с синим текстом - и также когда текст читает 'ОШИБКУ', это должно иметь красный фон с белым текстом.
Я попытался пройти некоторые учебные руководства на этом, но не могу найти то, которое достаточно просто понять, таким образом, я после некоторых реальных основных шагов здесь!
Удачи
Править: Вот сводка того, что я сделал, на основе инструкций ниже:
Созданный файл синтаксиса 'log.vim' в .vim\syntax (см. ниже, например, содержания).
Созданный файл в .vim\ftdetect\log.vim со следующим содержанием:
au BufRead, BufNewFile *.log установил filetype=log
Удостоверенный следующее находятся в моих настройках запуска:
синтаксис на типе файла на
Есть три способа определения элементов синтаксиса (см. : 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
для получения дополнительной информации.
Вы можете начать с
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
, а затем просто продолжить эксперимент
Для автоматической загрузки файлов * .log вы должны создать ftplugin для этого типа файлов.
Например, в моем файле log.vim
в моей папке .vim / ftplugin
у меня есть простые инструкции по настройке сочетания клавиш при загрузке файлов * .log.
Примечание : ftplugins может быть не лучшим способом сделать это ... установка файла синтаксиса, как описано в Al , вероятно, лучше. Я оставлю этот ответ здесь для альтернативной возможности.