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
赤で表示したい。構文ファイルの1つに、または~/.vimrc
これを修正するために行うことができる変更はありますか?
C ++ 14のサポートがv7.4.923(バイナリリテラル)に追加されたようです。しかし、数字の区切り文字ではないようです:-/ ここからの最新のC ++ファイルにもまだ含まれていないようです。
—
Martin Tournoij 2016年
クイックフィックスのために、あなたはおそらく追加することができます
—
muru
syn match cNumber display contained "\d\(\d\|'\)*\(u\=l\{0,2}\|ll\=u\)\>"
し~/.vim/syntax/cpp.vim
。(ところで、C ++の場合はcstdlib
、ではなくを 使用してくださいstdlib.h
。)
2014年5月以来、未解決の問題があることに気づきました。
—
Martin Tournoij 2016年
@muru問題は解決したようです。とりあえず、クイックハックを使って問題ありません。ありがとう!
—
ジェイク
@Carpetsmoker私の変更が何をするのかを正確に知るために、構文の一致について確信が持てません。数字の後に続く任意の桁数または一重引用符に加えて、
—
muru、2014年
ull
綿毛と一致するだけだと思いますが、無効なケースと一致するかどうかはわかりません。そしてどうやらC ++ 14では、8進数、2進数、16進数のリテラル、浮動小数点数、および浮動小数点数の小数点の後に区切り記号を使用できます。それは私が引き受けたいと思っている以上のものです。