ऐसी लाइनें हटाएं जो किसी दिए गए लाइन से फ़ाइल के अंत तक एक पैटर्न से मेल खाती हैं


10

अगर मेरे पास बहुत सारी टिप्पणियों के साथ एक फ़ाइल है और मैं कहना चाहता हूँ कि टिप्पणी के सभी को हटा दें, तो फ़ाइल के अंत में पंक्ति 3, इसे करने का सबसे अच्छा तरीका क्या है?

मैं फंस गया हूं, क्योंकि मैंने जो पहली बार कोशिश की थी वह मुझे वह नहीं करना चाहिए जो मैं चाहता हूं:

:3,$/^#/d

पैटर्न की तलाश करने और इसके साथ लाइनों को हटाने की सीमा में 3 से लेकर फ़ाइल के अंत तक यह सभी लाइनों को 3 से हटाता है जो पैटर्न से मेल खाता है, और फिर बंद हो जाता है।

तो मैं एक पूर्व कमांड को कई लाइनों में कैसे लागू करूं। इस मामले में यह एक फ़ाइल के अंत में है, लेकिन क्या यह अलग होगा यदि मैं इसे एक चिह्न के लिए करना चाहता हूं, या 10 और 20 या अन्य श्रेणियों के बीच?

जवाबों:


15

उसके लिए :globalकमांड का उपयोग करें :

:3,$g/^#/d

आप इसे लाइनों के लिए आवेदन कर सकते हैं नहीं एक पैटर्न मिलान:

:3,$g!/^#/d

आप इसके साथ पूर्ण रेंज तंत्र का उपयोग कर सकते हैं (देखें :help :range):

:.,/#define/+3g/^#/d

और आप इसे किसी भी कमांड के साथ उपयोग कर सकते हैं:

:3,$g/^#/s/foo/bar/g

यह विम में सबसे शक्तिशाली कमांडों में से एक है, कृपया :help :globalविवरण देखें।


आप उन :3,$v/foo/dलाइनों के लिए भी उपयोग कर सकते हैं जो एक पैटर्न से मेल नहीं खाती हैं। :h vglobal
vappolinario
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.