पाठ सम्मिलित करें मोड में


321

विम में इंसर्ट मोड के दौरान, क्या तीर कुंजियों का उपयोग करने के अलावा कुछ वर्णों को आगे और पीछे ले जाने वाले पाठ को आगे बढ़ाने का कोई तरीका है?

अगर मैं प्रेस h, j, kऔर lजबकि सम्मिलित मोड में, वास्तविक पात्रों के बजाय पाठ के माध्यम से ले जाने के लिए स्क्रीन पर मुद्रित कर रहे हैं।

जिस समय मैं इसे कर रहा हूं, वह Ctrl+ [( Esc) का सहारा ले रहा है और फिर पाठ का पता लगा रहा है; लेकिन जाहिर है कि यह उत्पादक नहीं है।


एक अलग नोक के रूप में: यदि आप एक नज़दीकी कुंजी संयोजन (यानी imap jk <Esc>) से बच जाते हैं तो यह भी मददगार होता है ताकि आपको कुंजी दबाने के लिए अपनी गति को तोड़ने और अपने कीबोर्ड तक पहुँचने की ज़रूरत न पड़े।
tsujin

3
मुझे यह पसंद है ( <ESC>) के kjबजाय मैप किया गया jk; मेरे साथी मित्र दिज्क्स्त्र को दोष देना है!
डॉ। बीको

7
मेरे पास है jkऔर kjइसलिए, मैं इसे दो उंगलियों के साथ एक बड़े बटन की तरह दबाता हूं और सामान्य रूप से वापस आने के क्रम पर कोई फर्क नहीं पड़ता।
एडू रुइज़

जवाबों:


647

आप विम का दुरुपयोग करने लगते हैं, लेकिन इसके बहुत परिचित नहीं होने के कारण यह संभव है।

सही तरीके से है प्रेस करने के लिए Esc, जाना है जहाँ आप एक छोटा सा सुधार करना चाहते हैं, इसे ठीक कर, वापस जाएँ और संपादन रखने के लिए। यह प्रभावी है क्योंकि विम के पास सामान्य चरित्र की तुलना में बहुत अधिक आंदोलनों के आगे / पीछे / ऊपर / नीचे है। आप उनमें से अधिक जानने के बाद, यह अधिक उत्पादक होगा।

यहाँ उपयोग के कुछ मामले हैं:

  • आपने गलती से "आकस्मिक रूप से" टाइप किया। कोई समस्या नहीं, अनुक्रम EscFfrdAगलती को सुधार देगा और आपको वापस वहीं लाएगा जहां आप संपादित कर रहे थे। Ffआंदोलन पहले का सामना करना पड़ा "f" चरित्र के लिए अपने कर्सर को पीछे की ओर ले जाने के लिए होगा। उस के साथ तुलना करें Ctrl+ DeldEnd, जो एक आकस्मिक संपादक में लगभग ऐसा ही करता है, लेकिन अधिक कीस्ट्रोक्स लेता है और आपको कीबोर्ड के अल्फ़ान्यूमेरिक क्षेत्र से अपना हाथ आगे बढ़ाता है।
  • आपने गलती से "आपने गलती से टाइप कर लिया" टाइप किया है, लेकिन इसे "आप जानबूझकर टाइप किया गया" सही करना चाहते हैं। फिर Esc2bcwउस शब्द को मिटा देगा जिसे आप ठीक करना चाहते हैं और आपको सम्मिलित करने के लिए मोड लाएंगे, ताकि आप उसे तुरंत री-टाइप कर सकें। संपादन पर वापस जाने के लिए, Aइसके बजाय बस दबाएँ End, ताकि आपको Endकुंजी तक पहुँचने के लिए अपना हाथ हिलाना न पड़े ।
  • आपने गलती से "चूहे" के बजाय "माउस" टाइप कर दिया। कोई समस्या नहीं - अच्छा पुराना Ctrl+ wइन्सर्ट मोड को छोड़े बिना पिछले शब्द को हटा देगा। और यह एक छोटे से शब्द को मिटाने की तुलना में बहुत तेजी से घटित होता है। मुझे इसकी आदत है कि मैंने यह संदेश टाइप करते समय ब्राउज़र पेज बंद कर दिया था ...!
  • पुनरावृत्ति की गिनती काफी हद तक होती है। एक आंदोलन बनाने से पहले, आप एक संख्या टाइप कर सकते हैं; और आंदोलन को कई बार दोहराया जाएगा। उदाहरण के लिए, 15hआपके कर्सर को 15 वर्ण वापस लाएगा और 4j आपके कर्सर को 4 पंक्तियों को नीचे ले जाएगा। उनका उपयोग करना शुरू करें और आपको जल्द ही इसकी आदत हो जाएगी। यदि आपने अपने कर्सर से दस वर्णों में एक गलती की है, तो आपको पता चलेगा कि कुंजी 10 बार दबाने पर कर्सर को ले जाने के लिए चलने वाले दृष्टिकोण की तुलना में बहुत धीमा है। इसलिए आप इसके बजाय जल्दी से कुंजी टाइप कर सकते हैं 12h(अनुमान के अनुसार मोटे तौर पर कि आपके कर्सर को स्थानांतरित करने के लिए आपको कितने वर्ण वापस चाहिए), और llत्रुटि को जल्दी ठीक करने के लिए तुरंत दो बार आगे बढ़ें ।

लेकिन, अगर आप अभी भी इन्सर्ट मोड को छोड़े बिना छोटे टेक्स्ट ट्रैवर्स करना चाहते हैं , तो rson की सलाह और उपयोग Ctrl+ का पालन करें O। पहला उदाहरण जो मैंने ऊपर उल्लेख किया है, को लेते हुए Ctrl+ OFfआपको पिछले "f" वर्ण में ले जाएगा और आपको इन्सर्ट मोड में छोड़ देगा।


33
+1 उत्कृष्ट उत्तर और आपके द्वारा दिए गए सभी उदाहरणों के लिए धन्यवाद!
एंड्रियास ग्रेच

78
यह भी ध्यान देने योग्य है कि आप Ctrl+oएकल मोड को सामान्य मोड में जारी करने के लिए उपयोग कर सकते हैं । यह कई बार आपको वह स्थान दिला सकता है, जहाँ आप होना चाहते हैं, खासकर जब टी / टी और एफ / एफ मूवमेंट कमांड के साथ मिलाया जाता है।
रैंडी मॉरिस

6
"आप विम का दुरुपयोग करने लगते हैं, लेकिन संभावना है कि आप इससे बहुत परिचित नहीं हैं।" थोड़ा कृपालु है। नहीं?
डेविड रिवर्स

17
यह ठीक से विम का उपयोग करने के लिए एक महान अंतर्दृष्टि है। हालांकि, मैं "Esc" को एक दर्द होने के लिए दबाता हूं, और इसलिए मुझे लगता है कि यह इंगित करने योग्य है कि आप उस फ़ंक्शन के लिए अधिक सुलभ कुंजी मैप कर सकते हैं, उदाहरण के लिए "imap jj <esc>"।
सममिति

25
एक टाइपो को ठीक करने के लिए आपको इन्सर्ट मोड नहीं छोड़ना चाहिए । विम शक्तिशाली है क्योंकि आप परमाणु, दोहराए जाने वाले कार्यों का निर्माण करते हैं। एक टाइपो सम्मिलित करना, और इसे ठीक करना दो अलग-अलग क्रियाएं बनाता है। एक टाइपो को ठीक करने का सही तरीका यह है कि इसे इन्सर्ट मोड को छोड़े बिना किया जाए। अगर इसका मतलब तीर कुंजियों का उपयोग करके वहां नेविगेट करना है जो ठीक है। विम में इन्सर्ट मोड में नेविगेट करने के लिए कुछ कीबाइंडिंग हैं। जाँच करें :h ins-special-keysctrl-h: बैकस्पेस ctrl-w,: वर्ड ctrl-uडिलीट करें alt-b: लाइन की शुरुआत में डिलीट करें : एक शब्द वापस जाएं।
everett1992

151

इन्सर्ट मोड में रहते हुए उपयोग करेंCtrlO करने के लिए जाने के लिए सामान्य मोड सिर्फ एक आदेश के लिए:

CTRL-O h  move cursor left 
CTRL-O l  move cursor right
CTRL-O j  move cursor down
CTRL-O k  move cursor up

जो संभवत: सबसे सरल तरीका है जो आप चाहते हैं और याद रखना आसान है।

डालने मोड में अन्य बहुत उपयोगी नियंत्रण कुंजी:

CTRL-W    delete word to the left of cursor
CTRL-O D  delete everything to the right of cursor
CTRL-U    delete everything to the left of cursor
CTRL-H    backspace/delete
CTRL-J    insert newline (easier than reaching for the return key)
CTRL-T    indent current line
CTRL-D    un-indent current line

ये कई बेकार स्विच को सामान्य मोड में वापस कर देंगे।


13
धन्यवाद। इसे सही उत्तर माना जाना चाहिए। यह वास्तव में मददगार है।
20

1
मेरे मैक पर, यह लो-केस ओ अपर केस नहीं है। क्या यह "मानक विम" ​​से अलग है? मुझे बहुत सारी जगहें दिखाई देती हैं, जहाँ वे ऊपरी मामला कहते दिखाई देते हैं (जब तक कि यह केवल फूहड़ लेखन न हो)। क्या आप पुष्टि कर सकते हैं?
फ्लोरिस

ठीक है बहुत उपयोगी है। हालांकि, एक दिलचस्प संयोजन मेरे पास खोजने के लिए एक कठिन समय है और यह हटाने की रेखा है। गलती से एक लाइन डालने के मामले में बहुत कम करने वाली बात।
पेट्रीक

5
@ फ़्लोरिस विम ctrl कॉम्बिनेशन के लिए अपर और लोअर केस लेटर्स में अंतर नहीं करता है। इसलिए ctrl + shift + कुछ को मैप करना संभव नहीं है।
महमूद अल-कुद्सी

92

मोड डालें

आंदोलन

hjkl

इस बात के बावजूद कि पावेल शेव्ड ने क्या कहा - कि शायद Escडालने के मोड में एपिंग मोड के लिए इस्तेमाल होने की अधिक संभावना है - यहाँ सम्मिलित मोड में त्वरित नेविगेशन के लिए मैपिंग का एक उदाहरण दिया गया है:

" provide hjkl movements in Insert mode via the <Alt> modifier key
inoremap <A-h> <C-o>h
inoremap <A-j> <C-o>j
inoremap <A-k> <C-o>k
inoremap <A-l> <C-o>l

यह Alt+ hइन्सर्ट मोड में + एक अक्षर को बायें, Alt+ jनीचे और इतने पर hjklसामान्य मोड में सम्‍मिलित करेगा ।

आपको अपने vimrc फ़ाइल में उस कोड को कॉपी करना होगा जो आपके द्वारा vim शुरू करने पर हर बार लोड किया जाता है (आप इसे :new $myvimrcसामान्य मोड में शुरू करके टाइप कर सकते हैं )।


किसी भी सामान्य मोड आंदोलनों

चूंकि Altसंशोधक कुंजी को डिफ़ॉल्ट रूप से (कुछ महत्वपूर्ण) मैप नहीं किया जाता है, आप सामान्य मोड से इंसर्ट मोड में उसी फैशन पुल अन्य (या सभी) कार्यक्षमता को खींच सकते हैं। जैसे:
वर्तमान शब्द की शुरुआत में Alt+ के साथ आगे बढ़ना b:

inoremap <A-b> <C-o>b
inoremap <A-w> <C-o>w


( Altइन्सर्ट मोड में अन्य उपयोग )

यह ध्यान देने योग्य है कि Altसामान्य मोड व्यवहार को दोहराने की तुलना में कुंजी के लिए बेहतर उपयोग हो सकते हैं: उदाहरण के लिए यहां समीपवर्ती रेखा से कॉपी करने के लिए वर्तमान कॉलम से लाइन के अंत तक मैपिंग हैं:

" Insert the rest of the line below the cursor.
" Mnemonic: Elevate characters from below line
inoremap <A-e> 
    \<Esc>
    \jl
        \y$
    \hk
        \p
        \a
" Insert the rest of the line above the cursor.
" Mnemonic:  Y depicts a funnel, through which the above line's characters pour onto the current line.
inoremap <A-y> 
    \<Esc>
    \kl
        \y$
    \hj
        \p
        \a

(मैंने स्पष्टता को बढ़ाने के लिए \ लाइन निरंतरता और इंडेंटेशन का उपयोग किया - आदेशों की व्याख्या की जाती है जैसे कि एक एकल लाइन पर लिखा गया है)।


संपादन के लिए निर्मित हॉटकीज़

CTRL-H   delete the character  in front of the cursor (same as <Backspace>)
CTRL-W   delete the word       in front of the cursor
CTRL-U   delete all characters in front of the cursor (influenced by the 'backspace' option)

(इंसर्ट मोड में मूवमेंट के लिए कोई उल्लेखनीय अंतर्निहित हॉटकी नहीं हैं।)

संदर्भ: :help insert-index


कमांड-लाइन मोड

मैपिंग का यह सेट कमांड लाइन में ऊपरी Alt+ hjkl आंदोलनों को उपलब्ध कराता है:

" provide hjkl movements in Command-line mode via the <Alt> modifier key
cnoremap <A-h> <Left>
cnoremap <A-j> <Down>
cnoremap <A-k> <Up>
cnoremap <A-l> <Right>

वैकल्पिक रूप से, ये मैपिंग एक ही बार में मोड और कमांड-लाइन मोड में दोनों को जोड़ते हैं:

" provide hjkl movements in Insert mode and Command-line mode via the <Alt> modifier key
noremap! <A-h> <Left>
noremap! <A-j> <Down>
noremap! <A-k> <Up>
noremap! <A-l> <Right>


कमांड लाइन मोड में सामान्य मोड कमांड खींचने के लिए मैपिंग कमांड इन्सर्ट मोड मैपिंग कमांड से थोड़ा अलग दिखते हैं (क्योंकि कमांड लाइन मोड में इन्सर्ट मोड Ctrl+ की कमी है O):

" Normal mode command(s) go… --v <-- here
cnoremap <expr> <A-h> &cedit. 'h' .'<C-c>'
cnoremap <expr> <A-j> &cedit. 'j' .'<C-c>'
cnoremap <expr> <A-k> &cedit. 'k' .'<C-c>'
cnoremap <expr> <A-l> &cedit. 'l' .'<C-c>'

cnoremap <expr> <A-b> &cedit. 'b' .'<C-c>'
cnoremap <expr> <A-w> &cedit. 'w' .'<C-c>'


आंदोलन और संपादन के लिए निर्मित हॉटकीज़

CTRL-B       cursor to beginning of command-line
CTRL-E       cursor to end       of command-line

CTRL-F       opens the command-line window (unless a different key is specified in 'cedit')

CTRL-H       delete the character  in front of the cursor (same as <Backspace>)
CTRL-W       delete the word       in front of the cursor
CTRL-U       delete all characters in front of the cursor

CTRL-P       recall previous command-line from history (that matches pattern in front of the cursor)
CTRL-N       recall next     command-line from history (that matches pattern in front of the cursor)
<Up>         recall previous command-line from history (that matches pattern in front of the cursor)
<Down>       recall next     command-line from history (that matches pattern in front of the cursor)
<S-Up>       recall previous command-line from history
<S-Down>     recall next     command-line from history
<PageUp>     recall previous command-line from history
<PageDown>   recall next     command-line from history

<S-Left>     cursor one word left
<C-Left>     cursor one word left
<S-Right>    cursor one word right
<C-Right>    cursor one word right

<LeftMouse>  cursor at mouse click

संदर्भ: :help ex-edit-index


@YugalJindle: धन्यवाद! :) मैंने अब कमांड-लाइन मोड को ट्विक करने के बारे में जानकारी जोड़ दी है। (इन्सर्ट इन्सर्ट मोड से थोड़ा अलग है।)
हारून थोमा

@Zen: "विंकी" से आपका क्या अभिप्राय है? मैंने अपने उत्तर में Windows कुंजी का संदर्भ नहीं दिया है। क्या आपको Altचाबी से मतलब है ?
हारून थोमा

शिफ्ट - एक पूरे शब्द को स्थानांतरित करने के लिए बाएं / दाएं !! मुझे कैसे पता नहीं था। धन्यवाद।
फ्लोरिस

वास्तव में टर्मिनल मोड में ऑल्ट स्वचालित रूप से आपके आदेशों से पहले esc भेजता है ........
Fuseteam

26

यदि आप एक विम शुद्धतावादी हैं, तो इस उत्तर को पढ़ना छोड़ दें। OTOH, यदि आप विम के लिए नए हैं और कुछ उपयोगी युक्तियों की तलाश कर रहे हैं जो आपको विम ट्यूटोरियल और ब्लॉग के कई सौ में मिलेंगे, तो पढ़ें ... :-)

कुछ अन-ऑर्थोडॉक्स (विम) तरीके

यह 2014 है, और किसी ऐसे व्यक्ति के रूप में जो हाल ही में वापस आया है, vimमैं कुछ संभावित संभावित दृष्टिकोण, दृष्टिकोण और सुझावों की पेशकश कर सकता हूं।

शब्दों को पार करने के लिए शिफ्ट + लेफ्ट या शिफ्ट + राइट का उपयोग करें

जबकि पुनरावृत्ति विम में एक शक्तिशाली अवधारणा है, मुझे (व्यक्तिगत रूप से) यह अजीब लगता है कि इसका उपयोग या तो मुझे (रेखाओं, वर्णों, शब्दों आदि) को गिनने के लिए मजबूर करता है या अनुमान लगाता है। मेरा दिमाग आमतौर पर ऐसे काम करता है जैसे "मुझे वहां कर्सर चाहिए।" न कि "मुझे कर्सर चाहिए _5_words_to_the_left_"। जल्दी से कर्सर को स्थानांतरित करने में सक्षम होने के लिए, और नेत्रहीन निरीक्षण करें जहां सम्मिलन बिंदु इस तरह से मुझे अपना दिमाग रखने की अनुमति देता है कि मैं यह गिनने के बजाय कि मैं कितने संपादन करने की आवश्यकता है जहां मुझे संपादित करने की आवश्यकता है।

माउस मोड चालू करें, और माउस व्हील और क्लिक का उपयोग करें

... पाठ के बड़े निकायों को नेविगेट करने के लिए।

अधिकांश (सभी) आधुनिक कंप्यूटर में एक टचपैड होता है जो कीबोर्ड के साथ निकटता से एकीकृत होता है (जैसे मैकबुक)। औद्योगिक डिजाइनरों ने इन डिज़ाइनों का अनुकूलन करते हुए कई आदमी वर्ष बिताए हैं ताकि कीबोर्ड से हाथ को दूर रखने की पुरानी समस्या अब एक वास्तविक मुद्दा नहीं है। ठीक है, यह है अगर आप एक माउस के लिए उपयोग किए जाते हैं और स्विच करना पसंद नहीं करते हैं, लेकिन किसी के लिए भी नई (जैसे कि जो इस पोस्ट को खोज के माध्यम से पा सकते हैं) के लिए, यह बहुत अधिक नहीं होना चाहिए।

एक बोनस के रूप में, क्लिक + ड्रैग आपको विजुअल मोड में डालता है

माउस सक्षम होने के साथ, क्लिक करने और खींचने पर दृश्य मोड में स्विच करने और यांकिंग के लिए एक क्षेत्र को चिह्नित करने का प्रभाव पड़ता है।

और स्क्रॉल व्हील का उपयोग करें

माउस (पहिया) का उपयोग करने के लिए चारों ओर स्क्रॉल करें, और कर्सर को काम करने के लिए क्लिक करें (डुह) बस काम करता है। देखHttp://usevim.com/2012/05/16/mouse/इस पर अधिक जानकारी के लिए ।

इसलिए...

ये वे हैं जो मैं अधिक आधुनिक (माउस, स्क्रॉल व्हील, आदि का उपयोग करके) कॉल करूंगा, विम में नेविगेट करने के तरीके, इनपुट की आपकी प्राथमिकता के आधार पर समान रूप से प्रभावी।

HTH


6
@ माइल्सटाउट हां, मैंने एक डिस्क्लेमर दिया था। लेकिन सभी गंभीरता से, मुझे लगता है कि विम उपयोगकर्ताओं का एक अच्छा अनुपात है जो दिमाग मेरा ही काम करते हैं। यह है ... मेरा मस्तिष्क आमतौर पर "मैं वहां कर्सर चाहता हूं" की तरह काम करता है और न कि "मुझे कर्सर 5_words_to_the_left " चाहिए। और विम का पारंपरिक तरीका उन लोगों के लिए अच्छा काम नहीं करता है। मुझे विम से प्यार है क्योंकि ए) यह हर जगह उपलब्ध है और बी) में शक्तिशाली विशेषताएं हैं। लेकिन मुझे लगता है कि यह सभी डिफ़ॉल्ट तंत्र के अनुरूप होने की आवश्यकता नहीं है।
श्याम हबरकड़ा १४'१४ को २३:०४

4
@ मीलोंरूट इस तरह की बातों के इर्द-गिर्द बहुत सारा धर्म है, इसलिए मैं इस पर आपसे बहस नहीं करूंगा। पुनरावृत्ति गिनती विधि मेरी मदद नहीं करती है, और स्वीकृत जवाब भी इसे कुछ भारी रूप से अप्रयुक्त के रूप में कहता है। मैं केवल अनुमान लगा सकता हूं कि ऐसा क्यों है। आसपास के स्थानों पर नेविगेट करने के लिए w, b आदि का उपयोग करना सभी शानदार हैं, लेकिन आगे जाने के लिए, माउस व्हील मेरे लिए बहुत बेहतर काम करता है। चीयर्स।
श्याम हबरकड़ा

4
+1। मैं इसे वोट नहीं समझता। एक डिस्क्लेमर है। यदि आपको यह पसंद है तो ले लो और यदि आप इसे नहीं छोड़ते हैं।
fangmobile.com

यह एक बहुत ही उपयोगी उत्तर है
स्लाव

1
जैसा कि कोई व्यक्ति जो हाल ही में VIM में चला गया है, मुझे इस उत्तर का आधार बिल्कुल स्पॉट-ऑन लगता है। तुरंत किसी दिए गए स्थान में कर्सर को रखने के लिए आवश्यक पुनरावृत्ति की संख्या बताने की क्षमता या ऐसा कुछ नहीं हो सकता है जो इसके साथ आता है अनुभव। अभी, @ShyamHabarakada के रूप में, मेरा दिमाग सिर्फ उसी तरह काम नहीं करता है। चाहे यह कितना भी अपरंपरागत क्यों न हो, मैं व्यक्तिगत रूप से fn + hjkl को बहुत छोटी हरकतों के लिए तीर कुंजियों में फिर से मैप कर सकता हूं। बड़े आंदोलनों के लिए, मैं आमतौर पर कई पुनरावृत्तियों का अनुमान लगाता हूं और फिर उन लोगों के साथ बारीक धुन करता हूं। मेरे लिए, यह उतना ही जल्दी है जितना मुझे मिल सकता है।
जैकोसाज़

14

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

विम सबसे शक्तिशाली है जब आप परमाणु, दोहराने योग्य कार्यों या खोजने के लिए इसके उपकरणों का उपयोग करते हैं।

इंसर्ट मोड में रहते हुए नेविगेट करना ठीक है अगर आप एक ही इंसर्ट सत्र में की गई गलती को ठीक कर रहे हैं आपको अपने द्वारा संशोधित पाठ की सीमा के बाहर नेविगेट नहीं करना चाहिए।

यदि आप पाठ दर्ज करते समय गलती करते हैं और इसे ठीक करने के लिए इन्सर्ट मोड से बाहर निकलें तो आप इच्छित कार्रवाई .को नहीं दोहरा पाएंगे, सुधार को दोहराएंगे।

विम कई इन्सर्ट मोड नेविगेशन कीज़ को सपोर्ट करता है। जाहिर है कि तीर कुंजी, होम और एंड हैं, लेकिन कई अन्य शॉर्टकट भी हैं। देख लो :h ins-special-keys


4

जीवीएम में, आप माउस का उपयोग कर सकते हैं। लेकिन ईमानदारी से, तीर कुंजी का उपयोग करने में क्या गलत है? एक कारण है कि वे एक कीबोर्ड पर क्यों हैं।


9
लेकिन उस कारण को उपयोगकर्ताओं को पूरा नहीं किया जाता है। विम की केंद्रीय शक्तियों में से एक यह है कि आप बिना समय खर्च किए सभी तरह के काम कीबोर्ड होम रो से अपने हाथों से कर सकते हैं। विशेष रूप से, hjkl आंदोलनों।
आरोन थोमा

1
मैं @ammoQ से सहमत हूं। तीर कुंजी का उपयोग करने के साथ कुछ भी गलत नहीं है। यदि तीर कुंजी का उपयोग करने से आपको अधिक उत्पादकता मिलती है, तो इसके साथ जाएं।
यूनुवो सांग

वाहवाही: मैं vi का उपयोग करते समय तीर कुंजियों की तुलना में hjkl का अधिक बार उपयोग करता हूं, लेकिन मोड के बीच स्विच करना मेरे लिए एक अवचेतन क्रिया बन गया है।
एरच किट्ज़म्यूलर

4

इन्सर्ट मोड में थोड़ा बेहतर नेविगेशन करने के लिए, कुछ कीज़ को मैप क्यों नहीं करना चाहिए?

imap <C-b> <Left>
imap <C-f> <Right>
imap <C-e> <End>
imap <C-a> <Home>
" <C-a> is used to repeat last entered text. Override it, if its not needed

यदि आप अपने टर्मिनल में मेटा कुंजी बनाने के आसपास काम कर सकते हैं, तो आप एमएसीएस मोड को और भी बेहतर बना सकते हैं। सामान्य मोड में नेविगेशन बेहतर है, लेकिन कम चाल के लिए यह सम्मिलित मोड में रहने में मदद करता है।

लंबी छलांग के लिए, मैं निम्नलिखित डिफ़ॉल्ट अनुवाद पसंद करता हूं:

<Meta-b>    maps to     <Esc><C-left>

यह सामान्य-मोड में बदल जाता है और एक शब्द वापस चला जाता है


2

मेरा मानना ​​है कि Homeऔर End(और PageUp/ PageDn) भी इन्सर्ट मोड में रहते हुए सामान्य रूप से काम करते हैं, लेकिन उस तरफ से, मुझे विश्वास नहीं होता कि टेक्स्ट ट्रैवर्सल के लिए कोई अन्य मानक कुंजी परिभाषित हैं।


लेकिन संभवतः केवल अक्षर कुंजियों का उपयोग करके पाठ को ट्रेस करने का कोई तरीका नहीं है?
एंड्रियास ग्रेच

5
निश्चित रूप से वहाँ है, अगर आप कुछ पत्र टाइप करने में सक्षम नहीं होना चाहते हैं ...;)
शौक

@hobbs ctrl + hjkl के बारे में कैसे? यह समझ में आना चाहिए
user4052054

1

क्षमा करें, लेकिन इस तरह काम नहीं करते हैं।

आपको "सामान्य" मोड पर स्विच करना चाहिए, नेविगेट करना होगा और फिर वापस सम्मिलित करना होगा।


1

आप मैपिंग मोड में काम करने वाले मैपिंग बना सकते हैं। ऐसा करने का तरीका inoremap है। कमांड की शुरुआत में 'i' पर ध्यान दें (नॉरमैप मुख्य मानचित्र टकराव से बचने के लिए उपयोगी है)। कोरोलरी 'सामान्य' मोड के लिए 'एन' है। आप यह सोच सकते हैं कि क्या सोचता है कि 'सामान्य' है;)

फिर भी, आप वास्तव में 'सामान्य' मोड का उपयोग करके पाठ में नेविगेट करना चाहते हैं। विम इस तरह की चीज़ों में सुपर है और यह सभी शक्ति सामान्य मोड से उपलब्ध है। विम पहले से ही मोड डालने के लिए सामान्य मोड से प्राप्त करने के लिए आसान तरीके प्रदान करता है (जैसे, i, I, a, A, o, O)। चाल को सामान्य मोड में लाने के लिए आसान बनाना है। ऐसा करने का तरीका यह है कि भागने के लिए अधिक दृढ़ कुंजी को हटा दिया जाए। लेकिन आपको अपनी नियमित टाइपिंग में कोई विरोध नहीं करना चाहिए। मैं उपयोग करता हूं:

inoremap jj <Esc>

चूंकि jj (यह 2 j का टाइप एक के बाद एक त्वरित रूप से होता है) मेरी शब्दावली में प्रकट नहीं होता है। अन्य का रीमैप वहीं होगा जहां यह आरामदायक होगा।

मेरे द्वारा किए गए अन्य आवश्यक परिवर्तन CAPSLOCK और नियंत्रण कुंजियों को अपने कीबोर्ड पर स्विच करना है (होस्ट कंप्यूटर के कीबोर्ड कॉन्फ़िगरेशन का उपयोग करके) क्योंकि मैं लगभग CAPSLOCK का उपयोग कभी नहीं करता हूं और इसमें वह बड़ा, सुंदर बटन है जहां मैं चाहता हूं। (यह Emacs उपयोगकर्ताओं के लिए आम है। नकारात्मक पक्ष यह है कि जब आप अपने आप को एक 'अनफिक्स' कीबोर्ड पर पाते हैं!

एक बार जब आप CAPSLOCK को रीमैप कर लेते हैं, तो आप आराम से निम्नलिखित इंसर्ट मोड का उपयोग कर सकते हैं:

यह ध्यान में रखते हुए कि कुछ कुंजियों को पहले ही इन्सर्ट मोड (बैकवर्ड-किल-वर्ड-सीडब्ल्यू (कंट्रोल-व)) में डिफ़ॉल्ट रूप से मैप किया गया है, आपके पास पहले से ही आपके इच्छित बाइंडिंग हो सकते हैं। उन्होंने कहा, मुझे अपने .vimrc में Ch पसंद है। :

inoremap <C-h> <C-w>

लेकिन, आप सामान्य मोड में एक ही मांसपेशी स्मृति ऐंठन चाहते हैं, इसलिए मैं भी Ch के रूप में मैप करता हूं:

nnoremap <C-h> db

(d) elete (b) ackwards एक ही कुंजी कॉर्ड के साथ एक ही चीज को पूरा करता है। इस तरह का त्वरित संपादन वह है जो मुझे टाइपो के लिए अभ्यास में उपयोगी लगता है। लेकिन पाठ में घूमने और पिछले शब्द को मारने से ज्यादा कुछ भी करने के लिए सामान्य मोड पर रहें। एक बार जब आप बदलते मोड (कोर्स के रीमैप का उपयोग करना) की आदत में शामिल हो जाते हैं, तो यह सम्मिलित मोड को रीमैप करने की तुलना में बहुत अधिक कुशल होगा।


भागने के लिए अच्छा रीमैप - मुझे लगता है कि यह अनूदित अरबी को छोड़कर किसी भी चीज़ के लिए काम करेगा!
jjt

0

आप imapकर्सर कुंजी में से किसी एक में इन्सर्ट मोड को मैप करने के लिए उपयोग कर सकते हैं । इस तरह:

imap h <Left>

अब h सामान्य तरीके से काम करता है, कर्सर को घुमाते हुए। (इस तरह से एम मानचित्रण जाहिर है एक बुरा विकल्प है)

यह कहते हुए कि मुझे नहीं लगता कि VIM का उपयोग करके पाठ में घूमने का मानक तरीका "उत्पादक नहीं है" है। सामान्य मोड में पाठ को ट्रैवर्स करने के बहुत शक्तिशाली तरीके हैं (जैसे w और b का उपयोग करना, या / और, या f और F, आदि)।


1
मैंने यह नहीं कहा कि विम में पाठ के माध्यम से आगे बढ़ने का मानक तरीका उत्पादक नहीं है; मैंने जो कहा वह यह था कि कुछ अक्षरों में वापस जाने के लिए इन्सर्ट मोड से बाहर जाना और फिर फिर से सम्मिलित करने के लिए वापस आना "थोड़ा कष्टप्रद" था; लेकिन फिर से, शायद यह है क्योंकि मैं अभी तक नहीं मिला है करने के लिए इस्तेमाल किया :) :)
Andreas Grech

यह वह उपाय है जिसकी मुझे तलाश थी। मैं imap <Ch> <Left> का उपयोग करता हूं (मुझे पता है कि यह एक char को हटाता है, लेकिन मेरे पास बैकस्पेस है), जो मुझे चाहिए, धन्यवाद।
user4052054

0

कुछ अक्सर इस्तेमाल किए जाने वाले आंदोलनों और कार्यों के लिए, मैंने निम्नलिखित मैपिंग को परिभाषित किया है। यह CTRL + O संयोजन की तुलना में कीस्ट्रोके बचाता है और चूंकि मुझे अक्सर उनकी आवश्यकता होती है, इसलिए वे लंबे समय में भुगतान करते हैं।

inoremap <A-$> <C-o>$
inoremap <A-^> <C-o>^
inoremap <A-h> <Left>
inoremap <A-l> <Right>
inoremap <A-O> <C-O>O
inoremap <A-o> <C-o>o
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.