ฉันจะได้เสียงระฆังเทอร์มินัลได้อย่างไรเมื่อฉันสะกดคำผิด


17

ฉันทำการถอดความอย่างยุติธรรมซึ่งฉันพิมพ์ที่ 100+ wpm โดยไม่ได้ดูที่หน้าจอ ฉันคิดว่ามันจะมีประโยชน์ถ้าเสียงเรียกจะทำให้ฉันได้ยินอะไรบางอย่างหากผู้ตรวจการสะกดได้ทำเครื่องหมายคำสุดท้าย (น่าจะบ่งบอกว่าฉันพิมพ์ผิดและควรตรวจสอบสิ่งที่ฉันเขียน)

เครื่องตรวจตัวสะกดสามารถใช้คำไฮไลต์ของไวยากรณ์ที่สะกดผิดทันทีที่ฉันกดแป้นเว้นวรรค มันทำงานอย่างไร มีวิธีเรียกใช้คำสั่งบางอย่างในเวลาเดียวกันหรือไม่?

ฉันมักจะใช้เป็นกลุ่มใน terminal; ฉันไม่ได้ตั้งค่าเสียงระฆังเทอร์มินัลในขณะนี้ แต่ถ้านั่นเป็นวิธีที่ง่ายที่สุดที่จะทำฉันอาจสามารถทำงานได้


คำถามกันคุณต้องการที่จะได้รับการพิมพ์ของคุณถูกขัดจังหวะเพื่อแก้ไขคำ? คุณจะไม่เร็วขึ้นหรือไม่ถ้าคุณเขียนเสร็จก่อนจากนั้นจึงดูข้อผิดพลาดตัวอย่างเช่นคำสั่ง "ข้ามไปยังคำที่สะกดผิดถัดไป"
Shahbaz

แรงบันดาลใจของฉันเป็นแบบนี้มากขึ้น: วิธีที่ฉันมักจะพิมพ์ฉันสามารถบอกได้ว่าฉันพิมพ์คำได้อย่างถูกต้อง แต่บางครั้งฉันพิมพ์คำและรู้ว่าฉันคลำหามันเล็กน้อย แต่ก็ยังมีโอกาสที่ฉันจะได้รับ มันถูกต้อง ถ้ามันไม่ส่งเสียงบี๊บฉันก็รู้ว่ามันถูกต้องแล้วฉันก็สามารถไปต่อได้โดยไม่ต้องกังวล ไม่เช่นนั้นฉันจะ ^ W มากกว่านั้นและลองอีกครั้ง นี่เป็นคำถามที่ยุติธรรมอย่างสมบูรณ์แบบ - อาจเป็นเวลาที่ควรค่าแก่การเข้าใกล้และดูว่าจะเกิดอะไรขึ้น
Soren Bjornstad

2
ตกลงวิธีที่คุณทำมันอาจจะมีประสิทธิภาพมากขึ้น หากเสียงบี๊บ "ทำให้คุณดู" นั่นอาจทำให้คุณช้าลง แต่ถ้าคุณตอบกลับด้วยเสียงบี๊บด้วย ^ W อัตโนมัติโดยไม่ต้องดูหน้าจอนั่นควรจะเร็ว เพียง แต่ระวังหากสมองของคุณรับรู้เสียงบี๊บที่ได้ยินหลังจากที่คุณเริ่มพิมพ์คำถัดไป ^ W จะลบคำผิด ในกรณีเช่นนี้คุณอาจนึกถึงการทิ้งตัวละครที่แทรกไว้ทั้งหมดหลังจากส่งเสียงบี๊บจนกระทั่งกด ^ W เพื่อให้คุณสามารถรู้ได้อย่างปลอดภัยว่า ^ W ลบคำที่สะกดผิดและคุณต้องดำเนินการต่อจากที่นั่น
Shahbaz

คำตอบ:


15

คำที่สะกดผิดสุดท้ายไม่สามารถเข้าถึงได้โดยตรงและไม่สามารถทำการไฮไลต์ได้ คุณต้องดึงคำก่อนเคอร์เซอร์ด้วยตัวคุณเองและตรวจคำสะกดคำแยกกัน โชคดีที่มีspellbadword()ฟังก์ชั่นดังกล่าว ต่อไปนี้ตั้งค่าทริกเกอร์สำหรับแต่ละคีย์ที่แทรกซึ่งตรวจสอบคำสุดท้าย:

autocmd CursorMovedI * if &spell && spellbadword(matchstr(strpart(getline('.'), 0, col('.') - 1), '\S\+\s$') )[1] ==# 'bad' | execute "normal! \<C-\>\<C-n>\<Esc>" | endif

แทนที่จะส่งเสียงบี๊บ (ผ่าน:normal! <Esc>) คุณสามารถเรียกใช้เครื่องมือภายนอกผ่านทางsystem()ที่เล่นเสียงสั้น ๆ นั่นจะช่วยหลีกเลี่ยงปัญหาใน<Esc>การหยุดเลื่อนเคอร์เซอร์ซึ่งบางครั้งฉันเคยเห็นเกิดขึ้น


มันสมบูรณ์แบบ! มันเพิ่มความล่าช้าเล็กน้อยในการกดสเปซบาร์ (เมื่ออยู่หลังคำ) แต่ก็ไม่เพียงพอที่จะเป็นเรื่องใหญ่และแน่นอนว่ามันจะเกิดขึ้นเมื่อเปิดใช้งานการตรวจการสะกดคำเท่านั้น สำหรับเสียงบี๊บฉันได้สร้างสคริปต์ที่ทำงานmplayer -really-quiet $SOUNDFILE >/dev/null 2>&1 &และนำไปใช้ในการดำเนินการ
Soren Bjornstad

1
ขอบคุณ! คุณสามารถเพิ่มเพิ่มเติมif &spell && spellbadword(...)เพื่อปิดการใช้งานแม้คำที่ได้รับในกรณีที่การตรวจสอบการสะกดถูกปิด
Ingo Karkat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.