นี่เป็นคำขอที่ค่อนข้างน่าสนใจเนื่องจากไม่มี "โหมด" สำหรับการบันทึกแมโคร หลังจากขุดเอกสารบางฉบับฉันพบสิ่งต่อไปนี้usr_10
คุณเริ่มต้นด้วยการย้ายไปที่อักขระตัวแรกของบรรทัดแรก ถัดไปคุณดำเนินการคำสั่งต่อไปนี้:
QA เริ่มการบันทึกแมโครในการลงทะเบียน
^ ย้ายไปที่จุดเริ่มต้นของบรรทัด
i # สอดแทรก "สอดสตริง #include" ที่ด้านบนของบรรทัด
$ ย้ายไปที่ท้ายบรรทัด
"ผนวกเครื่องหมายอัญประกาศคู่อักขระ (") ต่อท้ายบรรทัด
j ไปที่บรรทัดถัดไป
หยุดบันทึกแมโคร
สิ่งที่ยอดเยี่ยมสำหรับฉันคือบรรทัดเกี่ยวกับ "เริ่มการบันทึกแมโครในการลงทะเบียน a"
เนื่องจากแต่ละแมโครจะถูกบันทึกลงทะเบียนโดยค่าเริ่มต้นฉันหวังว่าเราจะสามารถดูได้ใน:reg
รายการ ปรากฎว่ามันใช้งานได้เหมือนมีเสน่ห์!
ตัวอย่าง:
ในโหมดปกติ: qaisomething<Esc>
และภายในของ:reg
เราเห็นรายการ!
"a isomething^[
ด้วยความรู้ที่ว่าคุณควรจะสามารถ "สอดแนม" บนรีจิสเตอร์เพื่อยืนยันว่าแมโครถูกบันทึกไว้ (ใช้การลงทะเบียนที่มีชื่อในทุกการบันทึก [แผนที่q
จะใช้การลงทะเบียนเดียวกันเสมอ (หรืออะไรทำนองนั้น)]
หากคุณพบปัญหาโปรดแจ้งให้เราทราบและฉันจะพยายามช่วยคุณ (เนื่องจากการทำงานนี้เป็นสิ่งใหม่สำหรับฉันเช่นกัน: D)
แก้ไข
เพื่อแก้ไขปัญหาของการลงทะเบียนที่ใช้ในระหว่างการงัดฉันขอแนะนำให้ดูลงทะเบียนพิเศษชนิดที่คุณสามารถใช้เฉพาะสำหรับการที่vimL
คุณกำลังเขียน (ไม่งัดจะเคยมีส่วนร่วมในการลงทะเบียน ( "ay
))
นี่คือข้อมูลบางส่วนจาก:help registers
การลงทะเบียนที่มีอยู่
การลงทะเบียนมีสิบประเภท: ลงทะเบียน E354
การลงทะเบียนที่ไม่มีชื่อ ""
10 หมายเลขทะเบียน "0 ถึง" 9
ทะเบียนลบขนาดเล็ก "-
26 ชื่อลงทะเบียน "a ถึง" z หรือ "A ถึง" Z
การลงทะเบียนแบบอ่านอย่างเดียวสามรายการ ":,"., "%
บัฟเฟอร์สำรองทางเลือก "#
นิพจน์รีจิสเตอร์ "=
การเลือกและการลงทะเบียน "*," + และ "~
หลุมดำลงทะเบียน "_
รูปแบบการค้นหาล่าสุดลงทะเบียน "/
สมมติว่าคุณมีการลงทะเบียนที่คุณจะใช้ตอนนี้ปัญหาจะกลายเป็น "ฉันจะรู้ได้อย่างไรว่าเมื่อการบันทึกหยุดลง" ในการดูแลของผมนี้จะใช้เวลาดูที่autocmd-event
สำหรับCursorHold
; หมายเหตุในเอกสารความช่วยเหลือมีแนวโน้มที่ค่อนข้างดี (ฉันพยายามที่จะเข้าใจว่าฉันสามารถแยกเคอร์เซอร์ปกติกับเหตุการณ์ที่ไม่ได้ใช้งาน / ไม่มีอยู่จริงที่เกิดขึ้นเมื่อลงทะเบียนของคุณเพื่อวัตถุประสงค์ของมาโครได้อย่างไร)
CursorHold
เมื่อผู้ใช้ไม่ได้กดปุ่มสำหรับเวลาที่ระบุด้วย 'updatetime' ไม่ทริกเกอร์อีกครั้งจนกว่าผู้ใช้กดปุ่ม (เช่นจะไม่ยิง 'updatetime' ms ทุกครั้งถ้าคุณปล่อยให้ Vim ทำกาแฟ :) ดู | CursorHold-example | สำหรับดูตัวอย่างแท็ก เหตุการณ์นี้เกิดขึ้นในโหมดปกติเท่านั้น มันจะไม่ทริกเกอร์เมื่อรอการอาร์กิวเมนต์ของคำสั่งที่จะพิมพ์หรือการเคลื่อนไหวหลังจากผู้ประกอบการ ในขณะที่บันทึกเหตุการณ์ CursorHold จะไม่เปิดขึ้น | Q |