जवाबों:
remap
एक विकल्प है जो मैपिंग को पुनरावर्ती रूप से कार्य करता है। डिफ़ॉल्ट रूप से यह चालू है और मैं आपको इसे इस तरह छोड़ने की सलाह दूंगा। बाकी कमांड मैपिंग कर रहे हैं , नीचे वर्णित हैं:
:map
और :noremap
कर रहे हैं पुनरावर्ती और गैर पुनरावर्ती विभिन्न मानचित्रण आदेशों के संस्करणों। इसका मतलब यह है कि यदि आप करते हैं:
:map j gg
:map Q j
:noremap W j
j
को मैप किया जाएगा gg
। Q
को मैप भी किया जाएगा gg
, क्योंकि j
पुनरावर्ती मैपिंग के लिए विस्तारित किया जाएगा। गैर-पुनरावर्ती मैपिंग के लिए विस्तारित नहीं किया जाएगा क्योंकि (और नहीं ) W
मैप किया जाएगा।j
gg
j
अब याद रखें कि विम एक मोडल एडिटर है । इसमें एक सामान्य मोड, विजुअल मोड और अन्य मोड हैं।
मैपिंग के इन सेटों में से प्रत्येक के लिए, एक मैपिंग है जो सामान्य, दृश्य, चयन और ऑपरेटर मोड ( :map
और :noremap
) में काम करता है, एक जो सामान्य मोड ( :nmap
और :nnoremap
) में काम करता है , एक दृश्य मोड ( :vmap
और :vnoremap
) और इतने पर।
इस पर अधिक मार्गदर्शन के लिए, देखें:
:help :map
:help :noremap
:help recursive_mapping
:help :map-modes
noremap
कुछ विपरीत होने के लिए मानता था map
। मेरा मतलब कुछ ऐसा है जो एक मैपिंग को हटा देता है। जवाब के लिए धन्यवाद। इसने मुझे स्पष्ट किया
:map
, आदि सभी मोड में काम नहीं करते हैं, बिल्कुल, बस सभी सामान्य (विशेष रूप से, सामान्य मोड, दृश्य मोड, चयन मोड, और) ऑपरेटर-लंबित मोड)। यदि आप इंसर्ट, कमांड-लाइन, या लैंग-आरजी मोड में काम करने के लिए मैपिंग चाहते हैं, तो आपको उपयोग करने की आवश्यकता है :map!
, आदि (स्रोत: vimdoc.sourceforge.net/htmldoc/map.html#map-overview )
मुझे लगता है कि विम डॉक्युमेंट में इन कमांड्स के नामकरण के पीछे का अर्थ समझाया जाना चाहिए। बस आपको बता रहा है कि वे क्या नाम याद रखने में आपकी मदद नहीं करते हैं।
map
सभी पुनरावर्ती मैपिंग आदेशों की "जड़" है। रूट फॉर्म "सामान्य", "दृश्य + चयन" और "ऑपरेटर-लंबित" मोड पर लागू होता है। (मैं "रूट" शब्द का प्रयोग भाषा विज्ञान के रूप में कर रहा हूं ।)
noremap
सभी गैर-पुनरावर्ती मैपिंग आदेशों की "जड़" है। रूट रूप के समान मोड पर लागू होता है map
। ( nore
"गैर-पुनरावर्ती" का अर्थ उपसर्ग के बारे में सोचें ।)
(ध्यान दें कि ऐसे !
मोड भी हैं map!
जो डालने और कमांड-लाइन पर लागू होते हैं।)
इस संदर्भ में "पुनरावर्ती" का क्या अर्थ है, इसके लिए नीचे देखें।
मोड मोड को प्रीपेंड करना जैसे n
मोड्स मैपिंग को संशोधित करता है। यह लागू मोड्स की सूची का एक सबसेट चुन सकता है (जैसे केवल "विज़ुअल"), या अन्य मोड चुनें जो map
लागू नहीं होंगे (जैसे "इन्सर्ट")।
उपयोग help map-modes
आपको कुछ तालिकाएँ दिखाएगा जो बताती है कि मानचित्रण किस मोड पर लागू होता है, इसे कैसे नियंत्रित किया जाए।
मोड पत्र:
n
: केवल सामान्यv
: दृश्य और चयनo
: ऑपरेटर-लंबितx
: केवल दृश्यs
: केवल चयन करेंi
: डालेंc
: कमांड लाइनl
: सम्मिलित करें, कमांड-लाइन, regexp-search (और अन्य। सामूहिक रूप से "Lang-Arg" छद्म-मोड कहा जाता है)" पुनरावर्ती " का अर्थ है कि मानचित्रण का परिणाम में विस्तार किया जाता है, फिर परिणाम को दूसरे परिणाम तक विस्तारित किया जाता है, और इसी तरह।
जब इनमें से एक सत्य होता है, तो विस्तार रुक जाता है:
उस बिंदु पर, अंतिम परिणाम के विम के डिफ़ॉल्ट "अर्थ" को लागू / निष्पादित किया जाता है।
" गैर-पुनरावर्ती " का अर्थ है कि मानचित्रण केवल एक बार विस्तारित होता है, और उस परिणाम को लागू / निष्पादित किया जाता है।
उदाहरण:
nmap K H
nnoremap H G
nnoremap G gg
उपरोक्त कारणों K
का विस्तार करना है H
, फिर H
विस्तार करना G
और बंद करना है। इसकी वजह से रुक जाता है nnoremap
, जो फैलता है और तुरंत रुक जाता है। का अर्थ G
निष्पादित किया जाएगा (यानी "अंतिम पंक्ति पर जाएं")। कम से कम एक गैर-पुनरावर्ती मानचित्रण को कभी भी विस्तार श्रृंखला में लागू किया जाएगा (यह होने वाला अंतिम विस्तार होगा)।
की मैपिंग G
करने के लिए gg
ही लागू होता है अगर आप प्रेस G
, लेकिन नहीं करता है, तो आप प्रेस K
। यह मैपिंग दबाव को प्रभावित नहीं करती K
है चाहे G
वह पुनरावर्ती रूप से मैप की गई हो या नहीं, क्योंकि यह पंक्ति 2 है जिसके कारण विस्तार K
रुक जाता है, इसलिए पंक्ति 3 का उपयोग नहीं किया जाएगा।
map
केवल सामान्य, दृश्य, चयन और ऑपरेटर-लंबित मोड पर लागू होती है, सभी मोड पर नहीं।
एक अंतर यह है कि:
:map
करता nvo
== सामान्य + (दृश्य + चयन) + ऑपरेटर लंबित:map!
करता है ic
== सम्मिलित + कमांड-लाइन मोडजैसा कि help map-modes
तालिकाओं पर कहा गया है ।
तो: map
सभी मोड में मैप नहीं करता है ।
सभी साधनों तुम दोनों की जरूरत को मैप करने :map
और :map!
।
command mode
लिए एक और ऐतिहासिक नाम है normal mode
। अध्याय 5 vimdoc.sourceforge.net/htmldoc/intro.html#vim-modes-intro )। संक्षिप्त नाम 'c' 'कमांड-लाइन' के लिए है।दूसरे शब्दों में, डिफ़ॉल्ट रूप से में: map! lhs rhs
रिकर्सिवली के लिए आरएचएस को एलएचएस नक्शे डालने + कमांड लाइन मोड। यह तब तक है जब तक कि remap
डिफ़ॉल्ट विकल्प set noremap[!]
~ / .vimrc में स्पष्ट रूप से अक्षम न हो । उस मामले में मानचित्रण पुनरावर्ती (उचित नहीं) नहीं होगा।
vnoremap
औरvmap
काम। केवल दृश्य मोड में मैपिंग करने के लिए, का उपयोग करेंxmap
औरxnoremap
।