2010-08-13 2 views
20

हमारे सी ++ कोड बेस में हम 99 कॉलम लाइनें रखते हैं लेकिन 79-कुछ विषम कॉलम मल्टीलाइन टिप्पणियां रखते हैं। क्या यह स्वचालित रूप से करने के लिए एक अच्छी रणनीति है? मुझे लगता है कि स्मार्ट टिप्पणी लाइन-जुड़ने और अग्रणी * सम्मिलन के कारण मोड पहले से ही ज्ञात हैं।मल्टीलाइन सी टिप्पणियों के लिए अलग-अलग टेक्स्टविड्थ को विम करें?

+0

आप एक कस्टम 'formatexpr' या' formatprg' सेट कर सकते हैं, लेकिन यह एक vim प्लगइन या एक बाहरी फ़ॉर्मेटर programm लेखन की आवश्यकता होगी, विवरण के लिए सहायता देखें। मुझे कोई प्लगइन्स नहीं पता जो आपके लिए यह करेगा, लेकिन मुझे यकीन नहीं है कि वे मौजूद नहीं हैं। – ZyX

+0

क्या आप या तो नमूना कोड पोस्ट करना चाहते हैं या एक लिंक प्रदान करना चाहते हैं जिसे आप स्वरूपित करना चाहते हैं? कोई वादा नहीं, लेकिन मैं एक साधारण स्वरूपण कार्यक्रम लिखने में सक्षम हो सकता हूं। –

+0

@ अणुओं: मैं एक स्वरूपण कार्यक्रम की तलाश नहीं कर रहा हूं, बस कुछ ऐसा जो कुछ भी जानता है, मेरी टेक्स्टविड्थ सामान्य 99 की बजाय 79 है जब मैं एक बहुभाषी टिप्पणी के भीतर टाइप कर रहा हूं। – cdleary

उत्तर

15

स्पष्ट रूप से दोनों कोड और टिप्पणियां उसी textwidth विकल्प का उपयोग करती हैं।

:autocmd CursorMoved,CursorMovedI * :if match(getline(.), '^\s*\*') == 0 | :setlocal textwidth=79 | :else | :setlocal textwidth=99 | :endif 

यहाँ महत्वपूर्ण हिस्सा पता लगा रहा है जब हम एक टिप्पणी में कर रहे हैं: जहाँ तक मैं देख सकता हूँ, केवल चाल गतिशील इस विकल्प को सेट करने के लिए है।

/* 
* my comment 
*/ 

मेरी regex काम करना चाहिए ... जब तक आप कोड * के साथ शुरू में लाइनों (जो मुझे लगता है कि C++ में C में हो सकता है, कम बार) है: आप केवल टिप्पणियों इस तरह से स्वरूपित हैं। यदि आप इस तरह की टिप्पणियों का उपयोग करते हैं:

// comment line 1 
// comment line 2 

रेगेक्स लिखने के लिए भी आसान है। आप कोने मामलों सहित सभी संभव स्थितियों, कवर करने के लिए चाहते हैं, तो ठीक है ... मुझे लगता है कि सबसे अच्छी बात एक अलग पता लगाने समारोह को परिभाषित करने और फोन है कि :autocmd बजाय match() से होगा।

+0

+1, मैं एक समान प्रस्ताव पोस्ट करता था लेकिन यह इस के समान होता। – progo

+0

प्रदर्शन पर इसका किस प्रकार का प्रभाव पड़ता है? अगर मैं सर्वर में एसएसएचड हूं, तो क्या यह मेरी विलंबता को ध्यान में रख सकता है? –

+0

यह @ Kazark नहीं होगा, सभी तर्क Vim (यानी सर्वर पक्ष) के अंदर किया जाता है। ऐसा कहकर, यह प्रदर्शन को प्रभावित करेगा जैसे ही आप इसे स्थानीय रूप से उपयोग कर रहे थे (यानी एसएसएच के माध्यम से नहीं) –

1

मैं इसी समस्या से आया और मुझे लगता है कि मुझे एक उपयुक्त समाधान मिला है।

मैं अपनी टिप्पणियों को शब्द लपेटने के लिए क्या चाहता था ताकि जब मैं टाइप कर रहा हूं तो मुझे टेक्स्ट बनाने के बारे में चिंता करने की आवश्यकता नहीं है। यह टिप्पणी पाठ के साथ अच्छी तरह से काम करता है। लेकिन मैं अपने कोड vim प्रारूप के साथ सहज नहीं था। तो मैं एक्स कॉलम के बाद लाल रंग में हर चीज़ को हाइलाइट करना चाहता था।

केवल सीपीपी कोड के साथ ऐसा करने के लिए आप निम्नलिखित को अपने ~/.vim/ftdetect/cpp.vim फ़ाइल में जोड़ देंगे।

set textwidth=79 
match ErrorMsg '\%>99v.\+' 

नोट: यदि वे मौजूद नहीं हैं तो आपको फ़ाइल और फ़ोल्डर्स बनाना पड़ सकता है।

आप इस के साथ समस्याओं सुनिश्चित करें कि आप formatoptions लिए निर्धारित किया है कि बनाने के हों: सेट formatoptions vim के अंदर:

formatoptions=croql 

आप चलाकर देख सकते हैं।

+0

क्षमा करें, लेकिन नहीं - यह वही समाधान है जो मुझे इस प्रश्न के लिए मिला है कि मैंने पूछा: http://stackoverflow.com/questions/235439/ पूरे स्थान पर जंक हाइलाइट करना बहुत कम उत्सुकता है, जिसके लिए मैं उम्मीद कर रहा हूं! – cdleary

संबंधित मुद्दे