Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 如何更改默认语法组的匹配模式? 我想改变C++原始字符串的语法规则,这样原始字符串就好像不是字符串一样亮起来,但在所有其他情况下都保持字符串突出显示相同的字符串。这是问题的反面(我喜欢7.4的行为)。这个问题不需要C++知识。我在共享计算机上,无法直接编辑默认语法文件_Vim - Fatal编程技术网

Vim 如何更改默认语法组的匹配模式? 我想改变C++原始字符串的语法规则,这样原始字符串就好像不是字符串一样亮起来,但在所有其他情况下都保持字符串突出显示相同的字符串。这是问题的反面(我喜欢7.4的行为)。这个问题不需要C++知识。我在共享计算机上,无法直接编辑默认语法文件

Vim 如何更改默认语法组的匹配模式? 我想改变C++原始字符串的语法规则,这样原始字符串就好像不是字符串一样亮起来,但在所有其他情况下都保持字符串突出显示相同的字符串。这是问题的反面(我喜欢7.4的行为)。这个问题不需要C++知识。我在共享计算机上,无法直接编辑默认语法文件,vim,Vim,语法列表cCppString列表 cCppString xxx start=/\(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="/ skip=/\\\\\|\\"\|\\$/ end=/$/ end=/"/ excludenl contains=cSpecial,cFormat,@Spell links to cString 而语法列表cString显示了类似的内容。违规模式为R\| LR\| u8R\|uR\|uR 在

语法列表cCppString
列表

cCppString     xxx start=/\(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="/ skip=/\\\\\|\\"\|\\$/ end=/$/ end=/"/  excludenl contains=cSpecial,cFormat,@Spell
                   links to cString
语法列表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'
的后面