2012-01-26 4 views
13

में लाइन जोड़ें, मैं एक कॉन्फ़िगरेशन फ़ाइल संपादित करने की कोशिश कर रहा हूं और जब भी एक विशिष्ट स्ट्रिंग मिलान हो जाती है तो कोड की एक विशिष्ट पंक्ति (एक नई लाइन पर) जोड़ना चाहती है ... जो कुछ मैंने खोजा है खोज और प्रतिस्थापन के लिए, मैं खोज और संलग्न करने की तलाश में हूं ...स्ट्रिंग के लिए खोजें और vi/vim

उत्तर

13

vim\r नई लाइन है।

:g/specific string/s/.*/&specific line of code 

g आदेश specific string युक्त सभी लाइनों को हासिल करेगा और उसके बाद उन पंक्तियों को s स्थानापन्न आदेश लागू होते हैं: तो तुम यह मैं क्या कर सकता है इस

%s/search string/&\rnew code/ 
+1

स्पष्टीकरण के लिए। विकल्प का उपयोग करते समय एम्पर्सेंड इसे जोड़ता है? या इसमें उस रेखा को शामिल किया गया है जिसे आप बदल रहे हैं ताकि आप "% s/search string/\ rnewcode और /" के साथ प्रीपेड कर सकें? – VolatileStorm

+0

@ जयपाल '% s /^.* खोज स्ट्रिंग। * $/& \ Rnew code /' बेहतर हो सकता है? आप मूल रेखा तोड़ सकते हैं। उदाहरण के लिए, यदि रेखा "खोज स्ट्रिंग = xyz" या "foosearch string = barsearch string" – Kent

+1

'\ r' विकल्प स्ट्रिंग में नई पंक्ति है। एक खोज पैटर्न में \ n' नई लाइन है। – Benoit

0

की तरह कुछ कर सकते हैं। इस समस्या के लिए s आदेश प्लस इसकी सामग्री के साथ पूरी लाइन specific line of code

HTH

13
व्यक्तिगत रूप से

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

:g/key/norm owhat ever you want 

कर देगा पाठ:

foo 
bar 
key 
foo2 
bar2 
key2 
blah 

रहे हैं:

foo 
bar 
key 
what ever you want 
foo2 
bar2 
key2 
what ever you want 
blah 

आप प्रतिमान रेखा से ऊपर नई लाइन जोड़ना चाहते हैं, सिर्फ छोटे 'ओ' के लिए बदल "ओ"।

+0

'मानदंड ओ' से बेहतर है 'put =' जो भी आप चाहते हैं ' – Benoit

+0

@ बेनोइट हाँ, रखो या रखो! – Kent

+0

यदि आपके पास 'ऑटोइंडेंट' विकल्प सेट है, तो 'मानक ओ' और' मानक ओ 'का संभावित लाभ है कि वे उसी इंडेंटेशन का उपयोग करेंगे जो आप खोज रहे थे। – bdesham

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^