บ่อยครั้งที่ฉันพบว่าตัวเองต้องการทำการทดแทนที่จะมีการจับคู่แยกกันทั่วทั้งไฟล์ขนาดใหญ่และด้วยการค้นหาที่ไม่สำคัญและการแสดงออกแทน
okFunction(arg1, arg2 arg3)
ตัวอย่างเช่นสมมติว่าฉันมีบางฟังก์ชั่นการโทรเช่น args จะแตกต่างกันไปกับการเรียกใช้ทุกฟังก์ชั่นแน่นอน arg2
ตอนนี้บอกว่าผมได้ค้นพบการทำงานที่ดีกว่าที่ไม่จำเป็น ฉันสามารถปรับไฟล์ทั้งหมดได้อย่างง่ายดายด้วย
:%s/\<okFunction(\(\w\+\), \(\w\+\), \(\w\+\))/betterFunction(\1, \3)/gc
แม้ว่าแนวคิดง่าย ๆ ฉันไม่แน่ใจว่าฉันมีไวยากรณ์ในรูปแบบที่ค่อนข้างยาวนี้ การc
ตั้งค่าสถานะช่วยได้ที่นี่จริงๆ แต่ปัญหาคือเมื่อขอการยืนยันเสียงเรียกเข้าจะไม่แสดงว่าการแข่งขันจะถูกแทนที่ด้วยอะไร ฉันหมายความว่ามันจะแสดงการแสดงออกแทน แต่ไม่ได้ผลการประเมิน หากฉันยืนยันการเปลี่ยนตัวด้วยy
เสียงเรียกเข้าจะข้ามไปยังนัดถัดไปทันทีและฉันจะไม่ยอมแพ้เพื่อดูว่าฉันทำผิดพลาดหรือไม่
ฉันได้พบปลั๊กอินvim-overที่แก้ปัญหาได้เพียงบางส่วน แต่ก็ต่อเมื่อคณิตศาสตร์ทั้งหมดปรากฏบนหน้าจอเมื่อคุณพิมพ์คำสั่ง เมื่อคุณกด Enter พฤติกรรมจะเหมือนกับที่ฉันได้อธิบายไว้ข้างต้นและฉันไม่ได้รับหน้าตัวอย่าง
ดังนั้นมีวิธีรับ vim ประเมินนิพจน์การแทนที่เมื่อขอการยืนยันคำสั่งทดแทนหรือไม่?
%
ตรวจสอบว่าผลที่ได้คือสิ่งที่ผมคาดหวังว่าแล้วใช้ทดแทนด้วย%
(มันเพียงไม่กี่กดแป้นพิมพ์: :<up><c-b>%
) เห็นได้ชัดว่าตัวเลือกการแสดงตัวอย่างจะมีประสิทธิภาพมากกว่านั้น ในขณะที่ไม่มีแพทช์อาจมีใครสามารถแทนที่การแทนที่ในฟังก์ชัน vimscript ด้วยตัวเลือกชนิดนี้ แต่ฟังดูเหมือนจะเป็นงานที่ต้องทำมากมาย ...