विम में तीर कुंजी की सिफारिश क्यों नहीं की गई है


125

"विम में तीर कुंजी का उपयोग कभी न करें!"

मैंने इसे एक यादृच्छिक स्पीकर से सुना, लेकिन उसके पास यह पूछने का मौका क्यों नहीं था। इसके अलावा, यदि आप तीर कुंजी का उपयोग नहीं करते हैं, तो आप कर्सर को इन्सर्ट मोड में कैसे ले जा सकते हैं ?


6
इस सवाल के ऐतिहासिक जवाब दिलचस्प हैं। धार्मिक प्रवृत्तियाँ तो कम हैं।
इसहाक राबिनोविच

5
अच्छा प्रश्न। यह मुझे हमेशा vi [m] के बारे में बताता है, Dvorak कीबोर्ड उपयोगकर्ता के रूप में यह वास्तव में बेकार है!
विम

32
मुझे याद है कि जब पहली बार vi का उपयोग किया गया था, तो कई साल पहले एक वरिष्ठ सहयोगी ने मुझे सलाह दी थी "सुनिश्चित करें कि आप h, j, k, और l कुंजियों का उपयोग करना सीखते हैं क्योंकि एक दिन आप एक ग्राहक साइट पर मशीन पर समाप्त होंगे जहाँ तीर है कुंजियाँ काम नहीं करती हैं, और यदि आप vi भी काम नहीं कर सकते हैं, तो आप एक पूर्ण d *** हेड की तरह दिखेंगे। "
एर्गवॉन

1
इन्सर्ट मोड में आप अभी भी एक सामान्य मोड कमांड Ctrl-O का उपयोग करके कर्सर को ले जा सकते हैं, और यह इन्सर्ट मोड में वापस चला जाएगा। CTRL-G CTRL-J और CTRL-G CTRL-K की जांच करें, जो आपके द्वारा सम्मिलित किए गए कॉलम में कर्सर को अगली और पिछली पंक्ति में ले जाएगा।
बेनोइट

1
मैंने वर्षों में खराब vi [m] आदतों का भार विकसित किया है। मुझे लगता है कि मुझे इसे बहुत धीमी गति से उपयोग करने की आवश्यकता है, जिससे मुझे बेहतर आदतों का उपयोग करने के लिए मजबूर किया जा सके।
एडन

जवाबों:


172

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

जब लोग पहली बार विम का उपयोग करना शुरू करते हैं, तो वे सम्मिलित मोड में रहना पसंद करते हैं क्योंकि यह पारंपरिक पाठ संपादन की तरह है। हालांकि, प्रभावी होने के लिए, आपको केवल सम्मिलित मोड में होना चाहिए जब आप वास्तव में पाठ दर्ज कर रहे हों। यदि आप कर्सर को चारों ओर ले जाना चाहते हैं, तो आपको सामान्य मोड में होना चाहिए। आपको डिफ़ॉल्ट रूप से सामान्य मोड में बहुत अधिक होना चाहिए।

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

वहाँ रवैया है कि अगर आप तीर कुंजी का उपयोग कर रहे हैं, तो आप "गलत" का उपयोग कर रहे हैं। सच तो यह है कि विम वास्तव में एक बहुत ही कठिन सीखने की अवस्था है, इसलिए जब आप सीख रहे होते हैं तो जो कुछ भी आपको समझ में आता है। जब मैंने पहली बार vim का उपयोग करना शुरू किया, तो मैंने "गलत" तरीके से सब कुछ किया और जब मुझे vim के आदेशों का अधिक ज्ञान हो गया, तो मुझे आदतों को तोड़ने में कोई समस्या नहीं हुई।

एक उदाहरण के रूप में, जब मैंने पहली बार शुरुआत की, तो मैंने कहा कि मैं उद्धरण में पाठ बदलना चाहता हूं:

String mystring = "I want to change this";

मैं इन्सर्ट मोड में जाऊंगा, ऐरो कीज़ का उपयोग करके स्ट्रिंग के अंत तक जाऊँगा, बैकस्पेस को तब तक दबाऊँगा जब तक स्ट्रिंग नहीं चली जाती, और नया टेक्स्ट दर्ज करें।

एक बेहतर तरीका यह है कि आप अपने कर्सर को स्ट्रिंग (सामान्य मोड) में कहीं भी रख दें, फिर दबाएँ ci"। यह इच्छा change in "। यह उद्धरणों के बीच सब कुछ हटा देगा और आपको सम्मिलित मोड में डाल देगा ताकि मैं नए पाठ में प्रवेश कर सकूं।


4
@ ott-- ci<और ci)साथ ही साथ काम करते हैं, और आपको अपने हाथ को कीबोर्ड से माउस तक ले जाने की आवश्यकता नहीं है। यदि आप कोष्ठक की शुरुआत के लिए नेविगेट करना चाहते हैं और फिर सामग्री f(ci(कार्यों को बदलते हैं ।
मैथ्यू फिनेले

6
"अपने कर्सर को स्ट्रिंग में कहीं भी रखें" - और फिर से, जबकि इंसर्ट मोड में आप वहां पहुंचने के लिए तीरों का उपयोग करेंगे, सामान्य मोड में आप /want'वांट' शब्द पर उतरने के लिए एंट्री कर सकते हैं , फिर कर सकते हैं ci"
नाथन लॉन्ग

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

18
@MatthewScouten कोई भी यह दावा नहीं कर रहा है कि विम माउस से अधिक सरल है। अभ्यास के एक बिट के साथ हालांकि, यह बहुत, बहुत तेज है। माउस का उपयोग करना अपनी बात मनवाने के लिए इशारा करने और गुनगुनाने जैसा है। विम आपको पूरे वाक्यों में बोलने देता है।
डीन

4
ब्रेकिंग आदतों का एक अच्छा जवाब है - लेकिन किसी को सामान्य गतिविधि से जबरन रोकना फासीवादी है। इससे भी बदतर, प्रयोज्य के ( hjkl): मानचित्रण upऔर down2 कुंजी है कि एक दूसरे से खड़ी-अप्रभेद्य हैं करने के लिए, अकेले छोड़ दिया और सही कुंजी से ..... यह एक है जाने दुखद वैचारिक-अंधा अहंकार का प्रदर्शन।
न्यू अलेक्जेंड्रिया

92

प्रमुख स्थान

संक्षेप में, नेविगेशन इंटरफ़ेस के रूप Vimमें hjklकुंजियों का उपयोग करता है क्योंकि यह पुराने "ADM-3A" टर्मिनल का एक अवशेष है, जिसमें इन कुंजियों को तीरों के साथ चिह्नित किया गया था।

कीबोर्ड

चूँकि vimयह व्युत्पन्न है vi, यह उसी hjkl कुंजियों का उपयोग करता है।

नई आदतें

तीर कुंजी के लिए पत्र आधारित प्रतिस्थापन आपको मानक टाइपिंग कॉन्फ़िगरेशन से अपने हाथों को हटाने के बिना पाठ को नेविगेट करने की अनुमति देता है । यह तीर कुंजियों को हिट करने के लिए अपने हाथ को हिलाने की तुलना में यकीनन अधिक कुशल और तेज है। जैसा कि # 2 के संदर्भ में उल्लिखित है (संसाधनों को देखें) यह इस से होने वाले फायदों का अंत नहीं है: वीआईएम के पास कई अन्य शॉर्टकट हैं जिन्हें आप अपने हाथों को स्थानांतरित किए बिना एक्सेस कर सकते हैं।

संसाधन और इन्सर्ट मोड

आपके प्रश्न के 2 भागों के कुछ बहुत विस्तृत और सटीक उत्तर हैं: तीर कुंजी प्रतिस्थापन के संदर्भ में, मैंने त्वरित और सारांश तरीके से उत्तर दिया है, हालांकि आपके सम्मिलित प्रश्न के लिए , कृपया नीचे सूचीबद्ध संसाधन देखें।


2
यह उल्लेख करने के लिए नहीं कि आपके हाथों को तीर कुंजियों पर ले जाने की तुलना में hjkl कुंजियाँ अधिक कुशल हैं।
साठफुटेरसूड

2
यह प्रश्न का उत्तर नहीं देता है, केवल यह बताता है कि hjkl को क्यों चुना गया है।
मात्सेमन्न

3
यह सच और दिलचस्प इतिहास है, लेकिन ओपी पूछता है कि आप कर्सर को आवेषण मोड में कैसे स्थानांतरित करते हैं । hjklइन्सर्ट मोड में काम न करें, तो यह प्रश्न का उत्तर कैसे है?
लार्स

3
@ क्रूग, सवाल का पहला हिस्सा यह है कि किसी ने कहा कि तीर कुंजी का उपयोग कभी भी विम में न करें। यह तथ्य कि आप hjklविम का उपयोग कर सकते हैं , यह नहीं बताता कि किसी को कभी भी तीर कुंजी का उपयोग क्यों नहीं करना चाहिए, बस इस तथ्य के रूप में कि मैं काम करने के लिए अपनी साइकिल की सवारी कर सकता हूं, कोई यह नहीं बताता कि कोई मुझे जॉग करने के लिए कभी क्यों नहीं कहेगा।
लार्स

1
अब मुझे समझ में आ रहा है कि विम मोड से बाहर निकलने के लिए Vim का उपयोग क्यों किया गया ^ ^ कूल तस्वीर!
.तिने

56

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

इस बात पर विचार करना महत्वपूर्ण है कि उस मंत्र को दोहराने वाले लोग इसके बजाय उपयोग करने का प्रस्ताव रखते हैं।

ज्यादातर समय, वे उपयोग करने पर जोर देते हैं hjkl

यदि हम इस तथ्य को छोड़ देते हैं कि इन कुंजियों का उपयोग केवल इसलिए किया जाता है क्योंकि vi के लेखक द्वारा उपयोग किए गए कीबोर्ड में भौतिक तीर कुंजियाँ नहीं थीं और इस प्रकार कि तीर कुंजियों के विरुद्ध कोई भी तर्क सिर्फ तर्कसंगत है, hjklवैसे भी केवल तीर की तुलना में मामूली रूप से बेहतर हैं। हां, hjklतीर के ऊपर उपयोग करने का एकमात्र लाभ यह है कि आप दाहिने हाथ के उस छोटे से आंदोलन को तीर से और उसके पास छोड़ देते हैं। चाहे वह लाभ मुसीबत के लायक हो, आपकी कॉल है।

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

13 बार दाहिने तीर को मारना अक्षम और उबाऊ है। यह है कि बेहतर हथौड़ा lकुंजी 13 बार? नहीं, यह उतना ही मूर्ख है।

जब तक आप अपने लक्ष्य तक नहीं पहुँचते, तब तक सही तीर को दबाए रखना कम उबाऊ है, लेकिन यह त्रुटिहीन है और लगभग उतना ही अयोग्य है क्योंकि अंत में आवश्यक और गैर-नियतात्मक धीमा होने के कारण 13 हिट हैं। यह है कि बेहतर रखने के लिए lकुंजी दबाने? नहीं बिलकुल नहीं।

शुक्र है कि ज्यादातर जीयूआई टूलकिट कंबोज प्रदान करते हैं Ctrl+Rightजो हमें शब्द-दर-शब्द को स्थानांतरित करने या ईओएल पर कूदने की अनुमति देते हैं, अगले पैराग्राफ तक या जो भी हो। ये शॉर्टकट हमें एकल तीरों की तुलना में बहुत तेज और अधिक समझदारी से नेविगेट करने में मदद करते हैं। क्या हमारे पास भी ऐसा ही है hjkl? नहीं, हम नहीं। हम एक गिनती का उपयोग कर सकते हैं, अगर हम चाहते हैं, लेकिन हर गति के लिए वर्णों को कौन गिनना चाहता है? कर 14kकी मदद से relativenumberमहान लेकिन क्या क्षैतिज गति के बारे में है? बड़े आंदोलनों के लिए, hjklवास्तव में संशोधक + तीर से भी बदतर हैं। और अंदाज लगाइये क्या? बड़े आंदोलन वे हैं जिनकी हमें सबसे ज्यादा जरूरत है।

लेकिन हम भाग्यशाली कमीने हैं, हमारे पसंदीदा संपादक गतियों कि चारों ओर दोनों तीर हलकों चलाने के दर्जनों है और hjkl : bBeEwW/?*#{}()और इतने पर। यदि आप और दोस्तों के लिए उपयोग किया जाता है, तो ये कमांड बहुत अधिक सशक्त hjklऔर अधिकांश भाग के लिए अधिक तार्किक और सहज हैं Ctrl+Right

से स्विच <Right><Right><Right><Right><Right><Right><Right><Right><Right>करना lllllllllया यहां तक 9lकि हास्यास्पद रूप से व्यर्थ है।

से स्विच <Right><Right><Right><Right><Right><Right><Right><Right><Right>करना <C-Right>काफी बेहतर है। वहां से, स्विच करना wआसान और त्वरित दोनों है। <nop>अपने तीर की जरूरत नहीं !

यदि ये कमांड अधिक उपयोगी, अधिक शक्तिशाली और अधिक सहज ज्ञान युक्त हैं hjkl, तो सभी नरक में इतने सारे ब्लॉगर और टिप्पणीकार तीर के साथ बदलने पर जोर क्यों देते हैं hjkl?

मेरे पास है। कोई जानकारी नहीं।

अंत में, hjklहमारे टूलबेल में उनका स्थान है क्योंकि हमें हमेशा 2 वर्णों या रेखाओं से जाना पड़ता है, लेकिन वे अधिक बार जंगल को छिपाने वाले पेड़ से अधिक नहीं होते हैं। तीरों के खिलाफ उपदेश देने वाले लोगों से सावधान रहें: आपके लिए उनके पास जो कुछ है वह बेहतर नहीं हो सकता है।


सबसे पहले, मैंने सोचा था कि आपका कहना है कि 'hjkl' बेकार हैं, लेकिन अच्छा पकड़, शब्द / पैराग्राफ / वाक्य गतियों में अधिक उपयोगी है कि मंत्र एकल चरित्र गति के बारे में है।
जेवियर टी।

1
धन्यवाद। मैंने उसी दिन एचएन पर इसी तरह की चर्चा की जो खराब शब्दों के कारण पटरी से उतर गई। एक के प्रयासों ध्यान केंद्रित पर hjkl है बेकार लेकिन hjklउपयोगी होते हैं।
रोमेनिल

5
यहाँ भी: अंत में मुझे आपका उत्तर पसंद आया, लेकिन मुझे लगता है कि स्वर अनावश्यक रूप से भुनाने / ट्रोलिंग / फ्लेमिंग के रूप में आया था।
अंकलजीव

उन्हें बेकार मत कहो, गति के बारे में तर्क एक अच्छा है, और जिस तरह से एचजेकेएल अन्य वीआईएम कमांड के साथ काम करता है जिस तरह से तीर कुंजियाँ महत्वपूर्ण नहीं हैं।
एविएटर ४५००३

@TC पूरी बहस को और दिलचस्प बनाने के लिए कोई उदाहरण?
19

18

दूसरों ने वर्णन किया है कि कर्सर को इधर-उधर करने के अन्य तरीकों को क्यों पसंद किया जाता है, लेकिन इस सवाल का जवाब देने के लिए बहुत कम कहा गया है कि तीर कुंजियों का उपयोग करना एक बुरा विचार क्यों माना जाता है?

मुझे लगता है कि मुख्य कारण (और @Squeezy कुछ हद तक इस पर निर्भर है) है कि VT100 जैसे टर्मिनलों के दिनों में, तीर कुंजियों ने भागने के क्रम का उत्पादन किया जो कि चल रहे कार्यक्रम द्वारा व्याख्या की गई थी। (चूंकि तीर कुंजियों का ASCII में प्रतिनिधित्व नहीं किया गया है, तीर कुंजियों के टाइपिंग को कुछ "विशेष" तरीके से संप्रेषित किया जाना है।) भागने का क्रम आमतौर पर कुछ इस तरह था।

ESC [ A

आपके टर्मिनल, आपके कनेक्शन और आपके कर्सर मोड के गुणों के आधार पर । यदि आपके शेल या आपके प्रोग्राम को टर्मिनल के लिए ठीक से कॉन्फ़िगर नहीं किया गया था, तो वे एस्केप सीक्वेंस को एक तीर कुंजी के रूप में नहीं समझ पाएंगे।

जब मैं कॉलेज में था, तो VT100 टर्मिनलों के माध्यम से अल्ट्रिक्स में प्रवेश कर रहा था, अगर मैंने आवेषण मोड में vi में एक तीर दबाया, तो ESCइसे "इन्सर्ट मोड से बाहर निकलना" समझा जाएगा, और फिर [ Aसामान्य-मोड कमांड के रूप में निम्नलिखित की व्याख्या की गई। । जाहिर है कि उपयोगकर्ता क्या चाहता है या अपेक्षा नहीं करता है!

आजकल टर्मिनलों और एरो कीज़ की हैंडलिंग अधिक मजबूत लगती है, खासकर GUI वातावरण में। लेकिन SSH या टेलनेट पर विम का उपयोग करते समय वही समस्याएं अभी भी होती हैं।


14

तीर कुंजियों का उपयोग करने पर क्योंकि यह QWERTY लेआउट का उपयोग करते समय और चरित्र से पैड (?) जब Dvorak या जो भी अन्य लेआउट का उपयोग कर होमरॉ से अपनी उंगलियों को स्थानांतरित करने के लिए मजबूर किया जाता है।


4
वाह। गंभीरता से? मैं विश्वास नहीं करना चाहता, क्योंकि इसका मतलब यह होगा कि जिन लोगों ने विम डिज़ाइन किया है, वे सोचेंगे कि उनके उपयोगकर्ता सोचने से ज्यादा समय टाइपिंग में बिताते हैं।
Renan

13
हाथ हिलाने से आप सोच में क्यों पड़ जाते हैं?
ईबीग्रीन

8
ठीक है, जब मुझे इसे स्कूल में करना था, तो आपको hjkl नेविगेशन का उपयोग करने से पहले esc को हिट करना था, इसलिए आपने अपनी पिंकी को Esc में लाने के लिए पहले ही अपने बाएं हाथ को होम रो से हटा दिया था। मुझे याद है कि एक स्थान पर वापस जाने और एक चरित्र सम्मिलित करने के लिए आपको 'Esc: hi' दर्ज करना था और फिर वह वर्ण लिखें जिसे आप सम्मिलित करना चाहते थे। इतना उपयोगी नहीं है।
फ्रैंक थॉमस

1
@ रेनन - आप 'टाइपिंग' का अर्थ है 'टेक्स्ट डालना'। जब मैं पढ़ रहा हूँ और सोच रहा था, तब भी मैंने अपनी पंक्ति होम फिंगर पर रखी, क्योंकि कीबोर्ड है कि मैं विम में कैसे नेविगेट करता हूं : कोड की तुलना करने के लिए अन्य फ़ाइलों को खोलना, वर्तनी की त्रुटियों को ठीक करने के लिए इधर-उधर घूमना, आदि
नाथन लांग

2
@ रेनन - 1) आप बचत को कम आंकते हैं और 2) छोटी चीजें जोड़ते हैं। मैंने स्पर्श-टाइपिंग विम पावर उपयोगकर्ताओं को अन्य डेवलपर्स की गति 10x पर संपादित करते देखा है। पर्याप्त गति से, संपादन स्वचालित हो जाता है और किसी के विचारों या प्रवाह को बाधित नहीं करता है। यह इस तरह से काम करने के लिए एक खुशी है, इसलिए यह मेरी नाव को तैरता है, लेकिन मुझे लगता है कि यह एक बड़ा उत्पादकता बढ़ावा है जितना आप सोचते हैं। एक उदाहरण के रूप में गैरी बर्नहार्ट की तरह कोडर्स देखने की कोशिश करें।
नाथन लोंग

10

तीर कुंजियाँ एक समस्या को प्रदर्शित करती हैं - यह पहले से ही vi में जानी जाती थी - धीमे कनेक्शन पर, जैसे 1200 बॉड मॉडेम पर। तीर ईएससी अनुक्रम की तरह अनुवाद करता है ESC a। अब जब समय ईएससी और बहुत लंबा हो जाता है, तो आप एपेंड मोड के बाद बीईएल (या एक फ्लैश देखकर) सुनते हैं। यह hjklकुंजियों के साथ नहीं दिखाई देगा ।


मुझे लगता ESC [ Aहै कि आप किसका जिक्र कर रहे हैं?
लार्स

2
ESC [ Aएक DEC VT-100 टर्मिनल है (ANSI टर्मिनल DEC VT-100 का प्रबल रूप से व्युत्पन्न) था। IIRC, ESC AADM-3A तीर या संभवतः DEC VT-52 तीर था। बिंदु समान रहता है, हालांकि, ESCतीर कुंजी के भाग के रूप में भेजा गया चरित्र आसानी से ESCमैन्युअल रूप से टाइप किया गया था ।
RBerteig

@Rerteig: अच्छा पता है।
लार्स

5

दूसरे प्रश्न के बारे में:

[I] f आप तीर कुंजियों का उपयोग नहीं करते हैं, आप कर्सर को इन्सर्ट मोड में कैसे ले जा सकते हैं?

जो गुरु है, और जो इसलिए तीर कुंजियों का तिरस्कार करता है, "मोड" की अवधारणा वैसे ही मौजूद नहीं है।

मास्टर एक आवेषण मोड का उपयोग करके नया पाठ जोड़ता है, लेकिन सम्मिलित या प्रतिस्थापन आदेशों को पूरा करता है जो एक ओपोड के साथ शुरू होता है i, जैसे कि , oया cwउसके बाद पेलोड पाठ, और द्वारा समाप्त किया जाता है ESC। कमांड में एक सिंटैक्स होता है, और इसलिए मशीन कमांड के सिंटैक्स को स्वीकार करने में राज्यों के माध्यम से ट्रेस होता है, लेकिन संपादक के मास्टर मॉडल में, ये एक मोड को जन्म नहीं देते हैं। प्रशिक्षु भोलेपन को "मोड" कहते हैं, यह मास्टर को अधूरा आदेश राज्य, एक सबसे घृणित स्थिति है जो मास्टर से बचा जाता है।

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

इसके अलावा, चूंकि मास्टर शायद ही कभी इस तरह से विचलित हो जाता है जैसे कि एक कमांड को अधूरा छोड़ने के लिए, मास्टर शायद ही कभी, यदि कभी भी, संपादक ESCने "बस के मामले में" जारी किए गए एक अतिसुशील प्रवेश के कारण बीप का कारण बनता है ।

(हालांकि, जब नेटवर्क पिछड़ जाता है या मशीन को काट दिया जाता है, तो मास्टर ESCसभी की तरह ही बार-बार चाबी पर पाउंड फेंकता है।)


2
याद रखें, यदि viकमांड कमांड डालना एक प्रविष्टि है, तो निष्पक्ष होने के लिए, हमें अन्य संपादकों में ऐसे सभी तरीकों को पहचानना होगा और मोडल कॉल करना होगा। उदाहरण के लिए, जब हम Emacs में Ctrl-X मारते हैं, तो हम एक "मोड" में होते हैं जिसमें यह संभव है, उदाहरण के लिए, दस्तावेज़ को बचाने के लिए Ctrl-S को हिट करने के लिए, जो उस "मोड" के बाहर काम नहीं करेगा।
कज़

5
  • तीर कुंजी कुछ वातावरणों में अच्छी तरह से काम नहीं कर सकती है। hjkl सामान्य वर्ण हैं और सभी प्रकार के टर्मिनलों द्वारा अच्छी तरह से समझे जाते हैं।
  • आप कर्सर को इन्सर्ट मोड में न ले जाएँ ( बैकस्पेस को छोड़कर और एक छोटा टाइपो को सही करने के लिए), vi का विचार केवल कुछ डालने के लिए इन्सर्ट मोड में प्रवेश करना है। आंदोलन सामान्य मोड में किया जाता है
  • यदि आप कर सकते हैं, तो आपको जहाँ भी लागू हो हिलाने के लिए hjkl का उपयोग करने से बचना चाहिए , और इसके बजाय केवल निर्देशों के लिए उनका उपयोग करें। Vi में स्थानांतरित करने के लिए कई विकल्प हैं , देखें: http://vim.wikia.com/wiki/Moving_सान

वास्तव में आप कर्सर को आवेषण मोड में ले जा सकते हैं, कम से कम बाईं ओर, बैकस्पेस का उपयोग करके। लेकिन मैं मानता हूं कि आप इसे स्वतंत्र रूप से स्थानांतरित नहीं कर सकते।
लार्स

मैंने यह व्यक्त करने की कोशिश की कि आप कर्सर को इन्सर्ट मोड में बिल्कुल भी स्थानांतरित नहीं करना चाहते हैं ।
स्क्वीजी

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

3

हां, ऊपर वर्णित कई कारणों के लिए, viमूल रूप से उपयोग करने के लिए लिखा गया था hjkl, लेकिन " कभी नहीं " एक बहुत बड़ा बयान है।

मैं vimजैसा चाहता हूं, वैसा व्यवहार करने के लिए (और अन्य उपकरणों का उपयोग करता हूं) संशोधित करता हूं। यह मेरी मशीन पर बहुत अच्छा काम करता है, लेकिन एक एम्बेडेड डेवलपर के रूप में, मुझे हमेशा उन मशीनों को लेने की ज़रूरत नहीं है जो मैं समर्थन करता हूं। मैं पुरानी मशीनों के साथ आता हूं जिनमें केवल अवसर पर hjklनेविगेशन होता है vi। जब तक मैं अपनी आदत को फिर से नहीं तोड़ता और ऊपर नहीं जा पाता, मैं एक या दो सेकंड के लिए अपनी फ़ाइल में सम्मिलित नियंत्रण कोड प्राप्त कर लेता हूं hjkl

एकमात्र मान्य कारण मैं "विम में तीर कुंजी का उपयोग कभी नहीं" कर सकता हूं! इसलिए आप उन मशीनों का उपयोग करने में सक्षम हैं जो तीर कुंजी को संभाल नहीं सकते हैं। " कभी नहीं " कहने के लिए एक बहुत पतली वजह की तरह लगता है ।


3

यदि आप तीर कुंजी का उपयोग नहीं करते हैं, तो आप कर्सर को इन्सर्ट मोड में कैसे ले जा सकते हैं?

प्राथमिक कारण है कि मैं तीर चलाने वालों का उपयोग करने से लोगों को हतोत्साहित करता हूं क्योंकि यह आपको आवेषण मोड में घूमने की अनुमति देता है।

नवागंतुकों के लिए सीखने की अस्पष्टता के साथ सबसे अजीब समस्याओं में से एक यह है कि विम की पूर्ववत कमांड अंतिम कार्रवाई को संचालित करती है , न कि अंतिम कीस्ट्रोक को । मेरे कई दोस्त पूरे समय इन्सर्ट मोड में रहते हैं क्योंकि इसे छोड़ने का कोई कारण नहीं है। जब वे मुझसे पूछते हैं "मैं कैसे पूर्ववत करूँ?" मैं "कमांड यू मोड से लेटर यू को हिट करता हूं" के साथ उत्तर देता हूं जब पूरी फाइल को हटा दिया जाता है तो वे निराश हो जाते हैं।

"विम एक बहुत बेकार पाठ संपादक है अगर यह सही चीजों को पूर्ववत नहीं कर सकता है।"

इससे पहले कि आप सीख चुके हैं कि किसी उपकरण का उपयोग करना मुश्किल है।

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

यह इस कारण से है कि जब आप अंदर हों तो आपको केवल पाठ दर्ज करना चाहिए insert mode। तीर कुंजियों से बचना एक ऐसा तरीका है जिससे हमने आपको बेहतर vim उपयोगकर्ता बनने में मदद की है, तेजी से।


0

मेरे एंड्रॉइड डिवाइस में शेलिंग करते समय विम जो किबॉक्स में ssh डेमॉन चला रहा है, ने मुझे अपने कम्फर्ट जोन से बाहर निकाल दिया। चूंकि डिवाइस पर एनोइड टर्मिनल एमुलेटर विशेष कुंजी कॉम्बोस (सीटीएल + जो भी) को बदलने के लिए वॉल्यूम बटन का उपयोग करता है, कुछ कुंजी जिन्हें मैं सामान्य रूप से कीबोर्ड पर उपयोग करता हूं वे इस स्थिति में काम नहीं करते हैं।

उदाहरण के लिए, इंसर्ट कुंजी इस वातावरण में काम नहीं करती है इसलिए मैं Iमोड डालने के लिए स्विच का उपयोग कर रहा हूं । Esc कुंजी, जिसे मैं आमतौर पर इन्सर्ट मोड से बचने के लिए उपयोग करता हूं, या तो काम नहीं करता है इसलिए मैं ctrl + [इसके बजाय भागने के लिए उपयोग कर रहा हूं । होम और एंड कीज़ काम नहीं करते हैं क्योंकि मैं इसका आदी हूँ। इसके बजाय मैं एक लाइन की शुरुआत या अंत तक पहुंचने के लिए पहले से परेशान नहीं था 0और $शॉर्टकट पर भरोसा कर रहा हूं ।

वैसे भी, तीर कुंजी अभी भी मेरी स्थिति में हमेशा की तरह काम करती है, लेकिन यह जानना अच्छा है कि न्यूनतम कीबोर्ड शॉर्टकट हैं।


0

सिर्फ लिखने से पहले निम्नलिखित कमांड लिखिए: -

  1. Esc
  2. : nocp सेट करें

इसके साथ एक समस्या यह है कि आपको इसे हर बार लिखना पड़ सकता है।


अच्छी तरह से यह तब उपयोगी होगा जब आप सम्मिलित मोड में तीर कुंजी का उपयोग करना चाहते हैं
0decimal0

0

यहाँ मेरा 2 ¢ है।

जो भी आपको सहज लगे वो करें। यदि आप विभिन्न संपादकों का उपयोग करते हैं तो स्थिरता के लिए तीर कुंजियों का उपयोग करना आसान हो सकता है।

दूसरी ओर, यह बिल्कुल शानदार है (और विम) को किसी विशेष कुंजी की आवश्यकता नहीं है, शायद छोड़कर। आप शायद टर्मिनल के रूप में कार्य करने के लिए एक पुराने आईबीएम चयनकर्ता को हैक कर सकते हैं।

देखने के लिए दूसरी बात यह है कि तीर कुंजियाँ अपेक्षा के अनुरूप काम नहीं कर सकती हैं। मैंने उन टर्मिनलों का उपयोग किया है जहां वे काम नहीं करते थे। मुझे यकीन नहीं है कि वे विम में कैसे लागू होते हैं, लेकिन मुझे पूरा यकीन है कि यह एक समान नहीं है। मेरी धब्बेदार स्मृति भी एक कार्यान्वयन को याद करती है जहां उन्हें विम मैक्रोज़ के रूप में लागू किया गया था।


0

बढ़ाया पाठ संपादकों के साथ खेल का नाम "जल्दी में घूमना" और व्यर्थ / दोहराव गति को कम करने के लिए लगता है। जब आप अक्षर कुंजियों से तीर कुंजियों (कीबोर्ड आयामों के आधार पर) और घर की पंक्ति पर वापस जाते हैं, तो कुछ समय खो जाता है । लेकिन अगर आप अपने बाएं हाथ की पिंकी या रिंग फिंगर स्विचिंग मोड के साथ ESC कुंजी प्राप्त कर सकते हैं, तो एक द्रव गति बन जाती है और एक संपादन सत्र के दौरान गति बढ़ जाएगी।

और यह आपके प्रश्न के दूसरे भाग की कुंजी है, अपने बाएं से ESC मारकर इन्सर्ट मोड से बाहर निकलें और अपने दाहिने हिस्से के साथ hjkl के साथ चलें। आखिरकार आप एक हरा लंघन के बिना यह करने में सक्षम हो जाएगा।

कहा जा रहा है कि मैं कभी भी विम के साथ कहीं भी नहीं मिला, जब तक कि मैंने यहां बताई गई कुछ चीजों की कोशिश नहीं की , सबसे महत्वपूर्ण " कुशल हो जाओ: शॉर्टकट मैपिंग " अनुभाग

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