विम में, मुझे कभी-कभी एक लाइन पर मैच के पहले कुछ घटनाओं को बदलने का अवसर मिलता है, लेकिन हर एक को पसंद नहीं 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/: इस और इसके बीच के 3as के साथ प्रत्येक पंक्ति पर पहली घटना को बदलता है (और यह आसानी से एक बहु-चरित्र खोज के लिए एक्स्टेंसिबल नहीं होगा)।
और विभिन्न अन्य संबोधित करने वाले पैटर्न, जिनमें से कोई भी काम नहीं किया। मुझे कहना होगा, मैंने :sइस समस्या का उत्तर खोजने की कोशिश कर रहे कमांड के बारे में एक उचित राशि सीखी है, लेकिन मैंने अभी भी इसे हल नहीं किया है।
क्या कोई जानता है कि इसे कैसे करना है?
(विशिष्ट सीमाओं के लिए बोनस अंक, उदाहरण के लिए चौथी घटनाओं के माध्यम से दूसरा)
nऔर ., हालांकि मैंने उन्हें यहाँ इस्तेमाल करने के लिए नहीं सोचा था। निश्चित रूप से एक सुधार, धन्यवाद।
s/a/=something/चाल ( :help sub-replace-=) करना चाहिए । मैं somethingबल्ले से सही लिखने के लिए विम में काफी धाराप्रवाह नहीं हूं ।
:[up][enter]साथ प्रतिस्थापित किया जा सकता है &, जो अभी भी आदर्श नहीं है, लेकिन कम से कम कम दर्दनाक है।