มีหลายวิธีในการทำเช่นนี้
ภายในไดเรกทอรีปัจจุบัน
หากคุณต้องการที่จะดำเนินการค้นหา / แทนที่ในต้นไม้โครงการ, คุณสามารถใช้เป็นกลุ่มของรายการอาร์กิวเมนต์
เพียงเปิด Vim จากนั้นใช้:args
คำสั่งเพื่อเติมรายการอาร์กิวเมนต์ คุณสามารถผ่านชื่อไฟล์หลายรายการหรือแม้กระทั่ง globs
ตัวอย่างเช่น:args **/*.rb
จะค้นหาไดเรกทอรีทับทิมซ้ำ ๆ ในปัจจุบันเพื่อค้นหาไฟล์ vim **/*.rb
แจ้งให้ทราบว่าเรื่องนี้ยังเป็นเหมือนการเปิดเป็นกลุ่มที่มี คุณสามารถใช้find
คำสั่งของเชลล์เพื่อรับรายการไฟล์ทั้งหมดในไดเรกทอรีปัจจุบันโดยการเรียกใช้:
:args `find . -type f`
คุณสามารถดูรายการ args ปัจจุบันได้:args
ด้วยตัวเอง หากคุณต้องการเพิ่มหรือลบไฟล์จากรายการคุณสามารถใช้:argadd
หรือ:argdelete
คำสั่งตามลำดับ
เมื่อคุณพอใจกับรายการตอนนี้คุณสามารถใช้:argdo
คำสั่งอันทรงพลังของ Vim ซึ่งรันคำสั่งสำหรับทุกไฟล์ในรายการอาร์กิวเมนต์::argdo %s/search/replace/g
นี่คือเคล็ดลับบางอย่างสำหรับการค้นหา (ขึ้นอยู่กับความคิดเห็นบางส่วน):
- ใช้ขอบเขตของคำหากคุณต้องการค้นหา "foo" แต่ไม่ใช่ "foo_bar" ใช้
\<
และ\>
สร้างรอบ ๆ รูปแบบการค้นหาดังนี้::argdo %s/\<search\>/foobar/g
- ใช้
/c
แฟลกการค้นหาหากคุณต้องการให้ Vim ขอคำยืนยันก่อนที่จะเปลี่ยนคำค้นหา
- ใช้
/e
แฟล็กการค้นหาหากคุณต้องการข้ามข้อผิดพลาด "pattern not found"
:argdo %s/search/replace/g | update
นอกจากนี้คุณยังสามารถเลือกที่จะบันทึกไฟล์หลังจากดำเนินการค้นหา: ที่นี่:update
ใช้เพราะมันจะบันทึกไฟล์เฉพาะเมื่อมีการเปลี่ยนแปลง
เปิดบัฟเฟอร์
หากคุณมีบัฟเฟอร์เปิดอยู่แล้วคุณต้องการทำการค้นหา / แทนที่คุณสามารถใช้:bufdo
ซึ่งจะรันคำสั่งสำหรับทุกไฟล์ในรายการบัฟเฟอร์ของคุณ ( :ls
)
คำสั่งนั้นคล้ายกับ:argdo
: :bufdo %s/search/replace/g
คล้ายกับ:argdo
และ:bufdo
มี:windo
และ:tabdo
ดำเนินการกับหน้าต่างและแท็บตามลำดับ มักใช้น้อย แต่ก็มีประโยชน์ที่จะรู้
/c
ตั้งค่าสถานะเพื่อยืนยันการทดแทน