Как я могу изменить шаблон соответствия группы синтаксиса по умолчанию? - PullRequest
1 голос
/ 25 февраля 2020

Я хотел бы изменить правила синтаксиса для необработанных строк C ++, чтобы необработанные строки выделялись, как если бы они не были строками, но при этом подсветка строк оставалась такой же во всех других случаях. Это обратный этот вопрос (мне нравится поведение 7.4). Знание C ++ не обязательно для этого вопроса. Я на общей машине и не могу напрямую редактировать файлы синтаксиса по умолчанию.

syntax list cCppString списки

cCppString     xxx start=/\(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="/ skip=/\\\\\|\\"\|\\$/ end=/$/ end=/"/  excludenl contains=cSpecial,cFormat,@Spell
                   links to cString

и syntax list cString показывает что-то подобное. Оскорбительные шаблоны: R\|LR\|u8R\|uR\|UR

В файле синтаксиса по умолчанию vim80/syntax/c.vim Я вижу следующие строки

syn region>...cString>>.......start=+\(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend
syn region >..cCppString>.....start=+\(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell

Мне нужно удалить эти шаблоны, но все остальное не повреждено. Я попытался переопределить их в .vim/after/syntax/c.vim с такими вещами, как

syn region>...cString>>.......start=+\(L\|u\|u8\|U\)\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend

, но это объединяет вместо перезаписи.

1 Ответ

1 голос
/ 25 февраля 2020

Если вы хотите переопределить синтаксис, начните с очистки предыдущих правил, затем добавьте свои.

syn clear cString cCppString
syn region cString
  \ start=+\(L\|u\|u8\|U\)\="+
  \ skip=+\\\\\|\\"+
  \ end=+"+
  \ contains=cSpecial,cFormat,@Spell
  \ extend
syn region cCppString
  \ start=+\(L\|u\|u8\|U\)\="+
  \ skip=+\\\\\|\\"\|\\$+
  \ excludenl
  \ end=+"+
  \ end='$'
  \ contains=cSpecial,cFormat,@Spell

Также обратите внимание, что правильное расположение файла для переопределения это ~/.vim/after/syntax/c.vim, так как Vim хочет получить файл с именем syntax/c.vim, а каталог ~/.vim/after включен по умолчанию в конце 'runtimepath'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...