2

Я попытался расширить синтаксис C в Vim с помощью примера в руководстве.

Сначала я запускаю vim без каких-либо настроек:

vim -u NONE test.c

Затем я загружаю c-синтаксис и создаю свое расширение

syntax on
syntax keyword myword HELP containedin=cComment contained
highlight myword guibg=red

код:

1: /* HELP */
2: int main(int argc, char **argv) {
3:     int HELP = 0;
4:     if(HELP);
5: }

ПОМОЩЬ выделена в строке 1, как и ожидалось. Это также выделено в строке 4, есть ли какое-то объяснение этому?

1 ответ1

0

Вам нужно выяснить, какая группа синтаксиса "занимает" HELP в третьей строке, которая не охвачена вашим правилом синтаксиса. :syn list показывает все активные группы, но это проще, когда вы устанавливаете SyntaxAttr.vim - Показать атрибуты подсветки синтаксиса символа под плагином курсора .

SyntaxAttr говорит мне, что синтаксис cBlock там совпадает; это также должно быть включено в ваше расширение:

syntax keyword myword HELP containedin=cComment,cBlock contained

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .