vim

2013-08-31 4 views
34

में आदेश पर अमल मैं हाल ही में एक vim प्लगइन कुछ <Plug> कहा जाता है का उपयोग कर पाया है। उदाहरण के लिए <Plug>abc_def कमांड है जिसे मैं निष्पादित करना चाहता हूं। vim

मैं :<Plug>abc_def और इसी तरह की तरह सब कुछ कोशिश की है। कुछ भी काम नहीं किया। और :help <Plug> कोई जानकारी नहीं दी।

हालांकि, मैं एक मानचित्रण :map x <Plug>(unite_redraw) बनाकर उसका निष्पादित करने में सक्षम किया गया है। फिर मैं इसे x दबाकर निष्पादित कर सकता हूं।

अब, वहाँ बस इसे चलाने के लिए एक डमी मानचित्रण बनाए बिना :<Plug>abc_def निष्पादित करने के लिए किसी भी तरह से है? मैं उपयोग की वास्तविक प्लगइन एकजुट है।

उत्तर

44

<Plug> मैपिंग मैप किए जाने और मानचित्र के माध्यम से कॉल करने के लिए हैं। एक <Plug> मानचित्र उपयोगकर्ता को प्लगइन क्रियाओं के एक साफ इंटरफ़ेस का खुलासा करने के लिए एक डिवाइस है।


उदाहरण: मानचित्रण के बजाय इस तरह के "नक्शा कार्रवाई करने के लिए zz 'केंद्र कर्सर सौंदर्य की दृष्टि से' 'के रूप में प्लगइन की हार्ड कोड में कुछ प्लगइन कार्य करने के लिए कुछ महत्वपूर्ण,,

nnoremap <expr> zz 'zz'.float2nr(winheight(0)*0.1).'<C-E>' 

यह है बेहतर केवल एक नामित <Plug> मानचित्रण कि उपयोगकर्ता तो पुन: मैप कर सकते हैं बेनकाब करने के लिए, कॉपी और "कार्रवाई" पेस्ट किए बिना।

nnoremap <expr> <Plug>NiceCenterCursor 'zz'.float2nr(winheight(0)*0.1).'<C-E>' 
nmap zz <Plug>NiceCenterCursor 

यह उपयोगकर्ता द्वारा ओवरराइड, पुन: उपयोग, प्लग करने के लिए आसान है।


<Plug> मैपिंग केवल मोड वे के लिए परिभाषित किया गया है में सक्रिय हैं। सामान्य मोड के लिए परिभाषित <Plug> मैपिंग निष्पादित करने के लिए, आप किसी भी सामान्य कमांड के साथ कर सकते हैं: :normal (विस्मयादिबोधक चिह्न के बिना) का उपयोग करें।

:execute "normal \<Plug>NiceCenterCursor" 

के बाद से <Plug> वास्तव में एक विशेष जादू कुंजी का प्रतिनिधित्व करता है, हम :execute के साथ एक साथ :normal का उपयोग करें और <Plug> से बचने के लिए की जरूरत है।

<Plug> तंत्र :h 41.11 पर गहराई में वर्णित है। this article about this topic by a Vim master भी देखें।

+4

ओह, इसलिए यह आवश्यक है कि 'nmap'' nmap' है और 'nnoremap' नहीं है, क्योंकि यह' नाइस सेंटरर कर्सर 'के बारे में सोचता है, बस एक और मैपिंग के रूप में। सही बात? – Tarrasch

+4

@Tarrasch वास्तव में, नक्शे के दाएँ हाथ की ओर यह काम करने के लिए पुनः मानचित्रित किया जाना चाहिए। 'सामान्य: 'के साथ ही: (रीमेपिंग)': सामान्य 'का उपयोग करना आवश्यक है, गैर-रीमेपिंग नहीं: सामान्य! – glts

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