क्या मैं अपने कर्सर व्यवहार को बदल सकता हूँ?


11

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

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

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

  • इस मामले में वितरित कर सकते हैं?
  • पात्रों के बीचvim कर्सर रखने के लिए बनाया जा सकता है ?

2
लगता है जैसे आप Insertमोड की तलाश कर रहे हैं या मोड के बिंदु को याद नहीं कर रहे हैं normal। मैं सामान्य मोड में एक लाइन पर अंतिम शब्द को हटाना $dawया $bdwहटाना चाहता हूँ । में Insertमोड मैं क्या करना होगा A<Ctrl-w>
jw013

3
रिकॉर्ड के लिए, किसी ऐसे व्यक्ति के रूप में जो "पात्रों के बीच" एक netherworld के विचार से भयभीत है, वर्तमान लाइन पर अंतिम शब्द को हटाने के लिए सही कुंजी क्रम है$bD
एलन करी

1
माउस का उपयोग करना आदर्श नहीं है, लेकिन महत्वपूर्ण अक्षमताएं तब आती हैं जब आपको रुकना पड़ता है और सोचना पड़ता है कि आपको क्या करना है। असली चीज जो कीमती है, वह यहां और वहां दूसरी नहीं है, बल्कि फोकस है । जब आप ध्यान केंद्रित करते हैं तो आप कुछ सेकंड से अधिक खो देते हैं।
iconoclast

2
टिप्पणियों से अब तक ऐसा लगता है कि सवाल का जवाब "नहीं, कर्सर आंदोलन का यह मॉडल अपरिवर्तनीय रूप से विम के डिजाइन में अंतर्निहित है और इसे बदला नहीं जा सकता है।" क्या वो सही है?
iconoclast

2
@ आईकॉनक्लास्ट यही मेरा निष्कर्ष भी है। जहाँ तक मैं बता सकता हूँ, vi या vim में सभी वर्णों को एक रेखा पर समान रूप से व्यवहार करना असंभव है, पहले या अंतिम वर्ण के लिए हमेशा एक अपवाद होता है।
गिल्स एसओ- बुराई को रोकना '

जवाबों:


5

आप कर सकते हैं :set virtualedit+=onemore, जो आपको पिछले चरित्र से बस जाने की अनुमति देता है। दुर्भाग्य से आपके लिए, $अभी भी अंतिम चरित्र पर जाता है; आपको इसे प्राप्त करने के लिए कर्सर करना होगा। दूसरी ओर, आप उपयोग कर सकते हैं g$, जो सामान्य रूप से स्क्रीन लाइन के अंतिम वर्ण पर जाती है जो एक लाइन पर लपेटता है; में onemoreमोड यह भी सिर्फ एक गैर लिपटे लाइन (या एक लिपटे लाइन के अंतिम स्क्रीन लाइन) का अंतिम वर्ण अतीत चला जाता है।

:h 'virtualedit' यह विकल्प स्क्रिप्ट को गड़बड़ कर सकता है, लेकिन मुझे नहीं पता कि वास्तविकता में कितना बड़ा जोखिम है।

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