इन्सर्ट मोड डाले बिना एक से अधिक कैरेक्टर को कैसे बदलें


12

मेरे पास एक लाइन है जो इस तरह दिखती है:

foofoo.xy.barbar

मैं बदलना चाहते हैं xyकरने के लिए gh। मैंने करने की कोशिश की 2r-> gh, लेकिन जाहिर है कि यह काम नहीं किया, क्योंकि यह xyसाथ बदल दिया ggऔर फिर मेरे कर्सर को बाईं ओर एक स्थान दिया।

क्या इन्सर्ट मोड डाले बिना या बहुत अधिक कीस्ट्रोक्स (जैसे :s/xy/gh/) का उपयोग किए बिना ऐसा करने का कोई तरीका है ?


2
Rप्रवेश मोड बदलें। :help replace-modeअधिक जानकारी के लिए।
alxndr

मैंने कोशिश की vt.rgh। लेकिन परिणाम कर्सर की स्थिति को छोड़कर आपका ही था।
गोंकेलो रिबेरो

2
आप इन्सर्ट मोड क्यों दर्ज नहीं करना चाहते हैं? जैसे कुछ cwgh<esc>ठीक काम करेगा।
डॉर्कनोब

1
@ durron597 मुझे यकीन है कि अगर नहीं कर रहा हूँ minimize-keystrokesएक अच्छा टैग है, यह आमतौर पर नहीं वास्तव में क्या सवाल है के बारे में , इस तरह के रूप में। (मैंने आपके प्रस्तावित संपादन अस्वीकार कर दिए हैं) ... शायद आपको मेटा पर चर्चा करनी चाहिए?
मार्टिन टूरनोइज

जवाबों:


19

यदि नया पाठ पुराने पाठ की समान लंबाई है, तो विम का प्रतिस्थापन मोड एक विकल्प है। सामान्य मोड से, R(यह एक राजधानी "आर" है) आपको प्रतिस्थापित मोड में लाता है। यह कुछ अन्य पाठ संपादकों में "ओवरराइट" के समान है: नए वर्णों को सम्मिलित मोड में सम्मिलित करने के बजाय, टाइपिंग कर्सर के नीचे वर्ण को प्रतिस्थापित कर देगी, और फिर अगले कर्सर पर आगे बढ़ेगी। (इसे लोअर-केस की तरह समझें r, लेकिन एक बार में केवल एक से अधिक कैरेक्टर के लिए।) साथ मोड को बदलने के लिए दस्तावेज़ीकरण ढूंढें :help replace-mode

आपके मामले में: .और के बीच के कर्सर के साथ x, दबाने से मोड को बदलने के लिए मिलता है R। अब जब आप टाइप करते हैं तो gयह "x" की जगह ले लेता है और अगले वर्ण पर चला जाता है, इसलिए आप h"y" को बदलने के लिए टाइप कर सकते हैं । अब आपका संपादन हो गया है, इसलिए Escapeसामान्य मोड पर वापस लौटें।

(यह काम करता है जब आपका प्लेसमेंट टेक्स्ट पुराने पाठ के समान ही लंबाई है, लेकिन अगर आपके प्रतिस्थापन कम या अधिक है, cसब हो सकता है आप की जरूरत: यह स्थान ले लेगा 1 पाठ आप तो टाइप के साथ एक आंदोलन के भीतर पाठ, कर रहे हैं। कई मायनों उपयोग करने के लिए cउदाहरण के लिए,: के बीच कर्सर के साथ .और x, ct.ABCEscapeकरने के लिए कहते हैं टेक्स्ट (अप ' टी इल अगले .) "एबीसी" के साथ)।


1 यह पाठ को अनाम / "रजिस्टर में मूव करेगा और फिर इन्सर्ट मोड में स्विच करेगा, ताकि आप इसे बदलने के लिए कुछ टाइप कर सकें, और फिर Escapeसामान्य मोड में वापस आ जाएँ।


2
इस मामले के लिए यह काम करता है। क्या होगा यदि आप 3 वर्णों द्वारा उन 2 वर्णों को बदलना चाहते हैं?
गोंकेलो रिबेरो

1
अच्छा प्रश्न; विभिन्न लंबाई के पाठ को संभालने का एक तरीका शामिल करने के लिए संशोधन किया गया।
alxndr

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

1
लक्ष्य चरित्र nकी n-th घटना को बदलने के लिए एक अंक के साथ उपसर्ग । यह प्रारूप के साथ लेबल के कुछ हिस्सों को बदलने के लिए उपयोगी है w_x_y_zऔर a-b-c-d। सीमित चरित्र को दूर करने के fबजाय उपयोग करें t
pkfm

5

कुछ तरीके हैं जो आप ऐसा कर सकते हैं, लेकिन सबसे सरल मैं सोच सकता हूं:

टी एल; डॉ

fxcw<REPLACEMENT TEXT>

व्याख्या

  • fxआपको एक्स पर कूदता है (देखें help *f*)
  • cwशब्द को बदलने के लिए कहते हैं (देखें :h *c*, :help *w*और :help cwअधिक जानकारी के लिए), "xy" पाठ को हटा दें और सम्मिलित करें मोड में प्रवेश करें, जिससे आप जो चाहें वहीं डाल सकें।
  • <REPLACEMENT TEXT> जो भी आप इसे बदलना चाहते हैं - अपने उदाहरण में "gh"।

इस दृष्टिकोण का एक फायदा यह है कि यह आमतौर पर उपयोग किए जाने वाले पाठ हेरफेर और नेविगेशन कमांड का उपयोग करता है। एक और यह है कि "xy" किसी भी लम्बाई का हो सकता है, और यह अभी भी काम करेगा।

cwकाम करता है क्योंकि अपने पाठ वस्तु अवधि (से घिरा हुआ है .) है, जो शब्द के लिए एक सीमा के रूप में काम करते हैं।

यदि आपका कर्सर पहले से ही "y" वर्ण पर है (या पाठ के किसी भी वर्ण को प्रतिस्थापित किया जाना है), तो आप उपयोग कर सकते हैं ciw<REPLACEMENT TEXT>। यह विम को आपके द्वारा शुरू किए गए शब्द को बदलने के लिए कहता है, भले ही आप इसकी शुरुआत में न हों। सामान्य रूप में और टेक्स्ट ऑब्जेक्ट्स के बारे में :help text-objectsअधिक जानकारी के लिए देखें ciw


क्या यह उसे इन्सर्ट मोड में नहीं रखेगा?
elyashiv

1
आह - उसके प्रश्न के उस हिस्से को नहीं पकड़ सका। उस मामले में, हाँ - आर सबसे उपयुक्त समाधान है।
कोडी पोल

3

बदलें मोड:

Rgh<Esc>

सबसे स्पष्ट समाधान है यदि प्रतिस्थापन मूल के समान लंबाई है लेकिन आप भी कर सकते हैं:

2sgh<Esc>

या:

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