ในกลุ่มบางครั้งผมมีโอกาสที่จะเปลี่ยนที่เกิดขึ้นไม่กี่แรกของการแข่งขันบนเส้น แต่ไม่เหมือนทุก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คำสั่งที่พยายามค้นหาคำตอบสำหรับปัญหานี้ แต่ฉันยังไม่ได้แก้ไข
ใครรู้วิธีการทำเช่นนี้?
(คะแนนโบนัสสำหรับช่วงที่เฉพาะเจาะจงเช่นที่สองถึงเหตุการณ์ที่สี่)
nและ.ถึงแม้ว่าฉันไม่ได้คิดที่จะใช้พวกเขาที่นี่ การปรับปรุงแน่นอนขอบคุณ
s/a/=something/ควรทำเคล็ดลับ ( :help sub-replace-=) ฉันไม่คล่องพอที่ Vim จะเขียนsomethingออกมาทันที
:[up][enter]สามารถแทนที่ด้วย&ซึ่งยังไม่เหมาะ แต่อย่างน้อยก็เจ็บปวดน้อยกว่า