我想更改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
但这会串联而不是覆盖。
如果要覆盖语法,请先清除之前的规则,然后添加您的规则。
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'
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句