ฉันพยายามกำหนดมาโครที่สร้างรายการคำสุ่ม - ไอชอย่างรวดเร็ว
ฉันต้องการให้แมโครเปลี่ยนสิ่งนี้เป็นรายการที่ชอบ
a
b
c
d
e
เป็นนี้
arezzo
bywords
czars
détente
eyrie
สิ่งที่ฉันมี:
- วางเคอร์เซอร์บนจดหมาย
a - เริ่มบันทึกมาโคร
qq aเข้าสู่โหมดแทรก<C-x><C-k> - perform dictionary completion on the character before cursor - in this case the lettera`<C-p>arezzoเลือกรายการสุดท้ายในรายการเสร็จสิ้นที่ปรากฏขึ้นในระบบของฉันคำของมัน (NB ฉันได้longestรวมอยู่ในของฉัน'completeopt'การตั้งค่าที่จำเป็นสำหรับ<C-p>การทำงานในลักษณะนี้ในระหว่างการดำเนิน:'set completeopt=longest,menuone,preview')<C-y>ยอมรับความสำเร็จ^[^[ออกจากโหมดแทรกjย้ายลงไปที่บรรทัดถัดไปพร้อมที่จะทำการดำเนินการเดียวกันในบรรทัดถัดไปqหยุดการบันทึก
เมื่อฉันสร้างแมโครและทำตามขั้นตอนด้วยตนเองทุกอย่างทำงานได้ดี แต่เมื่อฉันเรียกใช้แมโครฉันเห็นข้อความที่กระพริบในบรรทัดคำสั่งบางอย่างเช่น:
กำลังสแกนไฟล์พจนานุกรม
และไม่มีสิ่งใดเกิดขึ้นคำสั่งในมาโครเท่านั้นที่jจะทำงานนั่นคือเคอร์เซอร์จะเลื่อนลงมาที่บรรทัด แต่ไม่มีคำสั่งเสร็จสิ้นที่เรียกใช้
เป็นไปได้หรือไม่ที่จะใช้การเติมโหมดสำเร็จในมาโครและถ้าเป็นเช่นนั้นฉันจะทำอย่างไร
set completeopt=longest,menuone,previewของlongestตัวเลือกซึ่งเป็นสาเหตุของ<C-p>การแทรกทันที ถ้าฉันลบออกlongestจากcompleteoptสตริงฉันจะได้รับพฤติกรรมเช่นเดียวกับคุณ ใช่ปุ่มลูกศรใช้งานได้! ขอบคุณ (ฉันลืมคุณสามารถใช้พวกเขาเพื่อนำทางรายการเสร็จสมบูรณ์)
:set completeopt=และa<c-x><c-k><esc>jเป็นมาโครของคุณ
<C-p>ขั้นตอนของคุณ... เมื่อฉันทำเช่นนั้นในเสียงเรียกเข้าของฉันมันแค่ให้ข้อความback at original- ไม่ได้เลือกรายการสุดท้าย .. ฉันใช้ปุ่มลูกศรขึ้นสองครั้งเพื่อเลือกคำสุดท้าย (กรณีของฉันazures) กด enter และ จากนั้นEsc+j+q.. มันทำงานได้ดีในการเรียกใช้แมโคร