कैसे एक hightlighted स्ट्रिंग बदलने के लिए चुनिंदा?


11

खोज करके, मैंने उस स्ट्रिंग को हाइलाइट किया है जिसे मैं बदलना चाहता हूं। अब मैं केवल हाइलाइट किए गए टेक्स्ट को बदलना चाहता हूं। मैं nखोज स्ट्रिंग के अगले उदाहरण के लिए अग्रिम का उपयोग कर रहा हूं । मैं सोच रहा था कि मैं ऐसा कुछ कर सकता हूं ciwलेकिन यह पूरे शब्द को बदल देता है न कि केवल हाइलाइट किए गए टेक्स्ट को।

मैं परिचित हूं, :%s/old/new/gलेकिन मैं सभी उदाहरणों को बदलना नहीं चाहता। इसके बजाय, मैं अपने कर्सर को प्रत्येक उदाहरण पर आगे बढ़ाना चाहता हूं और फिर तय करना है कि इसे बदलना है या नहीं।

जवाबों:


16

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

cgnFooBar

इस तकनीक के बारे में बड़ी बात यह है कि आप इस बदलाव को दोहरा सकते हैं .। अगले मैच को उसी तरह से बदला जाएगा जैसे आप सिर्फ .दोहराने के लिए उपयोग कर सकते हैं । या के माध्यम से कुछ मैचों को छोड़ दें nऔर फिर उपयोग करें .

इस मामले पर विमकास्ट का एक अच्छा एपिसोड है: जीएन का उपयोग करके खोज मैचों का संचालन

अधिक मदद के लिए देखें:

:h gn

यह निश्चित रूप से जाने का तरीका है जब आपके पास अलग-अलग प्रतिस्थापन तार होते हैं जिन्हें आपको विभिन्न स्थानों पर उपयोग करने की आवश्यकता होती है। मैं दृश्य विधा की बारीकियों के बारे में निश्चित नहीं हूं, जो इसके द्वारा लागू किया गया लगता है gn, इसलिए यहां एक ऐसी ही विधि है जिसे मैंने अभी खोजा है:c//e<CR>FooBar<Esc>//<CR>
जेफ 1

क्या एक बार में सभी चयन / मैच बदलने का कोई तरीका है? असल में, रिफ्लेक्टर के लिए?
गेरिमिया नोव

@Geremia, हाँ, :%s/oldtext/newstuff/gके सभी मैचों बदल जाएगा oldtextकरने के लिए newstuff
१२:२

@zundarz मैं एक regexp नहीं करना चाहता, लेकिन केवल चर नाम बदलने के लिए। .कई बार मारने के बजाय , मैं :%norm .( स्रोत ) का उपयोग कर सकता हूं ।
जेरेमिया जूल

7

यदि आप पहले से ही /wordया के साथ एक शब्द के लिए खोज की है ?word

आप :%s//newword/gcपहले खोजे newwordगए शब्द ( s//..) को खाली छोड़ कर, आपके द्वारा खोजे गए शब्द को बदलने के लिए उपयोग कर सकते हैं ।

cध्वज का कहना है कि हर बदलाव, इस बात की पुष्टि की जानी चाहिए दबाकर yहाँ के लिए या nकोई के लिए।

पर एक नजर डालें :help :s_flagsपुष्टि ध्वज के बारे में अधिक जानकारी के लिए।


1
मैं तुम्हें मदद को देखने के लिए कहा है, लेकिन आप के रूप में अच्छी स्पष्ट रूप से आप भी दबा सकते हैं उल्लेख हो सकता है l, aऔर q(या <Esc>पुष्टि चक्र लपेट के लिए विभिन्न तरीकों के लिए)।
जेफ

2

विधि # 1

आप जो चाहते हैं उसे पूरा करने के लिए gnऔर gNमैपिंग का लाभ उठा सकते हैं। gnअंतिम उपयोग किए गए खोज शब्द के लिए आगे खोज करेगा और नेत्रहीन रूप से मैच का चयन करेगा। gNबिल्कुल वैसा ही करता है, सिवाय इसके कि वह पीछे की तरफ खोजता है। जब एक ऑपरेटर जैसे कि के साथ संयुक्त c, ऑपरेटर मैच के लिए लागू किया जाएगा, उदाहरण के लिए, यदि आपका अंतिम खोज स्ट्रिंग "फू" है और आप टाइप करते हैं cgn, तो यह "फू" के अगले उदाहरण के लिए आगे की खोज करेगा, इसे हटा दें, और प्रतिस्थापन पाठ दर्ज करने के लिए आपको सम्मिलित मोड में रखें।

इन पर अधिक के लिए, देखें :help gnऔर :help gN

विधि # 2

आप ध्वज के :substituteसाथ कमांड का उपयोग कर सकते हैं c। यह आपको प्रत्येक प्रतिस्थापन की पुष्टि करने के लिए कहेगा। उदाहरण के लिए, मान लें कि आप पूरी फ़ाइल में बार के साथ फू को बदलना चाहते थे, लेकिन प्रत्येक प्रतिस्थापन की पुष्टि करना चाहते थे:

:%s/foo/bar/gc

इस बारे में अधिक के लिए इन सहायता विषय देखें: :help :s_flags, :help cmdline-ranges, और :help :substitute

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