Как я могу исправить ошибки правописания Vim быстрее? - PullRequest
31 голосов
/ 15 марта 2011

Мой обычный рабочий процесс Vim:

  • В режиме вставки введите что-то не так.

    Vim spell

  • Нажмите ^X s, чтобы получить несколько предложений.

    Vim screen

  • Нажмите Esc, чтобы принять первое.

После этого я нахожусь в командном режиме в середине строки, а не в режиме вставки, в котором я был раньше.Я мог бы использовать A, но это работает, только если я печатал в конце строки.Есть ли альтернативный способ?Оптимально, я хотел бы, чтобы команда исправляла последнюю ошибку к первому предложению, не перемещая курсор.

Ответы [ 6 ]

27 голосов
/ 10 мая 2013

Улучшение ответа PDug: чтобы сделать исправление орфографии отменяемым отдельно от вставок, используйте это:

imap <c-l> <c-g>u<Esc>[s1z=`]a<c-g>u

<c-g>u вставляет отмену-разрыв
Остальное то же самое.1006 *

Таким образом, если вам не нравится выбранная коррекция, вы можете отменить ее, используя <Esc>u.Без отмены, это отменило бы полную вставку.Обратите внимание, что отмена в конце сопоставления гарантирует, что текст, добавленный после исправления, можно отменить отдельно от самого исправления.

Кроме того, я счел удобным сопоставить это с CTRL + F (который легко доступен) как в режиме вставки, так и в обычном режиме, например:

imap <c-f> <c-g>u<Esc>[s1z=`]a<c-g>u
nmap <c-f> [s1z=<c-o>

Таким образом, вы можете быстро исправить последнюю ошибку (относительно курсора).

23 голосов
/ 15 марта 2011

Это работает довольно хорошо:

imap ^L <Esc>[s1z=`]a

[s перемещается к последней орфографической ошибке
1z= выбирает первое предложение
`] перемещается к последней точке вставки
a добавить текст

9 голосов
/ 15 марта 2011

Я не могу предложить «оптимальное» решение (хотя я подозреваю, что есть способ).

Однако вы можете использовать g i для входавставить режим в том месте в файле, где вы в последний раз оставили его.(help gi объясняет это более красноречиво).

2 голосов
/ 15 марта 2011

Я исправил это с помощью следующего переотображения в моем .vimrc.

imap <F2> <Esc>mti<C-X>s<Esc>`tla

Нажмите F2 в режиме вставки, чтобы исправить последнюю ошибку и вернуться в режим вставки, в котором вы находились. Он перезаписывает маркер t.

2 голосов
/ 15 марта 2011

Вы можете использовать Ctrl + Y , чтобы принять элемент во всплывающем меню.Смотри :help complete_CTRL-Y.

0 голосов
/ 11 апреля 2018

Я создал плагин только для этого варианта использования https://github.com/arecarn/vim-spell-utils

Он обеспечивает отображение режима вставки CTRL-A, которое выполняет именно то, что было запрошено, и исправляет последнее неправильное написание с 1-м предложением, а затем возвращается в режим вставки, в котором вы остановились в последний раз. Он также учитывает изменения длины строк из-за исправления орфографии, в то время как gi и `] этого не делают.

...