C ++ 14 bot uns die Möglichkeit, einfache Anführungszeichen zu verwenden, um die Ziffern großer numerischer Literale zu trennen. Dies unterbricht die Syntaxhervorhebung von Vim.
Betrachten Sie beispielsweise das folgende C ++ 14-Programm:
#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;
}
Wenn ich dies in Vim ansehe, wird die folgende Syntax hervorgehoben (beachten Sie, dass ich einige zusätzliche Hervorhebungsskripte verwende ):
Ich möchte, dass alle Ziffern huge_number_again
rot angezeigt werden. Gibt es eine Änderung, die ich an einer meiner Syntaxdateien oder an meiner vornehmen kann, ~/.vimrc
um dies zu korrigieren?
syn match cNumber display contained "\d\(\d\|'\)*\(u\=l\{0,2}\|ll\=u\)\>"
zu~/.vim/syntax/cpp.vim
. (Btw, wenn das C ++, verwendetcstdlib
, nichtstdlib.h
.)ull
Flaum, aber ich weiß nicht, ob es mit einem ungültigen Fall übereinstimmt. Und anscheinend erlaubt C ++ 14 das Trennzeichen in Oktal-, Binär-, Hex-Literalen und Gleitkommazahlen und nach dem Dezimalpunkt in Gleitkommazahlen. Das ist viel mehr, als ich annehmen möchte.Antworten:
Das Repo vim-jp / vim-cpp enthielt diese Änderung im Juli 2016:
Wenn Sie dieses Repo nicht verwenden möchten, können Sie diese Zeilen hinzufügen
~/.vim/syntax/cpp.vim
.quelle