C ++ 14为我们提供了使用单引号分隔大数字文字的数字的选项。这破坏了Vim的语法突出显示。
例如,考虑以下C ++ 14程序:
#include <stdlib.h>
int main(int argc, char** argv) {
// small numbers are fine
int normal_number = 5;
// large numbers have the correct highlighting but they're hard to visually parse
int huge_number = 1000000000;
// apostrophes help with visual parsing but mess up syntax higlighting
int huge_number_again = 1'000'000'000;
return EXIT_SUCCESS;
}
在Vim中查看此内容时,会看到以下语法突出显示(请注意,我正在使用其他一些突出显示脚本):
我希望输入的所有数字huge_number_again
都显示为红色。我可以对其中一个语法文件进行修改,还是可以对其~/.vimrc
进行更正?
我看到在v7.4.923(二进制文字)中添加了对C ++ 14的支持。但不是数字分隔看来: - /最新C ++文件从这里也似乎不拥有它呢。
—
马丁·图尔诺伊
速战速决,你也许可以添加
—
muru
syn match cNumber display contained "\d\(\d\|'\)*\(u\=l\{0,2}\|ll\=u\)\>"
到~/.vim/syntax/cpp.vim
。(顺便说一句,如果是C ++,请使用cstdlib
,而不要 使用stdlib.h
。)
@muru似乎已经解决了问题。我现在可以使用快速破解了。谢谢!
—
杰克
@Carpetsmoker我不确定语法匹配是否确切知道我所做的更改。我认为它将匹配任意数字或单引号之后的数字,再加上
—
muru
ull
绒毛,但是我不知道它是否将匹配某些无效的大小写。显然,C ++ 14允许使用八进制,二进制,十六进制文字和浮点数以及在浮点数小数点后的分隔符。这是一个很多超过我愿意承担。