2009-12-11 9 views
17

मैं दो मैपिंग बनाने की कोशिश कर रहा हूं जो मेरे लिए कुशल हैं:वीआईएम: मैपबल (अप्रयुक्त) शॉर्टकट अक्षर?

map X ddp 

जिसे मैं एक बार में हटाने और पेस्ट करने के लिए उपयोग करता हूं।

map X "_dw 

जो एक रजिस्टर में yanking बिना एक शब्द को हटा देगा।

हालांकि मैं किसी भी मौजूदा, उपयोगी शॉर्टकट को तोड़ना नहीं चाहता हूं इसलिए मैं सोच रहा हूं कि मैं किस कुंजी का उपयोग कर सकता हूं - कोई सुझाव? क्या मैं बहुत उत्साहित हूं?

उत्तर

10

प्रत्येक एकल ASCII चरित्र, ऊपरी और निचले मामले का उपयोग विम में कुछ के लिए किया जाता है। तो आप ओवरराइटिंग कुछ - उस चीज़ को चुनें जिसे आप उपयोग नहीं करते हैं। यह आपके अपने एक्सटेंशन के लिए एक सामान्य मुहावरे का उपयोग करने में मदद कर सकता है। मैं उदाहरण के लिए एक प्रमुख अल्पविराम का उपयोग करें,:

map ,w :w!<CR> 
map ,e :e #<CR> 
imap ,, <ESC> 

(के बाद से मैं डालने मोड में दो लगातार कॉमा लिखने की ज़रूरत काफी कभी नहीं पिछले, मेरे लिए विशेष रूप से उपयोगी है, और यह सब तय करना है के लिए नहीं अच्छा है । Esc कुंजी के लिए रास्ता)

+0

यह वास्तव में वास्तव में एक अच्छा विचार है, मुझे लगता है कि मैं इसे कॉपी करने जा रहा हूं। – hora

+0

उहम्म, नहीं ... इसे एक बार कोशिश की, ... अल्पविराम में खो गया। – Rook

+3

हार्ड-कोडित कॉमा के बजाय का उपयोग करना पसंदीदा समाधान –

19

vim मदद कोई अनुभाग है: वह नक्शा-जो-कुंजी

1.7 WHAT KEYS TO MAP         *map-which-keys* 

If you are going to map something, you will need to choose which key(s) to use 
for the {lhs}. You will have to avoid keys that are used for Vim commands, 
otherwise you would not be able to use those commands anymore. Here are a few 
suggestions: 
- Function keys <F2>, <F3>, etc.. Also the shifted function keys <S-F1>, 
    <S-F2>, etc. Note that <F1> is already used for the help command. 
- Meta-keys (with the ALT key pressed). |:map-alt-keys| 
- Use the '_' or ',' character and then any other character. The "_" and "," 
    commands do exist in Vim (see |_| and |,|), but you probably never use them. 
- Use a key that is a synonym for another command. For example: CTRL-P and 
    CTRL-N. Use an extra character to allow more mappings. 

See the file "index" for keys that are not used and thus can be mapped without 
losing any builtin function. You can also use ":help {key}^D" to find out if 
a key is used for some command. ({key} is the specific key you want to find 
out about, ^D is CTRL-D). 
+0

आपका पेस्ट मिलाया गया है – aehlke

+0

यदि आप नियंत्रण कुंजी की तलाश में हैं और उनका क्या मतलब है, तो आप उन्हें^वी के साथ उद्धृत करना चाहेंगे। आप टाइप कर सकते हैं: मदद^वी^सी^सी के लिए मदद खोजने के लिए। (^ क्यू खिलौना ऑपरेटिंग सिस्टम पर काम कर सकता है।) – Brian

2

uhmm, नहीं, नहीं। अपने मैपिंग्स बनाते समय कुछ भी ओवरराइट करने की कोशिश न करें ... इतना अधिक नहीं है क्योंकि आप कमांडिंग का उपयोग नहीं करते हैं, लेकिन क्योंकि आपके पास कुछ प्लगइन हैं जो आपके पास हैं या हो सकता है।

और फिर आप इसे ओवरमैप करते हैं, और फिर आपको चिंता करनी होगी।

व्यक्तिगत रूप से, आदेशों में इस तरह के रूप में आप एक उदाहरण के रूप दे दिया के लिए, मैं Ctrl + कुछ कुंजी संयोजन पसंद है। विम में बहुत सारे मुफ्त हैं, और Ctrl के पास बाईं ओर वाले अक्षर तब एक अच्छी जोड़ी बनाते हैं।

बीटीडब्ल्यू, आप उन मैपिंग्स के साथ क्या करने की कोशिश कर रहे हैं ... मैं दूसरे को समझता हूं (शब्द द्वारा शब्द हटाएं), लेकिन पहले मुझे समझ में नहीं आता है। यह क्या करना चाहिए? लाइनों का स्थानांतरण करें?

+0

सामान्य रूप से, प्लगइन लेखकों को 'सामान्य!' और 'नोरमैप' का उपयोग करना चाहिए।(लेकिन हर कोई नहीं करता और मुझे लगता है कि ऐसे कुछ मामले हैं जहां वे नहीं कर सकते हैं।) – idbrii

+0

@pydave - हां, उन्हें उचित जगह का उपयोग करना चाहिए। दोनों एनएमएपी/एनोरोरमैप का उचित उपयोग होता है, और न ही चांदी की गोली के रूप में वकालत की जानी चाहिए। अंतर जानने के लिए सबसे अच्छा है। – Rook

13

कई विम प्लगइन्स उनके प्रमुख दृश्यों शुरू करने के लिए एक प्रारंभिक <Leader> का उपयोग करें; यह एक (अन्यथा सामान्यतः) अप्रयुक्त कुंजी है जो उपयोगकर्ता द्वारा विन्यास योग्य है।

           *<Leader>* *mapleader* 
To define a mapping which uses the " mapleader " variable, the special string 
" <Leader> " can be used. It is replaced with the string value of " mapleader ". 
If " mapleader " is not set or empty, a backslash is used instead. Example: 
     :map <Leader>A oanother line<Esc> 
Works like: 
     :map \A oanother line<Esc> 
But after: 
     :let mapleader = "," 
It works like: 
     :map ,A oanother line<Esc> 

Note that the value of " mapleader " is used at the moment the mapping is 
defined. Changing " mapleader " after that has no effect for already defined 
mappings. 
+1

* यह * सही उत्तर है – aehlke

5

आमतौर पर मैं सबसे मैपिंग के लिए उपयोग नियंत्रण + [पत्र] या Alt + [पत्र] और यह सुरक्षित है, लेकिन जब से उस खिड़की आदेशों के लिए आवश्यक है 'w' के लिए बाहर देखते हैं। आपको arpeggio.vim में रुचि भी हो सकती है जो आपको कुंजी के साथ-साथ दबाए गए समूहों के लिए मैपिंग बनाने देता है - यह आपके मैपिंग के लिए संभावनाओं का व्यापक रूप से विस्तार करेगा, जिसमें किसी चीज़ को ओवर-मैपिंग का कोई खतरा नहीं है। उदाहरण के लिए, आप एक कमांड में हटाने और पेस्ट करने के लिए "डीडीपी" निष्पादित करने के लिए "डीपी" (एक साथ दबाए गए) को मानचित्र बना सकते हैं।

+0

बस arpeggio का उपयोग शुरू किया और अब तक मुझे यह पसंद है। – stephenmm