इन्सर्ट मोड में रहते हुए लाइन की शुरुआत में जाएँ


83

मुझे पता है कि मैं भी उपयोग कर सकता हूं:

  1. Home इन्सर्ट मोड में
  2. Esc+ iसम्मिलित मोड से बाहर निकलने और इसे फिर से दर्ज करने के लिए, प्रभावी ढंग से लाइन की शुरुआत में जा रहा है।

लेकिन न तो मुझे संतुष्ट करता है। पहले मामले में मुझे हिट करने के लिए अपना सिर झुकाना पड़ता है Home, क्योंकि मैं आँख बंद करके नहीं मार सकता। दूसरे मामले में मेरे बाएं हाथ को हिट करने के लिए होम रो को छोड़ना पड़ता है Esc, जो कष्टप्रद भी है।

कोई विचार?


5
आप लाइन की शुरुआत में जाने के लिए 0 का उपयोग कर सकते हैं, लेकिन वह इन्सर्ट मोड में नहीं है।
५० पर

3
और यदि आप Esc को बहुत दूर तक पाते हैं, तो आप Ctrl- [का उपयोग कर सकते हैं :)

3
या बेहतर, Ctrl-C Esc की तरह काम करता है। या इससे भी बेहतर, Esc के लिए कैप्स लॉक को मैप करें।
एरिक विल्सन

4
@ मंकू आपने उनके सवाल का इतना जवाब नहीं दिया क्योंकि आपने उनके सवाल का जवाब नहीं दिया = P
puk

remap esc jj करने के लिए आपको मोड के बीच बहुत दूर जाने की जरूरत है
kapil

जवाबों:


149

Ctrl+ Oइन्सर्ट मोड में whilst आपको केवल एक कुंजी प्रेस के लिए कमांड मोड में रखता है। इसलिए Ctrl+ Oतब Shift+ Iआपको जो भी मिल रहा है उसे पूरा करना चाहिए।


आप Ctrl + c, I या Ctrl + [, I, Ctrl + c को ESC के समान कार्यात्मक रूप से लगाकर समान कार्य को पूरा कर सकते हैं और Ctrl + [ESC के बराबर है।
sml

42
या Ctrl-oइसके बाद 0( Ctrl-oइसके बाद की तुलना में थोड़ा अधिक कुशल Shift-I), क्योंकि आप स्वचालित रूप से इन्सर्ट मोड में वापस आ जाएंगे। कुछ मामलों में, Ctrl-oइसके बाद ^बेहतर हो सकता है (लाइन के पहले गैर-व्हाट्सएप चरित्र पर जाने के लिए)।
जीत

2
अगर डालने के मोड में Alt-A या Alt-I का उपयोग किया जा सकता है यदि आपकी पूरी कुंजी बच जाती है (iTerm2 में कॉन्फ़िगर किया जा सकता है)
Rivenfall

2
<C-O>के रूप में <C-[>या <Esc>यद्यपि वे एक जैसे दिख सकते हैं समान नहीं है। अंतर एक नियमित रूप से भागने के साथ एक संपादन है + <कुछ आप को फिर से सम्मिलित मोड में लाने के लिए> आपको दो संपादन के साथ छोड़ देता है, जबकि <CO> आपको एक के साथ छोड़ देता है। यह आपको एक पूर्ववत इतिहास को बनाए रखने में मदद कर सकता है, और चिपकाने के लिए पुन: उपयोग करने में सक्षम हो सकता है। कुछ विमर्स तर्क देंगे कि आपको उस तरह के सामान पर ध्यान देना चाहिए।
निकोलई एस

मुझे समझ नहीं आ रहा है। लिनक्स और मैक OSX दोनों पर, ctrl + O काम नहीं करता है। लेकिन अगर मैं ESCAPE कुंजी दबाता हूं, तो यह कमांड मोड में जाता है और फिर + मैं काम करता है।
डोनाटो

51

आप I(पूंजी i) का उपयोग कर इन्सर्ट मोड डाल सकते हैं ।

यह कर्सर को लाइन की शुरुआत में रखेगा।

इसी तरह आप Aलाइन के अंत में कुछ जोड़ने के लिए उपयोग कर सकते हैं ।

हालाँकि, यह वास्तव में सम्मिलित मोड में पहले से ही चलते समय की समस्या को हल नहीं करता है।

मैंने इन्सर्ट मोड पर मदद की जाँच की है, लाइन की शुरुआत में ले जाने के लिए इन्सर्ट मोड में कोई महत्वपूर्ण संयोजन नहीं है।

अन्य विचार: एक नया कमांड केवल इन्सर्ट मोड में रखें

inoremap <C-i> <Home>


1
टी। <Kbd> I </ kbd> ठीक काम करता है, लेकिन मैं पहले से इन्सर्ट मोड में रहते हुए लाइन की शुरुआत में जाने के लिए समाधान की मांग कर रहा हूं।
वैलेंटाइन वासिलीव

यह सीधे सवाल का जवाब नहीं देता है, लेकिन कार्यक्षमता प्रदान करता है जो संभवतः अधिकांश लोगों के लिए सवालों का शिकार करता है।
जो कोडर

24

मुझे क्रमशः लाइन की शुरुआत और अंत में Ctrl + a और Ctrl + e मैप किया गया है। यह अधिकांश बैश कमांड लाइनों के व्यवहार से मेल खाता है। मेरे लिए अच्छा काम करता है।

inoremap <C-e> <Esc>A
inoremap <C-a> <Esc>I

अगर मैं गलत नहीं हूं तो ये अन्य संपादकों के लिए भी कीबाइंडिंग हैं। मैं इन्हें अपनी vimrc फाइल में शामिल करने जा रहा हूं।
हारून

2
ये सामान्य Emacs व्यवहार हैं। अधिकांश ब्राउज़र विभिन्न प्रकार के पाठ क्षेत्रों में भी इनका समर्थन करते हैं। मुझे नहीं लगता कि यह एक बुरा विचार है, लेकिन यहाँ आप क्या याद कर रहे हैं: <C-e>प्रतियां / कर्सर के तहत चरित्र लिखते हैं ( <C-y>कर्सर के लिए), <C-a>जो कुछ भी आपके-रजिस्टर (डॉट-रजिस्टर) में डालें। वह रजिस्टर जो आपने अभी टाइप किया है, जब आप इंसर्ट मोड छोड़ते हैं (यहां तक ​​कि Ctrl-c का उपयोग करते समय (जो आपको कई कारणों से उपयोग नहीं करना चाहिए) के साथ भरा हुआ हो जाता है।
निकोलई एस

@Jonathan Cutrell आप नई पंक्ति की शुरुआत में कैसे जाते हैं।
Sayth

3

यदि आप MacOS टर्मिनल का उपयोग कर रहे हैं तो प्राथमिकताएं ...> सेटिंग> कीबोर्ड और अंतिम कुंजी को Ctrl-O $ में मैप करें (यह \ 017 $ के रूप में प्रदर्शित होता है) और फिर अंतिम कुंजी का अनुकरण करने के लिए fn + left का उपयोग करें। घर की चाबी के लिए भी ऐसा ही करें। एस्केप क्रम \ 033 [H भी घर के लिए काम करता है।


1
fn-Left और fn-right ने डिफ़ॉल्ट रूप से मैक टर्मिनल पर मेरे लिए काम किया
Jeff

1

कार्रवाई का आपका सबसे अच्छा तरीका कार्रवाई को एक अलग कुंजी में बदलना है (देखें कि फ़ाइल के लिए पहली पंक्ति में जाने के लिए कैसे करें? विचारों के लिए) ?

मुझे लगता है कि मैं कितनी बार इस "सुविधा" का उपयोग करता हूं और इसे काइस्ट्रोकेक के अनुरूप बनाता हूं



0

एक शॉर्टकट जिसने मेरे लिए काम किया है (दोनों मांसपेशी मेमोरी और इंटूइटनेस) मैप करने के लिए है __(जो एक डबल है_ ) "वर्तमान लाइन की शुरुआत में सम्मिलित करें"।

दलील:

  • _ पहले से ही लाइन के शुरू में चला जाता है
  • व्यर्थ में, किसी भी चीज़ को दोगुना करना "इस रेखा के लिए" करने का एक बहुत ही सामान्य तरीका है
  • दोहरा _ किसी भी गति के साथ संघर्ष नहीं करता है (आप पहले से ही लाइन की शुरुआत में हैं)
  • यदि आप लाइन की शुरुआत में गए थे और अब सम्मिलित करना चाहते हैं तो आपका हाथ पहले से ही सही जगह पर है।

vimscript:

"insert at start of current line by typing in __ (two underscores)
function DoubleUnderscore()
    if v:count == 0 && getcurpos()[2] == 1
        :silent call feedkeys('I', 'n')
    else
        :silent call feedkeys('^', v:count + 'n')
    endif
endfunction
nnoremap <silent> _ :call DoubleUnderscore()<CR>

यह इस जटिल है क्योंकि आसान विकल्प के बीच अंतर करने के लिए nnoremap __ _Iदबाने पर देरी करने का कारण बनता है और ।____



0

मैं इस कमांड का उपयोग इन्सर्ट मोड को छोड़कर लाइन के अंत तक जाने के लिए करता हूँ

inoremap jl <esc><S-a>

इसी तरह लाइन की शुरुआत करने के लिए जाना जाएगा:

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