विम में, मुझे कभी-कभी एक लाइन पर मैच के पहले कुछ घटनाओं को बदलने का अवसर मिलता है, लेकिन हर एक को पसंद नहीं g
होगा। उदाहरण के लिए:
a a a a a
सेवा
b b b a a
मुझे पता है कि मैं उपयोग कर सकता हूं :s/a/b/[enter]:[up][enter]:[up][enter]
, लेकिन यह तीन पुनरावृत्तियों में पर्याप्त थकाऊ है, मेरे पास संभावित 10+ प्रतिस्थापन के साथ लाइनें हैं।
मैंने कोशिश की:
:s/a/b/3g
: विम ने अनुगामी पात्रों की शिकायत की।:s/a/b/3
: इस और पहली दो पंक्तियों पर पहली घटना को बदलता है।3:s/a/b
: पहले जैसा।:s/a/b/g3
: इस और अगली दो पंक्तियों पर सभी घटनाओं को बदलता है।:3s/a/b
: लाइन 3 पर पहली घटना को बदलता है।:/a/,3/a/s/a/b
: फ़ाइल में अगलीa
और तीसरी पंक्ति के बीच प्रत्येक पंक्ति पर पहली बार होने वाली परिवर्तनa
(यदि आवश्यक हो तो रिवर्स करने के लिए संकेत)।:/a/,/\([^a]*a\)\{3\}/s/a/b/
: इस और इसके बीच के 3a
s के साथ प्रत्येक पंक्ति पर पहली घटना को बदलता है (और यह आसानी से एक बहु-चरित्र खोज के लिए एक्स्टेंसिबल नहीं होगा)।
और विभिन्न अन्य संबोधित करने वाले पैटर्न, जिनमें से कोई भी काम नहीं किया। मुझे कहना होगा, मैंने :s
इस समस्या का उत्तर खोजने की कोशिश कर रहे कमांड के बारे में एक उचित राशि सीखी है, लेकिन मैंने अभी भी इसे हल नहीं किया है।
क्या कोई जानता है कि इसे कैसे करना है?
(विशिष्ट सीमाओं के लिए बोनस अंक, उदाहरण के लिए चौथी घटनाओं के माध्यम से दूसरा)
n
और .
, हालांकि मैंने उन्हें यहाँ इस्तेमाल करने के लिए नहीं सोचा था। निश्चित रूप से एक सुधार, धन्यवाद।
s/a/=something/
चाल ( :help sub-replace-=
) करना चाहिए । मैं something
बल्ले से सही लिखने के लिए विम में काफी धाराप्रवाह नहीं हूं ।
:[up][enter]
साथ प्रतिस्थापित किया जा सकता है &
, जो अभी भी आदर्श नहीं है, लेकिन कम से कम कम दर्दनाक है।