2013-08-06 5 views
5

मैं अक्सर की तरहvim: सी कुल (struct/संघ) के सदस्यों के प्रकार, तब भी जब नेस्ट

ptr->member1.member2[i].another_member.final_member = 42; 

अन्य डेवलपर के सी भाव युक्त कोड को पढ़ने और पता लगाने के लिए final_member है किस प्रकार की आवश्यकता होगी, अपने आप को खोजने के प्रदर्शित करते हैं। आम तौर पर मैं क्या करता हूं, ptr की घोषणा से शुरू होने और सदस्यों की श्रृंखला में अपना रास्ता खोदने से सी टैग्स का उपयोग करके प्रकार की श्रृंखला को ट्रैक करना है। यह बोझिल है और अक्सर मैं अपने सिर को खरोंच कर रहा हूं, खुद से पूछ रहा हूं "श्रृंखला में अगला सदस्य क्या था?" मामलों को और भी खराब बनाने के लिए, स्रोत पेड़ में final_member के लिए एक साधारण grep एक से अधिक संरचनाओं में नाम का पुन: उपयोग किए जाने के कारण बहुत अधिक झूठे सकारात्मक बन जाता है।

क्या मुझे विम बनाने का कोई तरीका है सीधे मुझे जवाब दें? मैं किसी भी प्लगइन को स्थापित करने के लिए तैयार हूं और यहां तक ​​कि कुछ वर्ण टाइप करें जबकि कर्सर final_member पर है या पूरी अभिव्यक्ति का चयन करें :-) गैर-जीयूआई समाधान पसंद करते हैं।

+0

इस C++ 'है ->' सही – aaronman

+3

@aaronman नहीं, सी, जब से कश्मीर एंड आर :-) – Jens

+0

हुह मैं हालांकि सी 'नहीं था ->' ऑपरेटर, लगता है कि यह – aaronman

उत्तर

0

मैं वास्तव में आपको पूरा करने के लिए प्लगइन clang_complete (या कुछ अन्य प्लगइन द्वारा संचालित प्लगइन) का उपयोग करने का सुझाव देता हूं। यह आपको शुद्ध वास्तविक संकलक द्वारा सी/सी ++/उद्देश्य-सी कोड को पूरा करने, टैग द्वारा बदसूरत विधि नहीं देगा। समापन मेनू में प्रत्येक आइटम में फ़ील्ड का प्रकार भी होता है (जो आप खोज रहे हैं)

Omnicppcomplete अक्सर जटिल अभिव्यक्तियों पर विफल रहता है। Clang महान काम करता है, क्योंकि यह असली भयानक संकलक है।

+0

ठीक है, मैंने इसे इंस्टॉल किया है। '->' या '.' के बाद संभावित समापन प्रकार प्रदर्शित करते हैं। लेकिन क्या इसे वास्तव में पूरा किए बिना भी प्रकार को प्रदर्शित करने के लिए बनाया जा सकता है, यानी जब सदस्य नाम पहले ही पूरा हो चुका है, तो कहें, फ़ंक्शन को कॉल करके? – Jens

+0

आपको फ़ंक्शन नाम के अंत में कर्सर डालना चाहिए, और Ctrl + X Ctrl + U दबाएं। यह वास्तव में सिंगल मेन्यूइटम के साथ पूरा करने वाला मेनू दिखाएगा। –

+0

ठीक है, मैंने कमांड मोड के लिए मैपिंग की है: 'नक्शा टी हेई ' जो चाल है। लेकिन यह मुझे डालने मोड में डालता है (यदि मैं एक सेकंड के बाद पॉपअप गायब हो जाता है तो '' संलग्न करता है)। क्या कमांड मोड के भीतर से पूरा होने का तरीका है और इसे अगले कुंजी प्रेस ईवेंट के साथ गायब कर दिया गया है? – Jens

2

यदि मैं कई नेस्टेड structs के साथ एक परियोजना पर काम कर रहा हूं, तो विकल्प में preview जोड़ें।

उत्कृष्ट omnicppcomplete प्लगइन के साथ संयोजन में यदि आप पूर्णता मेनू में कोई प्रविष्टि चुनते हैं तो एक छोटी स्क्रैच विंडो पॉप अप हो जाती है। वह स्क्रैच विंडो चयनित टैग के कुछ गुण दिखाती है। अन्य चीजों के अलावा इसमें टैग के लिए खोज पैटर्न होता है, जिसमें एक स्ट्रक्चर सदस्य के मामले में आमतौर पर इसका डेटाटाइप होता है।

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