2012-03-31 5 views
9

अपरिवर्तित मैं मेरे छोटे कीस्ट्रोक का उपयोग एक कॉलन पाने के लिए बनाने की कोशिश के रूप मेंvimrc स्वैप अर्धविराम और पेट लेकिन छोड़ बृहदान्त्र में अन्य <map> रों

noremap ; : 
noremap : ; 

निर्धारित किया है। हालांकि यह मेरे अन्य मैपिंग्स काम नहीं करता है क्योंकि अब यह एक कोलन के बजाय अर्धविराम डालता है।

उदाहरण के लिए map ,c :cd ~/code<CR> तो map ,c ;cd ~/code<CR> हो जाता है काम नहीं करता। मैं इसे कैसे ठीक करूं? धन्यवाद!

+0

आप पेट के पुन: मैप की जरूरत है? मैं बस 'nnoremap का उपयोग करें; : 'और वह यह है। – alberge

+0

@alberge: केवल उन मैपिंग के पहले एक का उपयोग करके आप 'शैडो,' सामान्य मोड आदेश। जब दूसरा मैपिंग जोड़ा जाता है, तो ';' और ':' के अर्थ बदल दिए जाते हैं। –

+3

वाह, मैंने इस मैपिंग का उपयोग करने के बारे में कभी नहीं सोचा था? मैं इसे अभी अपने .vimrc में जोड़ने जा रहा हूं। – weronika

उत्तर

8

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

:map ,c :cd ~/code<cr> 

की तरह इस व्यवहार से बचने के लिए आदेश, जो कर दाएँ हाथ की ओर किसी भी मैपिंग की व्याख्या नहीं की :noremap परिवार का उपयोग करें एक मानचित्रण परिभाषा की (:help :no देखें):

:noremap ,c :cd ~/code<cr> 

ज्यादातर मामलों में अन्य मैपिंग के साथ हस्तक्षेप एक अवांछनीय पक्ष प्रभाव है। एक सामान्य नियम के रूप में, मैं एक है जब एक मानचित्रण शुरू सम्मेलन निम्नलिखित से जाने के लिए सिफारिश करेंगे: :noremap कार्यों का उपयोग करें जब तक कि वहाँ एक स्पष्ट कारण नहीं है।

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