तीर कुंजियों के बिना सम्मिलित मोड में कर्सर को एक वर्ण पर ले जाएं


9

यह थोड़ा बहुत अतिरंजित लग सकता है, लेकिन मैंने विम पर स्विच किया और मैं अब वर्कफ़्लो के बारे में बहुत खुश हूं। मैं खुद को अनुशासित करने की कोशिश करता हूं कि तीर कुंजी का उपयोग न करें, क्योंकि हर समय अल्फ़ा-कीज़ पर हाथ रखना लिखते समय इतनी बड़ी बात है। इसलिए जब मुझे नेविगेट करने की आवश्यकता होती है तो मैं इन्सर्ट मोड से बाहर निकल जाता हूं, सामान्य मोड में चला जाता हूं और इंसर्ट मोड में वापस आ जाता हूं।

एक अपवाद है जहां यह वास्तव में अधिक बाधित है: मैं clang completeस्निपेट्स के साथ उपयोग करता हूं और super tabजो महान है। हर बार जब मैं एक फंक्शन ऑटो पूरा कर लेता हूं, उसके बाद जब मैं मापदंडों को भरता )हूं तो मैं कर्सर के साथ छोड़ देता हूं ताकि जारी रखने के लिए मुझे कर्सर को एक वर्ण को दाईं ओर ले जाना पड़े। जैसा कि आप कल्पना कर सकते हैं कि यह बहुत बार होता है ।

मेरे पास एकमात्र विकल्प (जहां तक ​​मुझे पता है) हैं: Esclaया , और मैं उनमें से किसी के बारे में खुश नहीं हूं। पहला एक सिंपल 1 कैरेक्टर कर्सर ले जाने के लिए मुझे 3 कीज़ हिट करता है, दूसरा मुझे एरो कीज़ में हाथ घुमाने के लिए बनाता है। तीसरा विकल्प यह होगा कि आप मैप CTRL-Lया एसएमएस करें

तो ऐसा करने का सबसे अच्छा तरीका क्या है?


//snippets (clang complete + supertab):
foo($`param1`, $`param2`)

//after completion:
foo(var1, var2|)
              ^ ^
              | |
     I am here  |
                 Need to be here

| कर्सर स्थिति को दर्शाता है


इसी तरह की समस्या के साथ, मैंने लिपि को पूरा करने के लिए हैकिंग को समाप्त कर दिया ताकि यह सुनिश्चित हो सके )कि फ़ंक्शन में कम से कम एक तर्क होने पर यह प्रतिध्वनित न हो । इसलिए मैं इसे हाथ से टाइप करता हूं। अब बहुत अधिक उपयोगी है।
दिमित्री फ्रैंक

क्या होता है जब आप टाइप करते हैं तो )मुझे लगता है कि यह वास्तव में डालने के साथ खत्म हो जाता है। (मैं इस प्लगइन का उपयोग नहीं करते हैं)
FDinoff

@Finoff नहीं, यह सिर्फ एक और सम्मिलित करता है)
bolov

1
@bolov निराशाजनक है। आप उस कोड को निकालने में सक्षम हो सकते हैं जो ऑटो-पेयर से करता है । मुझे नहीं पता कि प्लगइन्स संघर्ष करेंगे या नहीं। अन्य विकल्प <C-O>l1 सामान्य मोड कमांड के लिए सामान्य मोड से बाहर निकलने के लिए उपयोग करना है।
FDinoff

जवाबों:


5

यदि यह एक समापन कोष्ठक है, तो )बाहर निकलने के लिए मैप करें)

inoremap <expr> )  strpart(getline('.'), col('.')-1, 1) == ")" ? "\<Right>" : ")"

से लिया गया: http://vim.wikia.com/wiki/Automatically_append_closing_characters


पुराना उत्तर

:h i_CTRL-O एक कमांड निष्पादित करें, इन्सर्ट मोड पर लौटें।

Ctrl-ol आपको एक वर्ण दाईं ओर ले जाएगा, फिर आपको मोड डालने के लिए लौटाएगा।

वैकल्पिक रूप से कुछ ब्रैकेट प्लग इन आपको केवल क्लोजिंग ब्रैकेट टाइप करने की अनुमति देते हैं )और वे मौजूदा एक को ओवरराइड करेंगे।


1
यह काम नहीं करता है अगर )लाइन पर अंतिम चरित्र है (और ऐसा अक्सर होता है जैसे आप कोड लिखते हैं)। CTRL-O aहालांकि काम करता है। इसलिए मुझे लगता है कि हमने एक कुंजी को बचा लिया है। :)
बोलोव

सच del )केवल दो अक्षर हैं और हमेशा आपको बंद कोष्ठक के बाद रख देंगे।
ब्रेट वाई

')' पर लंघन एक आकर्षण की तरह काम करता है, शुक्रिया
bolov

1

डालने के मोड में उपयोग किए जाने वाले नियंत्रण कुंजियों को खोजने के लिए निम्न टाइप करें।

:help insert-index

ctrl-b का उपयोग नहीं किया जाता है, लेकिन आप कुछ अन्य कुंजी का त्याग करना चाह सकते हैं।

imap <c-b> <right>

यह कर्सर को सही एक चार को स्थानांतरित करने के लिए काम करता है। या कुछ डबल चार मानचित्र।

imap jj <right>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.