2011-01-28 11 views
7

रूबी:क्या वीआईएम ओमनी-पूर्णता वास्तव में इतनी सीमित है? या क्या मैं कुछ न कुछ भूल रहा हूं?

file = File.new("some.txt", "r") 
lines = file.readlines 

ओमनी-पूर्ण परीक्षण

file.readl 
    --------- 
    readline  <- PASSED 
    readlines 
    --------- 

"hola".capital 
    --------- 
    capitalize <- PASSED 
    capitalize! 
    --------- 

lines. 
       <-- FAILED (no suggestions) 

lines[0].capital 
       <-- FAILED (no suggestions) 

मैं भी अजगर की कोशिश की, और यह समान तरीके से काम किया। तो ऐसा लगता है कि ओमनी-पूर्णता का उपयोग वास्तविक विकास के लिए नहीं किया जा सकता है, क्योंकि यह बहुत साधारण मामलों में विफल रहता है?

क्या मुझे कुछ याद आ रही है? रूबी/पायथन के लिए कुछ इंटेलिजेंस को कैसे सुधार किया जा सकता है?

+0

यह सब उस ओमनी पूर्णता स्क्रिप्ट पर निर्भर करता है जो आवश्यक रूप से विम सेटअप का हिस्सा नहीं है। यदि कोई चरम पर जाता है, तो ओमनी पूर्णता स्क्रिप्ट * किसी भी स्थिति को इंटेलिसेंस हैंडल संभाल सकता है। – progo

उत्तर

10

मुद्दा यह है कि विम को पता नहीं है कि line एक स्ट्रिंग, एक ऐरे या कुछ अन्य कक्षा है। विम में कोई गहरा वाक्य रचनात्मक विश्लेषण नहीं है। यदि किसी चर या विधि को परिभाषित किया गया है, तो विम का कोई विचार नहीं है, आदि

यह केवल इसी तरह के शब्दों का सुझाव दे रहा है। तो हाँ, विम इस पहलू में एक आईडीई से अधिक सीमित है। यही कारण है कि ग्रहण त्रुटियों का सुझाव दे सकता है जैसे आपने उन्हें टाइप किया है, और विम नहीं कर सकता है।

विम अधिक बुनियादी है: एक तरह से, सबकुछ है, और इसे "कोड" के रूप में नहीं देखा जाता है।

तो आप सही हैं कि यह विम सीमा में से एक है।

उन सीमाओं के आसपास काम करने के लिए कुछ प्लगइन्स हैं (omnicpp कुछ विधियों के दायरे को निर्धारित करने के लिए ctags का उपयोग कर रहा है) लेकिन वे अक्सर प्रति भाषा के आधार पर विकसित होते हैं और कोई चांदी की बुलेट नहीं होती है।

+0

+1 - अच्छी प्रतिक्रिया। मैं यह भी जोड़ूंगा कि गतिशील भाषाओं के साथ काम करते समय समस्या जटिल होती है जहां ऑब्जेक्ट्स की बाइंडिंग रनटाइम तक ज्ञात नहीं होती है। इन मामलों में भी आईडीई को कुछ जादू करने के लिए काम करना है। –

+3

आप जानते हैं, AFAIK प्रत्येक ओमनी पूर्णता स्क्रिप्ट किसी भी तरह से भाषा विशिष्ट है: कोई डिफ़ॉल्ट सेट नहीं है। वे सिर्फ किसी भी अन्य प्लगइन के रूप में स्क्रिप्ट, तीसरे पक्ष हैं। स्क्रिप्ट आईडीई के ऐसा करने के साथ-साथ स्कॉप्स और प्रकारों को अच्छी तरह से निर्धारित कर सकती है। – progo

+0

@progo: आप सही हैं। मेरी टिप्पणी जावा के लिए लैंगेज-विशिष्ट आईडीई बनाम परिप्रेक्ष्य में विम को रखने की कोशिश कर रही थी, सी # ... विम एक सामान्य उपकरण है और वास्तव में कुछ मामलों में एक विशिष्ट उपकरण बनाम प्रतिस्पर्धा नहीं कर सकता है। –

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