इस के लिए cnoreabbrev
/cnoremap
का उपयोग करने का कुछ हद तक एक मानक तरीका नहीं है:
cnoremap <expr> X (getcmdtype() is# ':' && empty(getcmdline())) ? 'x' : 'X'
या
cnoreabbrev <expr> X (getcmdtype() is# ':' && getcmdline() is# 'X') ? 'x' : 'X'
:
x
जांच यह कमांड लाइन पर केवल चरित्र है, चाहे साथ
X
की जगह से पहले
। अंतर यह है कि पहले आपको :Xfoo
टाइप करने से रोक देगा (:xfoo
में अनुवाद करेगा), दूसरा नहीं होगा, लेकिन :X!
टाइप करने से रोकेगा (:x!
में अनुवाद करेगा जो वास्तव में :X!
के विपरीत समझ में आता है)।
खोज के लिए बिल्कुल कोई अंतर नहीं है (/X
ठीक है), input()
प्रॉम्प्ट और इतने पर और X
टाइप किए जाने पर कोई फर्क नहीं पड़ता।
कैसे मैं एक दूसरे मुझे टाइपिंग 'से रोकने नहीं करते:: एक्स' आप एक प्लगइन स्थापित करने से परहेज नहीं करते हैं, तो आप एक आरामदायक और एक्स्टेंसिबल तरह से संक्षिप्त रूपों को परिभाषित करने के लिए मिलता? – BPm
@ बीपीएम आप क्यों पूछते हैं? चल रहा है 'एक्स!' फेंकता है "ई 477: नहीं! अनुमत ", फिर से परिभाषित करना: एक्स 'भी संभव नहीं है। यदि आप किसी अन्य को रीमेप करने के लिए कहते हैं तो 'एक्स' अतिरिक्त 'getchar (1) isnot char2nr ('! ')' स्थिति का उपयोग नहीं करता है। – ZyX
मैंने पूछा क्योंकि मैं गलती से ': W' टाइप करना चाहता हूं लेकिन एक अन्य प्लगइन में एक आदेश है: डब्ल्यू!'। मैं अतिरिक्त शर्त का प्रयास करूंगा। धन्यवाद! – BPm