ฉันรู้ว่า regex สำหรับการทำทดแทนระดับโลก
%s/old/new/g
คุณจะทำการค้นหาแทนที่แบบโต้ตอบในVim ได้อย่างไร?
ฉันรู้ว่า regex สำหรับการทำทดแทนระดับโลก
%s/old/new/g
คุณจะทำการค้นหาแทนที่แบบโต้ตอบในVim ได้อย่างไร?
คำตอบ:
เพิ่มแฟล็กc (ในพร้อมต์คำสั่ง vim):
:%s/old/new/gc
จะให้พรอมต์ใช่ / ไม่ใช่เมื่อเกิด 'เก่า' ในแต่ละครั้ง
ความช่วยเหลือในตัวของ Vim ให้ข้อมูลที่เป็นประโยชน์เกี่ยวกับตัวเลือกที่มีให้เมื่อเลือกการทดแทนพร้อมการยืนยัน ใช้:
:h :s
จากนั้นเลื่อนไปที่ส่วนบนตัวเลือกการยืนยัน ภาพหน้าจอด้านล่าง:
a
ยกตัวอย่างเช่นเพื่อทดแทนนี้และทุกแมตช์ที่เหลือการใช้งาน
Mark Biek ชี้โดยใช้:
%s/old/new/gc
สำหรับการค้นหาทั่วโลกแทนที่ด้วยการยืนยันสำหรับการทดแทนแต่ละครั้ง แต่ฉันยังสนุกกับการตรวจสอบการโต้ตอบว่าข้อความเก่าจะถูกต้องตรงกัน ฉันทำการค้นหาด้วย regex ก่อนจากนั้นฉันจะใช้รูปแบบนั้นซ้ำ:
/old.pattern.to.match
%s//replacement/gc
s//
จะใช้รูปแบบการค้นหาล่าสุด
ฉันคิดว่าคุณกำลังมองหาc
เช่นs/abc/123/gc
นี้จะทำให้ VIM ยืนยันการเปลี่ยน โปรดดู: ความช่วยเหลือ: ใช้แทนข้อมูลเพิ่มเติม
ฉันมักจะใช้คำสั่ง find / replace / next / repeat :-)
/old<CR>3snew<ESC>n.n.n.n.n.n.n.
ว่าfind "old"
, substitute 3 characters for "new"
, find next
, repeat substitute
และอื่น ๆ
มันเป็นความเจ็บปวดสำหรับการทดแทนครั้งใหญ่ แต่มันช่วยให้คุณเลือกที่จะไม่สนใจเหตุการณ์เก่า ๆ บางอย่าง (เพียงแค่กดn
อีกครั้งเพื่อค้นหาสิ่งต่อไปแทนที่จะ.
ทำซ้ำแทน)
<CR>
อะไร
หากคุณเพียงแค่ต้องการที่จะนับจำนวนของการเกิดขึ้นของ 'abc' %s/abc//gn
จากนั้นคุณสามารถทำ สิ่งนี้ไม่ได้แทนที่สิ่งใด แต่เพียงรายงานจำนวนการเกิดของ 'abc'
ตอนนี้Neovimมีคุณสมบัติที่จะแสดงตัวอย่างการทดแทน:
ภาพที่นำมาจาก: https://medium.com/@eric.burel/stop-using-open-source-5cb19baca44d เอกสารของคุณสมบัติ: https://neovim.io/doc/user/options.html# 'inccommand'
nvim
คุณสมบัติในตัวที่ดีที่จะรู้! ขอบคุณสำหรับการแบ่งปัน!