संक्षेप में, मैं विम एडिटर के लिए एक वर्किंग ऑटोकम्प्लीशन फीचर की खोज कर रहा हूं । मैंने पहले तर्क दिया है कि विम लिनक्स के तहत एक आईडीई को पूरी तरह से बदल देता है और जबकि यह निश्चित रूप से सच है, इसमें एक महत्वपूर्ण विशेषता का अभाव है: स्वतः पूर्णता।
मुझे इसके बारे में पता है Ctrl+ N, Exuberant Ctags एकीकरण , Taglist , cppcomplete और OmniCppComplete । काश, इनमें से कोई भी मेरे "ऑटोकंप्लीशन काम करने का विवरण" फिट नहीं करता है:
- Ctrl+N अच्छी तरह से (केवल) काम करता है यदि आप क्षमा करें कि कैसे वर्तनी है
class
, याwhile
। ओह अच्छा। - Ctags आपको रूखेपन देता है लेकिन इसमें बहुत सारी कमियां हैं।
- टैगलिस्ट सिर्फ एक सीटैग रैपर है और इस तरह, इसकी अधिकांश कमियां विरासत में मिली हैं (हालांकि यह लिस्टिंग की घोषणाओं के लिए अच्छी तरह से काम करता है )।
- cppcomplete बस वादे के अनुसार काम नहीं करता है, और मैं यह पता नहीं लगा सकता कि मैंने क्या गलत किया है, या यदि यह "सही ढंग से" काम कर रहा है और डिजाइन द्वारा सीमाएं हैं।
- लगता है OmniCppComplete को ठीक उसी तरह की समस्या है, जैसे कि स्वत: पूर्णता ठीक से काम नहीं करती है। इसके अतिरिक्त,
tags
फ़ाइल को एक बार फिर से मैन्युअल रूप से अपडेट करने की आवश्यकता है।
मैं इस तथ्य से अवगत हूं कि आधुनिक भी नहीं, पूर्ण-विकसित आईडीई अच्छा सी ++ कोड पूरा करने की पेशकश करते हैं। इसलिए मैंने अब तक इस क्षेत्र में विम की कमी को स्वीकार किया है। लेकिन मुझे लगता है कि कोड पूरा होने का एक मौलिक स्तर पूछने के लिए बहुत अधिक नहीं है, और वास्तव में उत्पादक उपयोग के लिए आवश्यक है। इसलिए मैं ऐसी चीज की तलाश कर रहा हूं जो कम से कम निम्नलिखित चीजों को पूरा कर सके।
सिंटेक्स जागरूकता । अधूरा वादा (लेकिन मेरे लिए वितरित नहीं), सही, गुंजाइश-जागरूक-ऑटो निम्नलिखित के पूरा होने:
variableName.abc variableName->abc typeName::abc
और वास्तव में, कुछ और पूरी तरह से बेकार है।
विन्यास । मुझे (आसानी से) निर्दिष्ट करने की आवश्यकता है कि स्रोत फाइलें कहां हैं, और इसलिए जहां स्क्रिप्ट को इसकी स्वत: पूर्ण जानकारी मिलती है। वास्तव में, मुझे अपनी निर्देशिका में एक मेकफाइल मिला है जो आवश्यक निर्दिष्ट पथों को निर्दिष्ट करता है। ग्रहण में मिली जानकारी की व्याख्या कर सकते हैं, क्यों नहीं एक विम स्क्रिप्ट भी?
अप-टू-डेटनेस । जैसे ही मैं अपनी फ़ाइल में कुछ बदलता हूं, मैं चाहता हूं कि ऑटो-कम्प्लीट इसको प्रतिबिंबित करे। मैं मैन्युअल रूप से ट्रिगर (या कुछ तुलनीय) नहीं करना चाहता
ctags
। इसके अलावा, परिवर्तन वृद्धिशील होना चाहिए , यानी जब मैंने पूरी फ़ाइल ट्री (जो बहुत बड़ी हो सकती है) को फिर से पार्स करने के लिए इसे पूरी तरह अस्वीकार्यctags
कर दिया है।
क्या मैं कुछ भूल गया था? अद्यतन करने के लिए स्वतंत्र महसूस करें।
मैं काफी विन्यास और / या छेड़छाड़ के साथ सहज हूं, लेकिन मैं खरोंच से समाधान का कार्यक्रम नहीं करना चाहता हूं, और मैं विम स्क्रिप्ट को डीबग करने में अच्छा नहीं हूं।
एक अंतिम नोट, मैं वास्तव में जावा और सी # के लिए कुछ ऐसा ही चाहूंगा, लेकिन मुझे लगता है कि इसके लिए बहुत अधिक आशा है: ctags
केवल पार्स कोड फाइलें और जावा और सी # दोनों के पास विशाल, पहले से तैयार फ्रेमवर्क हैं जिन्हें अनुक्रमित करने की आवश्यकता होगी। दुर्भाग्य से, एक आईडीई के बिना .NET विकसित करना C ++ की तुलना में PITA से भी अधिक है।
clang_complete
तकनीकी रूप से सबसे अधिक ध्वनि है, लेकिन परिणामों की कैशिंग और आंशिक संकलन की कमी के कारण निषेधात्मक रूप से धीमी है। मुझे स्वीकार करना होगा कि मैंने सभी उत्तरों की कोशिश नहीं की है क्योंकि कुछ के लिए एक जटिल, समय लेने वाली सेटअप की आवश्यकता होती है। मैं अब एक प्रयोग करने योग्य प्लगइन के लिए अपनी सांस पकड़ूंगा कि क्लैंग डेवलपर्स को सी ++ स्रोतों से एएसटी बनाने की अनुमति देता है (अब तक, सी ++ के लिए कोई अच्छा मुफ्त पार्सर नहीं थे)।
clang_complete
हाल ही में कोशिश की है ? यह libclang
अब कैशिंग के साथ उपयोग कर सकता है और इस प्रकार तेज होना चाहिए।
formatted like this
।)
sh
(मेरी लाइब्रेरी में अर्थ है) से शुरू होते हैं और उसके बाद मेरी कक्षा के संक्षिप्त नाम से। कक्षा के लिए उदाहरण केshP
लिएParser
। फिर आपको केवलshP
CTRL + p (या यदि आप चाहें तो CTRL + n) लिखना और हिट करना होगा और कक्षा के सदस्यों को अंतिम उपयोग से पहले (या पहली बार अगर CTRL + n तक) प्राप्त करना है