2008-08-18 11 views
27

मैंने हाल ही में विम का उपयोग अपने टेक्स्ट एडिटर के रूप में करना शुरू कर दिया है और वर्तमान में मैं अपने स्वयं के अनुकूलन पर काम कर रहा हूं।विम में छोटे स्निपेट कैसे बनाएं?

मुझे लगता है कि कीबोर्ड मैपिंग बहुत कुछ कर सकते हैं, लेकिन उस समय के लिए मैं उन्हें लगभग एक प्रकार की स्निपेट सुविधा के रूप में उपयोग कर रहा हूं।

तो, उदाहरण के लिए, अगर मैं टाइप def{TAB} (:imap def{TAB} def():<ESC>3ha), यह करने के लिए फैलता है:

def |(): # '|' represents the caret 

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

  • क्या इससे बचने के लिए कोई तरीका है या इस कार्य को इस अंत में अधिक प्रभावी ढंग से उपयोग करने का कोई तरीका है?
  • क्या कोई अन्य वीम सुविधा इसके लिए बेहतर अनुकूल है?

SnippetsEmu का शीघ्रता से अवलोकन करने के बाद, ऐसा लगता है कि यह सबसे अच्छा विकल्प है और अनुकूलित करने के लिए बहुत आसान है की तुलना में मैं पहले सोचा था की तरह।

पिछले उदाहरण के साथ जारी रखने के लिए:

:Snippet def <{}>(): 

एक बार परिभाषित आप def{TAB} टाइप करके अपने टुकड़ा का विस्तार कर सकते हैं।

+0

शायद मैक्रोज़ छोटे स्निपेट के लिए बेहतर उपयुक्त होंगे? –

उत्तर

5

SnippetsEmu एक उपयोगी स्निपेट प्लगइन है।

+2

आपका लिंक-केवल उत्तर मुझे CouchDB के बारे में कुछ भेजता है। यही कारण है कि लिंक केवल जवाब भयानक हैं। माना जाता है कि, आपने कम से कम लिंक को शब्द दिया है, इसलिए मैं कम से कम Google को खोज सकता हूं। आपको अपना लिंक आधिकारिक एक में बदलना चाहिए, जैसे ओपी/प्रश्न है। – James

4

जैसा कि एमडीकोर द्वारा देखा गया है, SnippetsEmu एक लोकप्रिय विम स्क्रिप्ट है जो केवल इतना ही करता है। यदि आपको केवल विस्तार करने की आवश्यकता है (बिना देखभाल को वापस ले जाने के), तो आप मानक :ab[breviate] कमांड का उपयोग कर सकते हैं।

:ab[breviate] [<expr>] {lhs} {rhs} 
     add abbreviation for {lhs} to {rhs}. If {lhs} already 
     existed it is replaced with the new {rhs}. {rhs} may 
     contain spaces. 
     See |:map-<expr>| for the optional <expr> argument. 
6

तो SnippetsEmu (यह मेरे लिए था) बहुत भारी या आपको क्या चाहिए के लिए महत्वाकांक्षी है, मुझे लगता है कि फ़ाइल प्रकार के आधार पर के टुकड़े का प्रबंधन करता है एक प्लगइन लिखा था। स्निपेट चुनते समय टैब टैब पूरा हो जाता है! :)

यहाँ यह जाओ: snippets.vim

34

Snipmate - texmate की तरह :) http://www.vim.org/scripts/script.php?script_id=2540

वीडियो: http://vimeo.com/3535418

snippet def 
    """ ${1:docstring} """ 
    def ${2:name}: 
     return ${3:value} 
+0

भयानक फ्रेकिंग !!!! ग्रेट स्क्रिप्ट voyeg3r। ठीक वही जो मेरे द्वारा खोजा जा रहा था। – Daniel

+1

दोनों XPTemplate और UltiSnips स्निपमैट – user1825480

+1

पर एक सुधार हैं Snipmate में https://github.com/garbas/vim-snipmate पर एक अद्यतित कांटा है और https://github.com/honza पर स्निपेट का रेपो का उपयोग करता है/snipmate-snippets – caspyin

5

मैं सिर्फ UltiSnips स्थापित। एक अच्छा लेख है जो बताता है कि आप UltiSnips क्यों चुन सकते हैं: Why UltiSnips?

मैंने किसी भी अन्य स्निपेट प्लगइन्स का उपयोग नहीं किया है; मैंने पूरी तरह से फीचर्ड लगने वाले एक के साथ डुबकी लेने का फैसला किया और मुझे समायोजित करने में सक्षम होगा क्योंकि मुझे अधिक विम कौशल मिलते हैं और अधिक परिष्कृत चीजें करना चाहते हैं।

+0

मैंने स्निपमेट और उलटी स्निप दोनों की कोशिश की है और बिना संदेह के UltiSnips बहुत बेहतर है, क्योंकि बदलाव करने और स्निपेट बनाने के लिए और अधिक आसान है। – SergioAraujo

7

एक और सुझाव के रूप में (हालांकि थोड़ा अलग) vim की कार्यक्षमता में बनाया का उपयोग कर:

:iabbrev def def(): #<LEFT><LEFT><LEFT><LEFT><LEFT> 

अब जब भी आप डीईएफ़ एक अंतरिक्ष या अन्य गैर शब्द चरित्र लिखें, जिसके बाद, यह रूप में एक ही करने के लिए विस्तार होगा कि तुम क्या SnippetsEmu के आउटपुट के रूप में दिया गया है (अंतरिक्ष आपके द्वारा पूरा करने के लिए दर्ज की गई जगह से आता है)।

यह दृष्टिकोण आपके द्वारा उपयोग किए जाने वाले "अंतराल" समस्या का सामना नहीं करता है: inoremap, और अंतर्निर्मित vim है। इस सुविधा के बारे में अधिक जानकारी के लिए, :help abbrev देखें।

आप चिंतित हो सकते हैं कि अंतरिक्ष द्वारा ट्रिगर होने पर यह टैब नहीं अनावश्यक रूप से ट्रिगर होगा, लेकिन सामान्य रूप से यह ट्रिगर करने के बारे में काफी स्मार्ट है। मुद्दा अतिरिक्त केवल कुछ फ़ाइल प्रकार (उदाहरण के लिए, अजगर) के लिए संक्षिप्त नाम को सक्षम करने से कम किया जा सकता:

au filetype python :iabbrev ... etc 

कटाव [ETS] (प्रबंधक | एमु | मेट | .vim) निश्चित रूप से भी एक आदर्श समाधान है , लेकिन विकल्पों के बारे में जागरूक होना अच्छा लगता है (विशेष रूप से जब वे निर्मित होते हैं)।

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