C ++ 14 надав нам можливість використання одиничних лапок для розділення цифр великих числових літералів. Це порушує виділення синтаксису Віма.
Наприклад, розглянемо таку програму 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
щоб виправити це?
Я бачу, деяка підтримка C ++ 14 була додана в v7.4.923 (бінарні літерали). Але це не роздільник чисел: - / Найновіші файли C ++ звідси також, здається, ще не мають цього.
—
Мартін Турноїй
Для швидкого вирішення, ймовірно , можна додати
—
muru
syn match cNumber display contained "\d\(\d\|'\)*\(u\=l\{0,2}\|ll\=u\)\>"
до ~/.vim/syntax/cpp.vim
. (Btw, якщо це C ++, використовуйте cstdlib
, ні stdlib.h
.)
Щойно я помітив, що з травня 2014 року до цього року відкрите питання .
—
Мартін Турноїй
@muru Це, здається, вирішило проблему. Я зараз добре використовую швидкий злом. Дякую!
—
Джейк
@Carpetsmoker Я не впевнений у відповідності синтаксису, щоб точно знати, що робить моя зміна. Я думаю, що це буде просто відповідати цифрі після будь-якої кількості цифр або одинарних лапок, плюс
—
муру
ull
пуху, але я не знаю, чи відповідатиме він недійсному випадку. І, мабуть, C ++ 14 дозволяє розділяти октальні, двійкові, шістнадцяткові букви та поплавці та після десяткової крапки у поплавках. Це набагато більше, ніж я готовий взяти на себе.