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

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

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

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

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

Где #LOG-LEVEL# является одним из стандарта 'ОШИБКА', 'ИНФОРМАЦИЯ', 'ОТЛАДКА', 'ФАТАЛЬНАЯ'.... и 'YYYY-MM...', представляют дату/время разрешению миллисекунды.

Запустить меня, что является шагами, должно было выделить строку даты в (говорят), что желтый фон с синим текстом - и также когда текст читает 'ОШИБКУ', это должно иметь красный фон с белым текстом.

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

Удачи

Править: Вот сводка того, что я сделал, на основе инструкций ниже:

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

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

    au BufRead, BufNewFile *.log установил filetype=log

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

    синтаксис на типе файла на

29
задан monojohnny 15 February 2014 в 11:16
поделиться

3 ответа

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

30
ответ дан 28 November 2019 в 01:45
поделиться

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

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
ответ дан 28 November 2019 в 01:45
поделиться

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

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

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

1
ответ дан 28 November 2019 в 01:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: