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
чтобы исправить это?
syn match cNumber display contained "\d\(\d\|'\)*\(u\=l\{0,2}\|ll\=u\)\>"
в~/.vim/syntax/cpp.vim
. (Кстати, если это C ++, используйтеcstdlib
, а неstdlib.h
.)ull
пуш, но я не знаю, совпадет ли это с каким-то неверным регистром. И, очевидно, C ++ 14 допускает разделитель в восьмеричных, двоичных, шестнадцатеричных литералах и числах с плавающей запятой и после десятичной точки в числах с плавающей запятой. Это намного больше, чем я готов взять на себя.Ответы:
ВИМ-JP / ВИМ-каст репо включены эти изменения в июле 2016 года:
Если вы не хотите использовать этот репозиторий, вы можете добавить эти строки в
~/.vim/syntax/cpp.vim
.источник