Синтаксис Vim выделяет два конкретных слова с пробелом (регулярное выражение) - PullRequest
0 голосов
/ 05 июня 2018

Я создал этот файл с именем "~ / .vim / syntax / proc.vim" и заполнял выражения регулярных выражений (я думаю, именно так они это и называют).Мне нужно написать несколько тестовых сценариев на этом тестовом языке, разработанном еще в 90-х годах, под названием STOL для полезной нагрузки космического корабля.Я работаю в защищенной среде, поэтому единственное, к чему у меня есть доступ, - это vim.

STOL позволяет вам писать несколько различных типов операторов печати, и я хотел бы, чтобы некоторые синтаксические выделения подчеркивали разницу между каждым типом сообщения (ошибкаmessage, info message и т. д.).

Мой цветовой профиль vim с именем "~ / .vim / color / molokai.vim" позволяет мне связывать различные выражения регулярных выражений с определенным синтаксическим классом, который будетвызвать конкретный цвет.Например, чтобы выделить ключевые слова, я указываю две строки, такие как ...

" This is the regex where two keywords have been defined
syntax keyword procKeywords IF ELSE

" This is how I link the above regex to a molokai color class
" which is called Keyword
highlight link procKeywords Keyword

Я бы хотел сделать то же самое для некоторых сообщений об ошибках и информационных сообщений, которые STOL определяет, как показано ниже ...

EVENT ERROR "This is a error message"
EVENT INFO "This is a info message"

Как сопоставить два конкретных слова с пробелом между ними?Мне нужно что-то вроде следующего в моем "~ / .vim / syntax / proc.vim" .Следующее неверно, но я просто пишу это, показывая вам, о чем я думаю ...

syntax match procInfo "EVENT INFO"
syntax match procError "EVENT ERROR"
highlight link procInfo ModeMsg
highlight link procError ErrorMsg

1 Ответ

0 голосов
/ 24 октября 2018

Ваша попытка уже в основном работает.Однако :syntax match не обеспечивает автоматического соответствия целого ключевого слова, например :syntax keyword, поэтому вы получите ложное выделение, например, MYEVENT INFORMATION.Вы можете легко это исправить, добавив ключевое слово граничные атомы :help /\< к регулярным выражениям:

syntax match procInfo "\<EVENT INFO\>"
syntax match procError "\<EVENT ERROR\>"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...