如何为字符串中的 \n 和 \r 等转义序列配置 vim 语法突出显示?

How to configure vim syntax highlighting for escape sequences like \n and \r within strings?

我一直在为 Spike 模糊测试开发自定义语法荧光笔 API。

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

非常简单API,所以这是一个非常简单的文件。

因此,在字符串中,有转义序列,例如 \n 表示换行,\r 表示回车符 return,这在许多编程语言中很常见,例如 Python 、C 等。由于对它们的解释不同,我想以与这些编程语言相同的方式突出显示它们。

我的理解是这些应该是匹配定义,但老实说我不确定 — 而且我不知道根据 Vim 的不同类型(例如注释、字符串、特殊、函数等)

在 VIM 语法高亮文件中处理高亮转义序列的正确方法是什么?

查看 Vim 附带的一些语法脚本,所有似乎(大部分)都同意 link 这到 SpecialChar 默认突出显示组(它本身是 link默认为 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