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;
}
जब मैं इसे विम में देखता हूं, तो मैं निम्नलिखित सिंटैक्स हाइलाइटिंग देखता हूं (ध्यान दें कि मैं कुछ अतिरिक्त हाइलाइटिंग स्क्रिप्ट का उपयोग कर रहा हूं ):
मैं चाहूंगा कि सभी अंक 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, कि अगर सी है ++, उपयोग cstdlib
, नहीं stdlib.h
।)
मैंने अभी देखा कि मई 2014 के बाद से एक खुला मुद्दा है btw।
—
मार्टिन टूरनोइज
@ मुरू लगता है कि समस्या ठीक हो गई है। मैं अब के लिए एक त्वरित हैक का उपयोग कर के साथ ठीक हूँ। धन्यवाद!
—
जेक
@Carpetsmoker मुझे पता नहीं है कि सिंटैक्स का मिलान वास्तव में यह जानने के लिए है कि मेरा परिवर्तन क्या करता है। मुझे लगता है कि यह किसी भी अंक या एकल उद्धरणों के बाद किसी भी अंक से मेल खाएगा, साथ ही
—
मुरु
ull
फुलाना, लेकिन मुझे नहीं पता कि यह कुछ अमान्य मामले से मेल खाएगा या नहीं। और जाहिरा तौर पर C ++ 14 ऑक्टल, बाइनरी, हेक्स शाब्दिक और फ्लोट में विभाजक और फ़्लोट्स में दशमलव बिंदु के बाद अनुमति देता है। यह एक बहुत अधिक की तुलना में मैं लेने के लिए तैयार हूँ।