แทรกโหมดเสร็จสิ้นด้วย Ctrl-n
ฉันไม่รู้ว่าคุณสามารถทำ WORD ให้เสร็จได้นอกเหนือจากการเขียนฟังก์ชันของคุณเอง (เช่น omnifunc) อย่างไรก็ตามหากคุณไม่สนใจที่จะขยายคำให้ตรงกับตัวละครของคุณคุณสามารถเพิ่มตัวอักษรเหล่านั้นใน 'iskeyword'
ตัวอย่างเช่นค่าเริ่มต้น 'iskeyword' ของฉัน
iskeyword=@,48-57,_,192-255
จากนั้นฉันก็ตั้งค่าให้เป็นนั้นบวกกับตัวละครเพิ่มเติมด้านบน
:set iskeyword=@,48-57,_,192-255,{,},,,(,),^
นี้จะเพิ่ม{, }, ,, (, )และ^ตัวละครที่ทำขึ้นคำ (นอกเหนือจากสิ่งที่ไม่อยู่แล้ว)
หลังจากนั้นการพิมพ์{Ctrl-nจะเสร็จสมบูรณ์เป็น{0,1}^n(ในไฟล์ที่มีเพียงสองตัวอย่างที่คุณให้ไว้)
หมายเหตุ: มันจะเป็นการดีกว่าถ้าจะทำ:set iskeyword+=กับสิ่งเพิ่มเติมดังนี้:
:set iskeyword+={,},,,(,),^
ด้วยวิธีนี้คุณจะไม่ต้องทำสิ่งอื่นใดในการสร้างคำหลักอยู่แล้วโดยผนวกอักขระใหม่เข้ากับการตั้งค่าที่มีอยู่
การขยายด้วยตัวย่อ
แม้ว่าจะไม่ใช่ส่วนหนึ่งของคำถามต้นฉบับฟังก์ชันการทำงาน (ish) อื่นที่คล้ายกันคือการใช้ฟังก์ชันตัวย่อของ nvi หรือ Vim ไม่เหมือนกับการเติมคำหลักให้สมบูรณ์ตัวย่อไม่จำเป็นต้องดูเหมือนข้อความสุดท้าย นอกจากนี้ยังแตกต่างจากการเติมคำหลักตัวย่อขยายโดยอัตโนมัติแทนที่จะใช้เฉพาะเมื่อคุณร้องขอเท่านั้น ขึ้นอยู่กับเป้าหมายและการใช้งานของคุณสิ่งนี้สามารถบันทึกการพิมพ์จำนวนมากและช่วยให้คุณพิมพ์ข้อความจำนวนมากโดยไม่ต้องหยุดการขอให้เสร็จสมบูรณ์
ตัวย่อเหมาะสำหรับชุดคำหลักขนาดเล็กและเมื่อคุณสามารถกำหนดคำหลักล่วงหน้าได้ (คำเหล่านั้นจะไม่ถูกค้นพบจากข้อความของคุณเหมือนกับการเติมคำให้สมบูรณ์)
แนวคิดพื้นฐานที่อยู่เบื้องหลังตัวย่อคือคุณเชื่อมโยงคำกับข้อความอื่น ๆ และเมื่อใดก็ตามที่บรรณาธิการตรวจพบว่าคุณพิมพ์คำว่า (นั่นคือข้อความที่คุณพิมพ์ล้อมรอบด้วยพื้นที่สีขาวซึ่งการดำเนินการเสร็จสมบูรณ์จะเพิ่มช่องว่างหลังจาก คำหลักหรือออกจากโหมดแทรก) มันจะถูกแทนที่ด้วยข้อความอื่น ๆ
สมมติว่าไฟล์ของคุณมี{0,1}^nจำนวนมากและไม่มีรูปแบบอื่น ๆ การพิมพ์ที่ยืดออกเล็กน้อยคุณอาจต้องการพิมพ์01nหรือmyvalueขยายมัน{0,1}^nแต่เฉพาะเมื่อ01nหรือmyvalueเป็นคำศัพท์ของมันเอง (นั่นคือถ้ามันปรากฏขึ้นในอีกคำหนึ่งไม่ได้ เปลี่ยนมัน)
ใน NVI :abbrev 01n {0,1}^nคุณสามารถทำได้ คุณสามารถทำสิ่งเดียวกันใน Vim ได้ แต่ฉันแนะนำให้ใช้:iabbrev 01n {0,1}^nเพื่อ จำกัด การขยายเพื่อแทรกโหมดเท่านั้น
จากนั้นถ้าคุณมีข้อความ (ซึ่ง|หมายถึงเคอร์เซอร์)
We find that the value 01n|
และจากนั้นคุณจะตีEscหรือSpaceหรือTabหรือมิฉะนั้นย้ายเคอร์เซอร์ข้อความที่ได้รับการแทนที่และคุณมี (ตัวอย่างเช่นการใช้ช่องว่าง)
We find that the value {0,1}^n |
และคุณสามารถพิมพ์ต่อไปได้โดยไม่หยุดชะงัก
โดยปกติจะใช้เพื่อแก้ไขการพิมพ์ทั่วไปที่ผิดพลาดโดยอัตโนมัติ (เช่นการเปลี่ยน 'teh' เป็น 'the') แต่อาจมีประโยชน์เท่า ๆ กันสำหรับกรณีการใช้งานของคุณโดยสมมติว่าคุณไม่สนใจการตั้งค่าการแมปล่วงหน้า
:abbreviateแทน ตัวอย่างเช่นออก:ab 01n {0,1}^nคำสั่ง จากนั้นเวลาที่คุณพิมพ์ทุกเป็นคำที่เป็นอิสระในโหมดแทรกก็จะขยายตัวออกไป01n{0,1}^n