2013-07-22 5 views
6

में एक्स मैं अपने आप को :X मार जब मैं टाइप करने के लिए :xअक्षम एन्क्रिप्शन: vim

मतलब पता चलता है कि :X निष्क्रिय करने के लिए एक रास्ता है एन्क्रिप्शन के रूप में तो vim में :X टाइपिंग कोई प्रभाव नहीं है कि?

मुझे लगता है कि एक कमांड है जिसे .vimrc फ़ाइल में रखा जा सकता है?

उत्तर

9

इस के लिए 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 टाइप किए जाने पर कोई फर्क नहीं पड़ता।

+0

कैसे मैं एक दूसरे मुझे टाइपिंग 'से रोकने नहीं करते:: एक्स' आप एक प्लगइन स्थापित करने से परहेज नहीं करते हैं, तो आप एक आरामदायक और एक्स्टेंसिबल तरह से संक्षिप्त रूपों को परिभाषित करने के लिए मिलता? – BPm

+0

@ बीपीएम आप क्यों पूछते हैं? चल रहा है 'एक्स!' फेंकता है "ई 477: नहीं! अनुमत ", फिर से परिभाषित करना: एक्स 'भी संभव नहीं है। यदि आप किसी अन्य को रीमेप करने के लिए कहते हैं तो 'एक्स' अतिरिक्त 'getchar (1) isnot char2nr ('! ')' स्थिति का उपयोग नहीं करता है। – ZyX

+0

मैंने पूछा क्योंकि मैं गलती से ': W' टाइप करना चाहता हूं लेकिन एक अन्य प्लगइन में एक आदेश है: डब्ल्यू!'। मैं अतिरिक्त शर्त का प्रयास करूंगा। धन्यवाद! – BPm

1

आप :cmap उपयोग कर सकते हैं एक्स में मैप करने के लिए एक्स, लेकिन साइड इफेक्ट पत्र एक्स कहीं भी

:cmap X x 

उपयोग करने के लिए एक से थोड़ा कम दखल संस्करण

:cmap X^M x^M 

के लिए सक्षम नहीं होने की तरह है, देखते हैं जो तुरंत बाद में प्रवेश करने पर एक्स से एक्स को मैप करेगा। :x के समान कार्यक्षमता वाला :X ओवरराइड करने के लिए

5

उपयोग :cnoreabbrev:

cnoreabbrev X x 

:cnoreabbrev:cabbrev करने के लिए पसंद के बाद से पहले से ही :x कुछ और करने के लिए पुनः मानचित्रित किया जा सकता है है।

ध्यान दें कि cabbrev सामान्य रूप से कमांड लाइन में सभी एकल-अक्षर वाले शब्दों X को प्रभावित करेगा, उदाहरण के लिए :X X:x x पर अनुवाद करेगा, संभवतः इसका उद्देश्य क्या नहीं है। इसे ठीक करने के लिए @ ज़ीएक्स का जवाब देखें।