Як я можу отримати звук термінального дзвоника vim, коли я неправильно написав слово?


17

Я роблю неабияку транскрипцію, в якій я набираю зі швидкістю 100+ в хвилину, не дивлячись на екран. Я думаю, було б корисно, якби vim міг дати мені якусь звукову сигнальну сигналізацію, якщо перевірка орфографії тільки що позначила останнє слово (ймовірно, це означає, що я зробив помилку на друк і повинен ще раз перевірити те, що я написав).

Перевірка орфографії напевно може виділити синтаксичні слова, які неправильно написані, як тільки я потрапляю на пробіл. Як це працює? Чи є спосіб запустити якусь команду одночасно?

Я завжди використовую vim в терміналі; Зараз у мене немає звукового сигналу дзвінка терміналу, але якщо це найпростіший спосіб зробити це, я, ймовірно, можу це зробити.


Питання в стороні, чи дійсно ви хочете, щоб ваш текст було перервано, щоб виправити слово? Чи не будете ви швидшими, якщо спочатку закінчите написання, а потім пройдете помилки, наприклад, командою "перейти до наступного неправильно написаного слова"?
Шахбаз

Моя мотивація виглядає приблизно так: як я зазвичай набираю текст, я можу сказати, коли я чітко набрав слово правильно, але іноді я набираю слово і знаю, що я його трохи переграв, але все ж є шанс, що я отримав це правильно. Якщо це не звучить, то я знаю, що я зрозумів це правильно, і можу продовжувати, не переживаючи про це; в іншому випадку я ^ W над ним і спробуйте ще раз. Це, правда, справедливе питання - напевно, варто придумати кілька різних підходів і побачити, що відбувається.
Сорен Бьорнстад

2
Гаразд, як ви це зробите, це, мабуть, було б більш ефективно. Якби звуковий сигнал "змусив вас виглядати", це, ймовірно, сповільнило б вас, але якщо ви будете відповідати на звуковий сигнал автоматичним ^ W, навіть не дивлячись на екран, це має бути настільки ж швидко. Але будьте обережні, якщо ваш мозок сприймає звуковий сигнал після того, як ви почали вводити наступне слово, ^ W видалить неправильне слово. У такому випадку ви навіть можете подумати викинути всі вставлені символи після звукового сигналу, поки не буде натиснуто ^ W, так що ви можете сміливо знати, що ^ W видалив неправильно написане слово, і вам доведеться продовжувати звідти.
Шахбаз

Відповіді:


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(...)щоб вимкнути навіть пошук слова, якщо перевірка орфографії вимкнена.
Інго Каркат
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.