2013-04-21 5 views
35

मैं का उपयोग कर vim में सामान्य मोड में नई-पंक्तियों को सम्मिलित चाहते में प्रवेश करने Shift-Enter और Ctrl-दर्ज के बिना एक नई पंक्ति सम्मिलित करें। मैं Vim Wikia - Insert newline without entering insert mode लेकिन से कुछ समाधान और मिश्रण समाधान की कोशिश Shift-Enter और Ctrl-दर्ज करें जवाब नहीं दिया: कारण तरीका है कि कीबोर्ड इनपुट आंतरिक रूप से नियंत्रित किया जाता है करने के लिएडालने मोड, vim

" put a new line before or after to this line 
nnoremap <S-CR> m`o<Esc>`` 
nnoremap <C-CR> m`O<Esc>`` 

" reverse J command 
nnoremap <C-J> vaW<Esc>Bi<CR><Esc>k:s/\s\+$//<CR>$ 
+0

अपने '$ TERM' (यदि * nix) क्या है? – timss

+0

'$ TERM' गूंज ->' क्यों xterm'? – helq

+0

यह प्रासंगिक हो सकता है कि चाबियों का अर्थ कैसे लिया जाता है। क्या आप स्क्रीन या टीएमयूक्स का भी उपयोग करते हैं? इसका अर्थ है कि मैं विकल्प के एक जोड़े की कोशिश की, और यह केवल 'नक्शा के लिए ' यहाँ काम करेगा। – timss

उत्तर

7

, इस दुर्भाग्य से नहीं है आम तौर पर आज संभव है। (यह विशेष मामले जाँचने में, हालांकि काम करना चाहिए।) कुछ कुंजी संयोजन, Ctrl तरह + गैर अक्षरात्मक मैप नहीं किया जा सकता है, और Ctrl + पत्र बनाम Ctrl + शिफ्ट + पत्र विशिष्ट नहीं किया जा सकता है। (जब तक आपका टर्मिनल अलग-अलग टर्मकैप कोड भेजता है, जो अधिकांश नहीं करता है।) डालने या कमांड लाइन मोड में, कुंजी संयोजन टाइप करने का प्रयास करें। यदि कुछ भी नहीं होता/डाला जाता है, तो आप उस कुंजी संयोजन का उपयोग नहीं कर सकते हैं। यह भी, <Tab>/<C-I> पर लागू होता है <CR>/<C-M>/<Esc>/<C-[> आदि (केवल अपवाद <BS>/<C-H> है।) यह एक ज्ञात दर्द बिंदु, और vim_dev पर विभिन्न चर्चाओं और #vim आईआरसी चैनल का विषय है।

कुछ लोगों को (सबसे पहले पॉल LeoNerd इवांस) है कि ठीक करने के लिए (टर्मिनलों है कि इस समर्थन में सांत्वना विम के लिए भी) चाहते हैं, और various proposals जारी कर दिया है।

लेकिन आज तक, कोई पैच या स्वयंसेवक अभी तक आगे नहीं आये हैं, हालांकि कई ने भविष्य में वीम 8 प्रमुख रिलीज में इसे रखने की इच्छा व्यक्त की है।

+0

अजीब और अजीब लगती है, स्पष्टीकरण – helq

+0

के लिए धन्यवाद यह ज्यादातर ऐतिहासिक कारणों से है, लेकिन दुर्भाग्य से बदलना मुश्किल है। –

39

मेरे वैकल्पिक उपयोग कर रहा है oo इस मानचित्रण के माध्यम से के तहत एक नई लाइन डालने के लिए वर्तमान (resp OO।): nmap oo o<Esc>k (। Resp nmap OO O<Esc>j)

+0

ग्रेट उत्तर। बस 'ओ' काम करता है और सम्मिलित मोड में भी जाता है। धन्यवाद – jpincheira

+0

जो चीज मुझे अन्य उत्तरों के साथ सबसे ज्यादा परेशान कर रही थी वह शॉर्टकट था। यह मेरी प्राथमिकताओं का पक्ष लेता है। – Canella

+0

मैंने ** एनएमएपी के ** ** शिफ्ट + जे न्यूलाइन को हटा दिया है। – Mo2

1

मैं का उपयोग करें: (resp से अधिक।) एस/\ N/\ r \ r/g (दो नईलाइनों के साथ नई लाइन का निर्माण करें, जो "ओ" जैसा ही है)।

+0

इस के लिए एक जंजीर cabbrev की आवश्यकता है – zzapper

1

यह मैं क्या उपयोग है:

nmap <CR> :a<CR><CR>.<CR> 

मैं nmap <CR> o<Esc> की कोशिश की है, लेकिन यह यूआई glitchy के रूप में यह मोड डालने और वापस का उपयोग करने जा रहा था बनाया है।

-2

आप एक हैक का उपयोग करते हैं कर सकते हैं।

संपादन मोड में, आप p का उपयोग वर्तमान क्लिपबोर्ड पेस्ट कर सकते हैं। चूंकि o एक नई लाइन जोड़ता है, इसलिए आप कर्सर के नीचे एक नई पंक्ति जोड़ने के लिए o<ESC>ddp का उपयोग कर सकते हैं; वहां से, p एक और लाइन जोड़ देगा जब तक आप कुछ और हटा नहीं देते।