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

时间:2018-10-05 12:09:59

标签: vim neovim

我一直在为Spike模糊测试API定制自定义语法突出显示工具。

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

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

这样说,在字符串中,存在转义序列,例如\ n表示换行,\ r表示回车,这在许多编程语言(如Python,C等)中很常见。 ,我想以与您对这些编程语言相同的方式来突出显示它们。

我的理解是这些应该是一个匹配定义,但说实话我不确定-而且我不知道Vim的不同类型是哪种字符(例如,Comment,String,Special,Function,等)

在VIM语法突出显示文件中处理突出显示转义序列的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

看一下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