แทรกโหมดเสร็จสิ้นด้วย 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