ฉันกำลังดำเนินการตกแต่งซอร์สโค้ดบางส่วนโดยใช้ vim {1}
ฉันได้สร้างมาโครมาโครสองตัวที่ทำตามแต่ละขั้นตอน: ลบ whilespace ต่อท้าย, ลบบรรทัดว่างหลังจาก{
, ลบบรรทัดว่างก่อนหน้า{
, สิ่งนั้น
ตอนนี้ฉันต้องการสร้างแมโครที่เรียกใช้แมโครแต่ละตัวตามลำดับ อย่างไรก็ตามเมื่อแมโครแบบเรียกซ้ำตัวแรกสิ้นสุดลง (เนื่องจากไม่สามารถหาข้อผิดพลาดการจับคู่ -> การจับคู่อีกต่อไปได้) มาโคร "wrapper" ของฉันก็จะยุติเช่นกัน
มีวิธีทำให้แมโครเป็นกลุ่มดำเนินต่อไปหลังจากที่ submacro สร้างข้อผิดพลาดหรือไม่
{1}ฉันรู้เกี่ยวกับการฟอร์แมตอัตโนมัติ ฉันอาจใช้มันกับปัญหาปัจจุบันของฉัน ฉันแค่กล่าวถึงการจัดรูปแบบแหล่งที่มาใหม่เพื่อประโยชน์ของตัวอย่าง อย่าโพสต์คำตอบใด ๆ เกี่ยวกับแหล่งที่มาสวยงามนี้หรือว่า คำถามไม่ได้เกี่ยวกับการจัดรูปแบบโค้ดต่อ seแต่เกี่ยวกับ vim macros
ตัวอย่าง:
- มาโคร 1 - ตัดช่องว่างต่อท้าย -
qw/\s\+$d$@wq
- มาโคร 2 - การลบบรรทัดว่างก่อน} -
qe/\n\n *}dd@eq
- Wrapper Macro - แท็บใหม่, มาโคร 1, มาโคร 2 -
qr:retab@w@eq
เมื่อฉันเรียกใช้ wrapper - @r
- มันจะทำการ retab จากนั้นเรียกใช้ Macro 1 จนกว่าจะไม่พบช่องว่างที่ต่อท้ายอีกต่อไปจากนั้นให้ยุติ ( โดยไม่เรียกใช้แมโคร 2)
ชี้แจง:
สิ่งที่ฉันกำลังมองหาคือวิธีการเรียกใช้ submacro เพื่อที่ว่าเมื่อ submacro นั้นสิ้นสุดลงมาโครการโทรยังคงดำเนินต่อไป