ฉันจะทำให้หน้าต่างการเลือกตรวจการสะกดทำให้ฉันพิมพ์การแก้ไขของตัวเองได้อย่างไร


14

เมื่อทำการตรวจสอบการสะกดคำการพิมพ์z=จะแสดงรายการตัวเลือกตามที่แสดง

เลือกถูกต้อง

คุณสามารถดูการสะกดที่ถูกต้อง "ie" ไม่แสดงเป็นตัวเลือกใด ๆ ฉันต้องการปรับปรุงเมนูนี้เพื่อให้ฉันสามารถพิมพ์ "ie" แทนแล้วกด Enter และแทนที่มัน

มันจะดีถ้าเป็นส่วนหนึ่งของขั้นตอนเดียวกันถ้าฉันสามารถเริ่มพิมพ์ชื่อของหนึ่งในตัวเลือกที่นำเสนอและแท็บแข่งขันกับที่ - ใจของฉันทำงานได้ดีขึ้นในการแทนที่คำโดยการป้อนคำแทนที่จะป้อนตัวเลข

ฉันสงสัยว่าสิ่งนี้จะต้องทำกับปลั๊กอิน แต่ฉันไม่แน่ใจว่ามันไม่ใช่แค่ตัวเลือกการกำหนดค่า

คำตอบ:


5

มองไปที่spell_suggest()ฟังก์ชั่นในการนี้ไม่ได้ดูเหมือนเป็นไปได้ด้วยspell.c z=หลังจากได้รับและแสดงคำแนะนำที่เป็นไปได้ทั้งหมดแล้วก็จะ:

/* Ask for choice. */
selected = prompt_for_number(&mouse_used);

prompt_for_number()อาศัยอยู่ในmisc1.cและทำสิ่งที่คุณคาดหวังว่าจะทำ: มันแจ้งให้ตัวเลข (ดูget_number()ในไฟล์เดียวกัน) ไม่อนุญาตให้ทำการแมปหรืออินพุตอื่น


ตัวเลือกที่สองคือการใช้คาถา "สมบูรณ์" ของ Vim ผ่านCtrl x+ sหรือCtrl x+ Ctrl s1ในโหมดแทรก สิ่งนี้เป็นสิ่งที่คุณต้องการโดยประมาณ คุณสามารถเลือกจากความสำเร็จด้วยCtrl nและCtrl pหรือปุ่มลูกศรหรือพิมพ์การปรับปรุงของคุณเอง

คุณสามารถใช้ปลั๊กอินsupertabเพื่อทำสิ่งนี้ด้วยTabกุญแจของคุณ :help ins-completionยังมีCleverTab()ฟังก์ชั่นที่คุณสามารถปรับให้เข้ากับสิ่งนี้ได้

สำหรับข้อมูลเพิ่มเติมโปรดดู: :help ins-completion, :help i_CTRL-X_s


ในที่สุด Vim มีspellsuggest()ฟังก์ชั่นซึ่งจะส่งกลับรายการคำแนะนำการสะกด:

:echo spellsuggest('hellz')
['hells', 'hello', 'hell', 'help', 'halls', 'heals', 'heels', 'hills', 'hulls', 'hell''s',
 'hellos', 'hell’s', 'held', 'helm', 'tell', 'well', 'bells', 'cells', 'dells', 'fells',
 'helot', 'helve', 'hertz', 'hilly', 'holly']

คุณสามารถใช้ฟังก์ชันนี้เพื่อสร้างหน้าจอคำแนะนำการสะกดของคุณเอง


เชิงอรรถ

1 : โปรดทราบว่าการใช้Ctrl sอาจไม่ทำงานดังที่เอกสารระบุไว้:

หมายเหตุ: CTRL-S หยุดแสดงผลในเทอร์มินัล Unix จำนวนมาก ใช้ 's' แทน พิมพ์ CTRL-Q เพื่อแสดงต่อ

หากคุณใช้ gVim การใช้Ctrl sควรจะทำงานได้ หรือคุณอาจจะปิดการใช้งานนี้ใน terminal stty -ixonของคุณด้วย


3

ฉันจะขยาย / รวมคำตอบ @ quincy-bowers:

  1. คุณไม่สามารถป้อนคำแนะนำของคุณเองได้จากหน้าจอคำแนะนำการสะกด
  2. มันไม่สมเหตุสมผลนัก (ใน VIM) ในการป้อนคำแนะนำของคุณเองจากหน้าจอคาถาแนะนำ

VIM เป็นโปรแกรมแก้ไขข้อความ เนื่องจากเป็นสิ่งที่ดีที่สุดจึงปล่อยให้มีการแก้ไขเอง ในคำอื่น ๆ คำตอบเพื่อเปลี่ยนคำที่สะกดผิดเป็นคำแนะนำที่กำหนดเองของคุณเองเพียงกดenterเพื่อยกเลิกรายการคำแนะนำแล้วเปลี่ยนคำให้เป็นตัวสะกดที่ถูกต้องของคุณด้วยตนเอง ( ciwทำงานได้สมบูรณ์แบบสำหรับสิ่งนั้น)

จากนั้น (ตามที่ @ quincy-bowers แนะนำ) หากคุณต้องการให้การสะกดที่ถูกต้องที่กำหนดเองแสดงในรายการคำแนะนำที่ตามมาzgเมื่อเคอร์เซอร์อยู่ที่คำนั้นและจะถูกเพิ่มลงในพจนานุกรมการสะกดของคุณ (ดู:help zgรายละเอียด)

อย่างไรก็ตามหลังจากที่บอกว่าทุกสิ่งที่มันไม่ได้หยุดคนฉลาดที่ใช้เป็นกลุ่มจากการหาทางเลือก (ไม่ จำกัด รูปแบบให้กับผิวแมวพวกเขากล่าวว่า) และเพื่อให้คุณสามารถลองปลั๊กอินทางเลือกสำหรับตัวอย่างรวมกัน-สะกดแนะนำ


การอธิบายเวิร์กโฟลว์ปัจจุบันเป็นความคิดเห็นมากกว่าคำตอบ แม้ว่าคุณจะอธิบายได้ดี
Lyndon White

1
@Oxinabox บางทีคุณกำลังมองหาบางอย่างเพิ่มเติมในบรรทัด: vim.org/scripts/script.php?script_id=4929อาจจะ?
Sukima

ใช่นั่นคือสิ่งที่ฉันกำลังมองหา
Lyndon White

2

โดยไม่ต้องเพิ่มปลั๊กอินใด ๆ คุณสามารถเพิ่มคำที่รู้จักดีให้กับไฟล์คาถาของคุณ แทนที่จะz=แสดงคำแนะนำการสะกดให้เลือกข้อความที่คุณต้องการเพิ่มลงในไฟล์สะกดแล้วมองzgเห็น

ฉันควรทราบด้วยว่าจากภายในหน้าต่างคำแนะนำการสะกดคุณสามารถใช้เมาส์เพื่อเลือกหน้าต่างที่คุณต้องการตราบใดที่คุณเปิดใช้งานเมาส์สำหรับโหมดปกติ set mouse=aตัวอย่างเช่นฉันได้ตั้งค่าใน. vimrc ของฉันซึ่งเปิดใช้งานเมาส์ในทุกโหมดไม่ว่าจะเป็น Vim หรือ gVim

ฉันไม่คิดว่าสิ่งอื่น ๆ ที่คุณต้องการสามารถทำได้โดยไม่ต้องใช้ปลั๊กอินหรือเปลี่ยนเป็นกลุ่มเอง


1
นี่เป็นเคล็ดลับที่มีประโยชน์ แต่ฉันไม่เห็นว่าพวกเขาตอบคำถามได้อย่างไร
Martin Tournoij

@Carpetsmoker ฉันสามารถพูดเหมือนกันเกี่ยวกับคำตอบของคุณเอง ฉันบอกเขาว่ามันเป็นไปไม่ได้และเสนอการเปลี่ยนเวิร์กโฟลว์ให้เป็นไปได้ เหมือนที่คุณทำ
Quincy Bowers

1
@MartinTournoij คำตอบนี้จริงให้วิธีการแก้ปัญหา: ความต้องการที่จะมีคำใหม่ > ดำเนินการดังกล่าวรวมzg
nilon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.