2009-11-24 8 views
6

में अंतर्निहित कमांड को अक्षम करने के लिए कैसे करें, जब मैं :wq दबाता हूं तो यह लगभग हमेशा एक दुर्घटना होती है जो :w इनपुट करने का प्रयास करते समय होती है। मैं :wq अक्षम करना चाहता हूं।विम

सबसे नज़दीकी मुझे मिला cmap है, लेकिन इसमें कुछ अजीब व्यवहार है। अगर मैं

:cmap wq w 

कुछ ऐसा करता हूं तो मैं अब :wq इनपुट भी नहीं कर सकता; यह केवल कमांड मोड में से w पर कीस्ट्रोक अनुक्रम को रीमेप्स करता है। अब, उदाहरण के लिए, wq युक्त स्ट्रिंग पर एक खोज/प्रतिस्थापन आदेश इनपुट नहीं कर सकता।

मैं बस सटीक कमांड :wq से :w या नो-ऑप को उपनाम करना चाहता हूं। क्या इसे करने का कोई तरीका है?

संपादित करें: स्पष्ट किया क्यों :cmap के लिए मुझे

उत्तर

0

ऐसा लगता है कि सबसे अच्छा विकल्प सिर्फ :cmap व्यवहार करने के लिए इस्तेमाल करने के लिए है। दुर्लभ घटना में मैं कीबोर्ड seqeunce wq इनपुट करना चाहता हूं, मैं बस wq पर क्लिक कर सकता हूं, एक सेकंड प्रतीक्षा करें, फिर q दबाएं। मुझे this possible solution मिला लेकिन यह मेरे स्वाद के लिए बहुत जटिल है।

2

एक विकल्प नहीं है एक बेहतर समाधान हो सकता है:

:cabbrev wq w 

लेकिन मुझे यकीन है के रूप में अपवादित क्यों cmap काम नहीं करता है नहीं कर रहा हूँ। असल में मैं एक मेरी समारोह कुंजी मैप किया गया था फ़ाइलें सहेजने के लिए:

:map <F2> :w<CR> 
:nmap <F2> <ESC>:w<CR>i 

अद्यतन: पहले आदेश में सही टाइपो।

UPDATE2: संभावित समाधान:

:cabbrev wq<CR> w 

HTH

+0

क्या आप कृपया समझा सकते हैं: cabbrew? –

+2

मुझे लगता है कि यह ': cabbrev' होना चाहिए। ': cabbrev wq w' आपके द्वारा स्पेस दबाए जाने या दर्ज करने के बाद wq को wq में बदल देगा, इसलिए यह 'wq' do': w' बना देगा। अधिक जानकारी के लिए ': सहायता: cabbrev' और': help: ab' देखें। – DrAl

+0

क्षमा करें, मुझे लगता है कि मैं अपने प्रश्न में पर्याप्त स्पष्ट नहीं था। यदि आप करते हैं: cmap और यह भी लगता है: cabbrew, इसका मतलब है कि कमांड मोड में "wq" कीस्ट्रोक अनुक्रम "wq" के अलावा किसी अन्य चीज़ पर मैप किया गया है। तो फिर, उदाहरण के लिए, "wq" वाली स्ट्रिंग पर एक खोज/प्रतिस्थापन नहीं कर सकते हैं। मैं बस इतना करना चाहता हूं कि अगर मैं सही कमांड इनपुट करता हूं: wq, यह "w" या no-op के लिए उपनाम है। – user85509