Автозамена орфографических ошибок

19

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

:set spell spelllang=en_us

Теперь я могу исправить написание слова, набрав 1z=(то есть выбрать 1исправление орфографии st z=) ( ).

Как я могу сделать так, чтобы это автоматически запускалось на предыдущем слове при вводе пробела без каких-либо задержек? Он также пытается «исправить» слова, которые уже написаны правильно (именно поэтому я не могу сделать что-то подобное inoremap <space> <esc>mmb1z=`ma<space>), поэтому я хочу исправлять каждое слово, которое я набираю, если оно написано с ошибкой .

Есть ли какой-нибудь способ исправить слова с ошибками в Vim?

Дверная ручка
источник
2
Посмотрите это
Arturo Volpe
1
@ArturoVolpe Это похоже на законный ответ на вопрос.
bsmith89
не могли бы вы объединить предыдущую ошибку '[s' в перекодировке? Я бы добавил в качестве ответа, но не знаю, как сделать переназначение, поэтому я оставлю это кому-то еще.
Ник Дж. Адамс

Ответы:

8

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

  • Во-первых, вы получите много ложных срабатываний о вещах, которые вы намеревались напечатать, особенно при более техническом написании. Вы, конечно, можете (и, возможно, должны) добавить эти два словаря, чтобы они были распознаны и предложены. Однако, если вы не заметите, что они автоматически исправлены, они могут проскользнуть в окончательную версию документа - или, что еще хуже, если вы пишете код или файл конфигурации (например, изменение xminна minзаставит график выглядеть полностью). неправильно). Комментарии также могут стать странными (например, «Метка и недействительная инструкция» была изменена на «Метка и аннулированная инструкция», что меняет значение (a) с существительной фразы на императив, а (b) означает что-то совершенно иное. )
  • Во-вторых, автозамена довольно плоха в коротких словах. По моему опыту, оно имеет тенденцию заканчиваться самым близким словом, которое, например, с помощью трехбуквенных слов, может полностью отличаться от того, что вы имеете в виду. Если вы имеете в виду типа из но случайно типа Ф.О. , это будет исправлено в нескольких -Не то , что вы хотели! Опять же, это может быть трудно поймать в поверхностных пересмотрах.

Имея это в виду, я думаю, что ваша реальная цель - быстро распознать и исправить опечатки.

Я использую следующие сопоставления для достижения этой цели:

" 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изменить его вручную. В большинстве случаев это обеспечивает очень быстрый рабочий процесс.

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

Случайно я написал плагин, который делает именно это. Это называется Vim You, автозамена!

После установки наберите его, :EnableAutocorrectчтобы включить его в любом буфере, и вскоре вы увидите, что запугивание wchargin совершенно необоснованно.

Богатый
источник
Обратите внимание, что ваш комментарий к ответу wchargin помечен как грубый, я отредактировал его, чтобы удалить "Poppycock!" и распустил флаг. Ничего страшного, просто к вашему сведению.
Мартин Турной
@MartinTournoij Все хорошо. Многие люди на Reddit также не поняли шутку . :) (Спасибо за внимание, хотя.)
Рич
Г-н Рич, какой пакет я хочу установить, и введите: EnableAutoCorrect, я не понял
создание MP
@MPCreations Вы используете менеджер плагинов?
Богатое
@MPCreations Может быть, посмотрите на ответы на vi.stackexchange.com/questions/613/… если вы не знаете, как установить плагин
Rich