1. ไม่ยากที่จะบรรลุพฤติกรรมโดยใช้การทดแทนสองขั้นตอน:
:,$s/BEFORE/AFTER/gc|1,''-&&
ขั้นแรกคำสั่งการแทนที่ถูกเรียกใช้สำหรับแต่ละบรรทัดโดยเริ่มจากบรรทัดปัจจุบันจนถึงจุดสิ้นสุดของไฟล์:
,$s/BEFORE/AFTER/gc
จากนั้น:substitute
คำสั่งนั้นจะถูกทำซ้ำด้วยรูปแบบการค้นหาสตริงแทนที่และแฟล็กเดียวกันโดยใช้:&
คำสั่ง (ดู:help :&
):
1,''-&&
อย่างไรก็ตามอย่างหลังจะทำการแทนที่ในช่วงของบรรทัดจากบรรทัดแรกของไฟล์ไปจนถึงบรรทัดที่มีการตั้งค่าเครื่องหมายบริบทก่อนหน้าโดยลบหนึ่ง เนื่องจาก:substitute
คำสั่งแรกเก็บตำแหน่งเคอร์เซอร์ก่อนที่จะเริ่มการแทนที่จริงบรรทัดที่จ่าหน้า ''
คือบรรทัดที่เป็นบรรทัดปัจจุบันก่อนที่จะรันคำสั่งการแทนที่ (ที่''
อยู่หมายถึง
'
เครื่องหมายหลอกดู:help :range
และ:help ''
เพื่อดูรายละเอียด)
โปรดสังเกตว่าคำสั่งที่สอง (หลัง|
ตัวคั่นคำสั่ง - ดู
:help :bar
) ไม่ต้องการการเปลี่ยนแปลงใด ๆ เมื่อรูปแบบหรือแฟล็กถูกเปลี่ยนแปลงในคำสั่งแรก
2. ในการบันทึกการพิมพ์บางอย่างเพื่อที่จะแสดงโครงกระดูกของคำสั่งการแทนที่ข้างต้นในบรรทัดคำสั่งเราสามารถกำหนดการแมปโหมดปกติได้ดังนี้:
:noremap <leader>cs :,$s///gc\|1,''-&&<c-b><right><right><right><right>
<c-b><right><right><right><right>
ส่วนต่อท้ายจำเป็นต้องเลื่อนเคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัดคำสั่ง ( <c-b>
) และจากนั้นสี่อักขระไปทางขวา ( <right>
× 4) จึงวางไว้ระหว่างเครื่องหมายทับสองตัวแรกพร้อมให้ผู้ใช้เริ่มพิมพ์รูปแบบการค้นหา . Enterเมื่อรูปแบบที่ต้องการและทดแทนพร้อมคำสั่งที่เกิดขึ้นสามารถทำงานได้โดยการกดปุ่ม
(อาจพิจารณาว่ามี//
แทน///
ในการแมปด้านบนหากต้องการพิมพ์รูปแบบให้พิมพ์เครื่องหมายทับแยกด้วยตัวเองตามด้วยสตริงแทนที่แทนการใช้ลูกศรขวาเพื่อเลื่อนเคอร์เซอร์ไปที่เครื่องหมายทับที่คั่นอยู่แล้วเริ่มต้น ชิ้นส่วนทดแทน)
\vpattern
- รูปแบบ 'วิเศษมาก': อักขระที่ไม่ใช่ตัวเลขและตัวอักษรจะถูกตีความว่าเป็นสัญลักษณ์ regex พิเศษ (ไม่จำเป็นต้องมีการหลบหนี)