ฉันมีไฟล์ที่มีหลายบรรทัด ฉันบันทึกมาโครที่ดำเนินการในบรรทัดเดียว ฉันต้องการทำซ้ำแมโครนั้นในทุกบรรทัดที่เหลือในไฟล์ มีวิธีที่รวดเร็วในการทำเช่นนี้?
ฉันลอง Ctrl + Q ไฮไลต์ชุดของบรรทัดแล้วกด @@ แต่ดูเหมือนจะไม่ได้ทำอุบาย
ฉันมีไฟล์ที่มีหลายบรรทัด ฉันบันทึกมาโครที่ดำเนินการในบรรทัดเดียว ฉันต้องการทำซ้ำแมโครนั้นในทุกบรรทัดที่เหลือในไฟล์ มีวิธีที่รวดเร็วในการทำเช่นนี้?
ฉันลอง Ctrl + Q ไฮไลต์ชุดของบรรทัดแล้วกด @@ แต่ดูเหมือนจะไม่ได้ทำอุบาย
คำตอบ:
ใช้คำสั่งปกติในโหมด Ex เพื่อเรียกใช้แมโครบนหลาย ๆ บรรทัด / ทั้งหมด:
ดำเนินการแมโครที่เก็บไว้ในการลงทะเบียนบนเส้นที่ 5 ถึง 10
:5,10norm! @a
เรียกใช้งานแมโครที่เก็บไว้ในการลงทะเบียนaบนบรรทัด 5 ถึงจุดสิ้นสุดของไฟล์
:5,$norm! @a
เรียกใช้แมโครที่เก็บไว้ในการลงทะเบียนaบนทุกบรรทัด
:%norm! @a
ดำเนินการจัดเก็บแมโครในการลงทะเบียนบนเส้นทั้งหมดที่ตรงกับรูปแบบ
:g/pattern/norm! @a
เมื่อต้องการเรียกใช้แมโครบนบรรทัดที่เลือกให้กดVและjหรือkจนกระทั่งเลือกภูมิภาคที่ต้องการ จากนั้นพิมพ์:norm! @a
และสังเกตว่าบรรทัดอินพุตต่อไปนี้ถูกแสดง
:'<,'>norm! @a
ป้อน: ช่วยปกติในกลุ่มเพื่ออ่านเพิ่มเติม
:norm! @a
:
หลังจากไฮไลต์บรรทัดนั้นบรรทัดอินพุต Ex จะอ่านแทน:'<,'>
ซึ่งคุณจะเพิ่มส่วนที่เหลือที่เควินแนะนำ :'<,'>norm! @a
ซึ่งจะทำให้การอ่านคำสั่งสุดท้าย:
!
หลีกเลี่ยงการ remapping ผู้ใช้ของคีย์ คุณอาจไม่ต้องการมัน แต่คำตอบที่เหมาะกับทุกคนต้องการมัน
คุณยังสามารถทำสิ่งนี้:
ในโหมดปกติ:
[number of times to apply the macro] @ [register]
ตัวอย่างเช่น:
1000@q
แอปพลิเคชันแมโครใน register q ไปยังอีก 1,000 บรรทัด
อัปเดต: คำตอบที่ยอมรับนั้นดีกว่ามาก
อัปเดต: เนื่องจาก @kevinliu ชี้ให้เห็นว่าคุณอาจต้องการจบแมโครด้วย a
j
เพื่อไปที่บรรทัดถัดไป
:%norm! @a
และvGG :norm! @a
j
คำสั่งเพื่อลงไปที่บรรทัดถัดไปมิฉะนั้นจะพยายามใช้มันกับบรรทัดเดียวกัน
นอกจากนี้ยังมีปลั๊กอินที่ชื่อว่า RangeMacro ทำสิ่งที่คุณต้องการ! สำหรับทุกคนที่ไม่สามารถเดาได้ว่าชื่อทำอะไร: มันทำซ้ำแมโครที่บันทึกไว้สำหรับแต่ละบรรทัดในช่วงที่กำหนดไม่ว่าจะด้วยการเลือกด้วยภาพหรือโดย: 40,50 /: +10