老实说,raw string literals是对 C++ 语言的一个很好的补充。但是(如预期的那样)编辑器很难正确显示这些文字。
我使用的是 Vim 7.4,开箱即用的原始字符串文字完全破坏了语法高亮显示。例如在
char const txt[] = R"(printf(")";
第二个 '(' 在 vim 中以红色高亮显示。
有点像
char const txt2[] = R"( "{{" )";
打破花括号的高亮显示和基于语法的自动识别等等。
首先,我很乐意让 Vim 在进行语法高亮显示时忽略 R"(
和 )"
之间的所有内容。
但请注意,原始字符串文字是灵活的 - 在第一个/最后一个双引号/大括号对之间允许任意匹配字符串,例如
R"abcd()")")abcd"
也是一个有效的原始字符串文字,它编码
)")"
另请参阅 cppreference 链接以获取语法的一般定义。
因此我的问题是如何配置 Vim 以便正确识别 C++ 原始字符串文字。
Vim 似乎已经包含了一些工具来正确地使用 synatx 高亮嵌入在宿主语言中的语言片段(例如,对于编译器-编译器源文件)。也许它们也可以用于原始字符串文字的情况?
最佳答案
添加这个
syntax match cString 'R"\([^(]*\)(\_.*)\1"'
到您的自定义 C++ 语法文件(通常为 ~/.vim/syntax/cpp.vim
;如果没有,请创建此文件)。
关于c++ - 如何从 Vim 中的语法突出显示中排除 C++ 原始字符串文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22674375/