Как настроить подсветку синтаксиса vim для escape-последовательностей, таких как \ n и \ r внутри строк? - PullRequest
0 голосов
/ 05 октября 2018

Я работал над пользовательской подсветкой синтаксиса для API фаззинга Spike.

https://github.com/kkirsche/spike.vim

Очень простой API, поэтому это очень простой файл.

С учетом сказанного, внутри строк есть escape-последовательности, такие как \ n для новогоСтрока, \ r для возврата каретки, как это принято во многих языках программирования, таких как Python, C и т. д. Поскольку они интерпретируются по-разному, я хочу выделить их так же, как и для этих языков программирования.

Насколько я понимаю, это должно быть определение соответствия, но, если честно, я не уверен - и я не знаю, какой это тип символов для различных типов Vim (например, Comment, String, Special, Functionи т. д.)

Как правильно обрабатывать выделение escape-последовательностей, подобных этим, в файле выделения синтаксиса VIM?

1 Ответ

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

Глядя на некоторые синтаксические сценарии, которые поставляются с Vim, все (в основном) соглашаются связать это с группой подсветки SpecialChar по умолчанию (которая сама по умолчанию связана с Special):

$VIMRUNTIME/syntax/c.vim:

syn match   cSpecial    display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
syn region  cString     start=+\(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend
hi def link cSpecial        SpecialChar

$VIMRUNTIME/syntax/java.vim:

syn match   javaSpecialChar  contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
hi def link javaSpecialChar     SpecialChar

$VIMRUNTIME/syntax/javascript.vim:

syn match   javaScriptSpecial          "\\\d\d\d\|\\."
syn match   javaScriptSpecialCharacter "'\\.'"
hi def link javaScriptSpecial       Special
hi def link javaScriptSpecialCharacter  javaScriptSpecial

:help group-name согласенс этим:

  *Special        any special symbol
   SpecialChar    special character in a constant
   Tag            you can use CTRL-] on this
   Delimiter      character that needs attention
   SpecialComment special things inside a comment
...