C ++ 14, büyük sayısal değişmezlerin rakamlarını ayırmak için tek tırnak kullanma seçeneği sağladı. Bu, Vim'in sözdizimi vurgulamasını bozar.
Örneğin, aşağıdaki C ++ 14 programını göz önünde bulundurun:
#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;
}
Bunu Vim'de görüntülediğimde, aşağıdaki sözdizimi vurgulamasını görüyorum (bazı ek vurgulama komut dosyaları kullandığımı unutmayın ):
Tüm rakamların huge_number_again
kırmızı görünmesini istiyorum. Sözdizimi dosyalarımdan birinde veya ~/.vimrc
bunu düzeltmek için yapabileceğim bir değişiklik var mı ?
V7.4.923 (ikili değişmez değerler) içinde C ++ 14 için bazı destek eklendiğini görüyorum. Ama sayı ayırıcı görünüyor: - / son C ++ dosyaları buradan da henüz buna sahip görünmemektedir.
—
Martin Tournoij
Hızlı bir düzeltme için, muhtemelen ekleyebilir
—
muru
syn match cNumber display contained "\d\(\d\|'\)*\(u\=l\{0,2}\|ll\=u\)\>"
için ~/.vim/syntax/cpp.vim
. (Btw, bu C ++ ise, kullanın cstdlib
, değil stdlib.h
.)
Mayıs 2014'ten bu yana açık bir sorun olduğunu fark ettim .
—
Martin Tournoij
@muru Bu sorunu çözmüş görünüyor. Şimdilik hızlı bir kesmek kullanmakta iyiyim. Teşekkürler!
—
Jake
@Carpetsmoker Sözdizim eşleşmesinin tam olarak ne yaptığımı bilmek istediğinden emin değilim. Ben sadece herhangi bir rakam veya tek tırnak, artı
—
muru
ull
kabartmak takip bir rakam eşleşecek düşünüyorum , ama bazı geçersiz dava maç olup olmadığını bilmiyorum. Ve görünüşe göre C ++ 14, sekizlik, ikili, onaltı değişmez ve yüzer ve ayırıcıdaki ondalık noktadan sonra ayırıcıya izin verir. Bu benim almak istediğimden çok daha fazla.