Автовиправлення орфографічних помилок


19

Я включив перевірку орфографії

:set spell spelllang=en_us

Тепер я можу виправити написання слова, ввівши 1z=(тобто виберіть 1корекцію написання st ( z=)).

Як я можу змусити це автоматично запускати попереднє слово кожного разу, коли я ввожу пробіл, без затримок? Він також намагається «виправити» слова, які вже написані правильно (саме тому я не можу зробити щось на кшталт inoremap <space> <esc>mmb1z=`ma<space>), тому я хочу лише виправити кожне слово, яке я вводя, якщо воно написане неправильно .

Чи є спосіб виправити неправильно написані слова у Vim?


2
Дивіться це
Артуро Вольпе

1
@ArturoVolpe Це здається законною відповіддю на питання.
bsmith89

ви могли б поєднати попередню помилку '[s' у перезаписі? Я б додав як відповідь, але не знаю, як зробити перезапис, тому я залишу це для когось іншого.
Нік Дж. Адамс

Відповіді:


8

Я б рекомендував не автоматично виправляти кожне слово, позначене неправильно, з двох причин.

  • По-перше, ви отримаєте багато помилкових позитивних речей щодо речей, які ви хотіли набрати, особливо в технічному написанні. Ви, звичайно, можете (і, можливо, повинні) додати ці два свої словники, щоб вони були розпізнані та запропоновані. Однак, якщо ви не помітили , що вони autocorrected, вони можуть проскочити до остаточної версії документа або гірше, якщо ви пишете код або файл конфігурації (наприклад, зміни xminв minб граф вид повністю неправильно). Коментарі також можуть стати дивними (наприклад, я змінив "Інструкцію щодо мітки та нуля" на "Настанова мітки та зведення нанівець", яка змінює значення (а) з іменникової фрази на імператив та (б) на щось зовсім інше. )
  • По-друге, автоматичне виправлення є досить бідним на коротких словах. На мій досвід, воно, як правило, завершує найближче слово, яке, наприклад, з трьох букв, може бути абсолютно відмінним від того, що ви маєте на увазі. Якщо ви маєте в виду типу з але випадково типу Ф.О. , це буде виправлено в декількох -Не то , що ви хотіли! Знову ж таки, це може бути важко впіймати у побіжному перегляді.

Зважаючи на це, я думаю, що ваша реальна мета - це можливість швидко розпізнавати та виправляти друкарські помилки.

Для цього я використовую такі відображення:

" Go back to last misspelled word and pick first suggestion.
inoremap <C-L> <C-G>u<Esc>[s1z=`]a<C-G>u

" Select last misspelled word (typing will edit).
nnoremap <C-K> <Esc>[sve<C-G>
inoremap <C-K> <Esc>[sve<C-G>
snoremap <C-K> <Esc>b[sviw<C-G>

Коли я набираю текст тіла, будь-які неправильно написані слова будуть підкреслені відповідно до моїх налаштувань виділення. Якщо я бачу, що слово відносно довге і це простий друкарський spellпомилок, то я можу зрозуміти, що , ймовірно, це буде правильно виправлено, тому я натискаю <C-L>і просто продовжую набирати текст. Якщо це коротше слово або я передбачаю, що воно буде неправильним, я можу сам натиснути <C-K>і відрегулювати його. Нарешті, якщо spellнесподівано виправляється неправильна річ, я встановив маркер скасування <C-G>u, тому я можу просто <Esc>ucWзмінити його вручну. Це робить дуже швидким робочий процес більшу частину часу.


Автоматичне закріплення кожного слова - відмінна ідея .
Багатий

2

Випадково я написав плагін, який робить саме це. Це називається Vim You, Autocorrect!

Після встановлення введіть його, :EnableAutocorrectщоб увімкнути його в будь-якому буфері, і незабаром ви побачите, що скандалінг wchargin досить необгрунтований.


Зауважте, що ваш коментар до відповіді wchargin позначений як грубий, я відредагував його, щоб видалити "Poppycock!" і відпустив прапор. Не велика справа, просто FYI.
Мартін Турноїй

@MartinTournoij Це добре. Багато людей на reddit жарт не отримали . :) (Спасибі за голову вгору.)
Багатий

Містер Річ, який пакет я хочу встановити та введіть: EnableAutoCorrect я не розумів
MP Creations

@MPCreations Чи використовуєте ви менеджер плагінів?
Багатий

@MPCreations Можливо, подивіться на відповіді на vi.stackexchange.com/questions/613/…, якщо ви не знаєте, як встановити плагін
Rich
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.