सम्मिलित मोड में नेविगेशन


20

मैंने अंत में नेविगेशन के पक्ष में तीर कुंजियों को खोदने का फैसला किया hjkl। मैंने Vim hardmodeतीर कुंजियों को निष्क्रिय करने के लिए प्लगइन का उपयोग किया ।

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

क्या इसका कोई समाधान है ? (मौजूदा इन्सर्ट मोड कोई समाधान नहीं है)।


8
हाँ: तीर कुंजियों का उपयोग करें :-) यही वे वहाँ के लिए ;-)
मार्टिन Tournoij

अगर @ तीर कुंजी उपलब्ध हैं तो मैं hjkl के बजाय उनका इस्तेमाल करूंगा ....
stdcall

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

नीचे जाने के लिए आप अपने कीबोर्ड को <kbd> सुपर </ kbd> + <kbd> j </ kbd> जैसे शॉर्टकट के रूप में उपयोग कर सकते हैं। <kbd> सुपर </ kbd> कोई भी बटन हो सकता है, उदाहरण के लिए <kbd> कैप्स लॉक </ kbd> बहुत आम है
ivanjermakov

जवाबों:


26

आपके पास कई विकल्प हैं। एक विकल्प, और IMO सबसे पवित्र और सबसे आसान है तीर कुंजियों को अक्षम करना। मुझे समझ में आता है कि बहुत से कट्टर विमर क्यों बातें कहते हैं

आपको कभी भी तीर कुंजी का उपयोग कभी नहीं करना चाहिए! हर बार जब आप तीर कुंजी का उपयोग करते हैं, तो आप 3 मिनट का समय बर्बाद करते हैं, एक पिल्ला मर जाता है और किसी को एमएसीएस में बदल जाता है!

(जाहिर है मैं मजाक कर रहा हूं) हालांकि, तीर कुंजी का एक उद्देश्य है। वे नेविगेट करने के लिए बेहद उपयोगी हैं:

  • इन्सर्ट मोड में

  • कमांड लाइन में

आमतौर पर जब लोग आपको तीर कुंजियों का उपयोग नहीं करने के लिए कहते हैं, तो यह इसलिए है क्योंकि वे चाहते हैं कि आप नेविगेशन को अधिक सुविधाजनक तरीके से जारी रखें। यदि आप के साथ सहज हैं hjkl, और आप ज्यादातर सम्मिलित कुंजियों में तीर कुंजियों का उपयोग करते हैं, तो अपने आप को उन्हें उपयोग न करने के लिए मजबूर करने का कोई अच्छा कारण नहीं है।

विकल्प # 2 ctrl-hjklकर्सर कुंजी की तरह कार्य करने के लिए रीमैप करने के लिए है। यह अच्छा है क्योंकि आप होमरो पर रह सकते हैं, और यह उस मांसपेशी मेमोरी के साथ अच्छी तरह से फिट बैठता है जिसे आपने पहले से ही hjklसामान्य मोड में उपयोग करके सीखा है। वास्तव में, यह वही है जो मैं करता हूं । इस दृष्टिकोण के लिए प्रमुख नकारात्मक पक्ष यह है कि टर्मिनल विम में सेटअप करने के लिए दर्द हो सकता है क्योंकि <C-j>एक NULबाइट का उत्पादन होता है । मैं Gvim का उपयोग करके इसके चारों ओर मिलता हूं। मुझे पता नहीं है कि कंसोल विम के लिए एक आसान फिक्स है या नहीं।

विकल्प # 3 <C-o>छोटे सामान्य मोड आंदोलनों को बनाने के लिए उपयोग करना है। उदाहरण के लिए, यदि आप टाइप कर रहे हैं

Hello world!
     cursor^

और आपको लगता है कि आप कॉमा को भूल गए, करने के बजाय leftleftleftleftleftleft, आप बस <C-o>b<C-o>hया <C-o>2Foसामान्य मोड आंदोलनों के किसी अन्य संयोजन को पसंद कर सकते हैं।

बेशक, एक और विकल्प, और एक जो मुझे बहुत पसंद है वह है बस उपयोग करना Esc, सामान्य मोड में वापस कूदने से पहले कुछ छोटे आंदोलनों को करना। आपने उल्लेख किया कि आप ऐसा नहीं करेंगे, लेकिन कभी-कभी यह वास्तव में सबसे कुशल तरीका है।

संभवत: कुछ अन्य दृष्टिकोण भी हैं, लेकिन ये वही हैं जो मुझे पसंद हैं जिन्होंने मेरे लिए काम किया है।


2
दिलचस्प - मैं ध्यान देता हूं कि आप उपयोग करते हैं <c-o>gkऔर <c-o>gjइसके बजाय <Up>और <Down>। ऐसा क्यों है?
काइल स्ट्रैंड

4
@kylestrand gkऔर gjनेत्रहीन एक रेखा से ऊपर और नीचे जाते हैं, भले ही रेखा लिपटी हो।
DJMcMayhem

4
मुझे नहीं लगता कि यह अपने आप में सभी को जवाब देने के लिए पर्याप्त है, लेकिन मुझे तीर कुंजियों को सामान्य मोड में अक्षम करना पसंद है (जो मुझे HJKL सीखने के लिए मजबूर करता है), और अन्य सभी मोड्स ( noremap <Up> <NOP>...) में सक्षम । आप HJKL सीखने के लिए सामान्य मोड में पर्याप्त समय बिताते हैं, लेकिन जब आपको इसकी आवश्यकता होती है तो वे वहां होते हैं। या कम से कम, मुझे ऐसा लगता है कि उन्हें हमेशा या हमेशा के लिए छोड़ने के बीच एक आरामदायक मध्य मैदान है, और इसके लिए अन्य कुंजियों को भरने की आवश्यकता नहीं है (बहुत सारे लोग जैसे कि Ctrl-HJKL पैन के बीच जाने के लिए)।
इटाई फेरबर

Btw, BASH एट अल समर्थन vi प्रमुख बाइंडिंग। इन मैपिंग के साथ, आप <ESC> कर सकते हैं और cmd के इतिहास (ऊपर / नीचे) या वर्तमान कमांड (बाएं / दाएं) के माध्यम से जाने के लिए hjkl का उपयोग कर सकते हैं
Rolf

9

मैं hjklआंदोलन कुंजी को "सार्वभौमिक" आंदोलन कुंजी में बदलने के लिए नियंत्रण कुंजी का उपयोग करना पसंद करता हूं । यहाँ मेरे संबंधित सा है .vimrc:

" In insert or command mode, move normally by using Ctrl
inoremap <C-h> <Left>
inoremap <C-j> <Down>
inoremap <C-k> <Up>
inoremap <C-l> <Right>
cnoremap <C-h> <Left>
cnoremap <C-j> <Down>
cnoremap <C-k> <Up>
cnoremap <C-l> <Right>

inoremapजबकि बयान, मोड डालने के लिए लागू cnoremapलोगों आदेश मोड के लिए लागू होते हैं। (मैं इस मैपिंग का उपयोग इतने लंबे समय से कर रहा हूं कि मैं भूल गया हूं कि क्या इसके बिना कमांड-मोड इतिहास नेविगेट करने का कोई तरीका है।)

(संपादित करें: मैं देख रहा हूं कि अन्य उत्तर ने पहले ही इस संभावना का उल्लेख कर दिया है। फिर भी, यह वास्तविक मानचित्रण कमांड देखने में मददगार हो सकता है।)


3

मारो escतो उपयोग करें hjklऔर wWbBकिसी भी अन्य नेविगेशन्स को आप बनाना चाहते हैं। हार्ड मोड का पूरा बिंदु आपको अधिक जटिल विम गति के साथ नेविगेट करने के लिए सीखना है। छोटे संपादन करें फिर सामान्य मोड का उपयोग करके एक नए स्थान पर जाएं।

यदि आप यह नहीं जानना चाहते हैं कि हार्डमोड सक्षम के साथ तेजी से कैसे नेविगेट करें, तो एक ही विषय पर दूसरे प्रश्न से मेरे उत्तर की जांच करें ।


3

यदि आप एक या दो से अधिक पदों को स्थानांतरित करना चाहते हैं ...

... सबसे अच्छा विकल्प हिट करना है ESC, चारों ओर घूमना है, और फिर से मोड डालने के लिए वापस जाना है।

<C-h>लेफ्ट मूव करने के लिए मैपिंग बनाने जैसा कोई मतलब नहीं है और फिर इसे कई बार मारना शुरू कर दें ... एक विम यूजर के रूप में आप स्मार्ट मूव को प्राप्त करने के लिए एक ही कुंजी को कई बार हिट करने वाले नहीं हैं।

(यदि ESCकुंजी आपकी उंगलियों के करीब नहीं है, तो इसके लिए मैपिंग बनाना एक अच्छा विकल्प होगा।)

अगर आप इन्सर्ट मोड पर ONE या TWO पॉज़िशन को स्थानांतरित करना चाहते हैं ...

... एक अच्छा विकल्प अपनी <Leader>कुंजी का उपयोग करके कुछ आंदोलनों को परिभाषित करना होगा :

(मैं कुंजी के ,रूप में उपयोग करता हूं <Leader>क्योंकि यह मेरी उंगलियों के करीब और आरामदायक लगता है)

noremap! <Leader>h <left>   "move cursor left
noremap! <Leader>j <down>   "move cursor down
noremap! <Leader>k <up>     "move cursor up   
noremap! <Leader>l <right>  "move cursor right
noremap! <Leader>w <esc>wi  "move one word forward
noremap! <Leader>e <esc>ei  "move forward to the end of word
noremap! <Leader>b <esc>bi  "move one word backward

1

यदि आपको केवल पाठ या एक शब्द की थोड़ी मात्रा को संशोधित करने की आवश्यकता है, तो आप उपयोग कर सकते हैं <Ctrl-O>h/j/k/l

<Ctrl-O> उस आदेश के लिए आपको वापस सामान्य मोड में ले जाता है, और फिर आपको सम्मिलित मोड में वापस चला जाता है, इसलिए यह आपको कुछ महत्वपूर्ण कुंजी बचाता है, यदि आपको एक छोटे से आंदोलन के लिए सामान्य मोड में जाने की आवश्यकता है।

Ref: 1. http://vim.wikia.com/wiki/Use_Ctrl-O_instead_of_Esc_in_insert_mode_mappings

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