11
июля
0

Проверка орфографии в Vim



Начиная с версии 7.0 в редакторе Vim появилась встроенная проверка орфографии, что часто бывает очень нужным и полезным. Например, если Vim является редактором писем в почтовом клиенте, да и вообще в работе с любым текстовым файлом.

По умолчанию при запуске Vim проверка орфографии выключена, т.е. установлено «setlocal nospell» или «setlocal spell spelllang=», что конечно же можно изменить, задав нужные настройки в файле конфигурации vimrc. Удобно будет создать всплывающее меню для переключения/выключения проверки орфографии конкретных языков с помощью возможности биндинга клавиш, например, используя и для управления выбором в vimrc прописываем:

set wildmenu
set wcm=
menu SpellLang.RU_EN  :setlocal spell spelllang=ru,en
menu SpellLang.off :setlocal nospell
menu SpellLang.RU :setlocal spell spelllang=ru
menu SpellLang.EN :setlocal spell spelllang=en
map  :emenu SpellLang.

Проверяемый язык задается аббревиатурой и указанием региона через нижнее подчеркивание (например, ru_ru, ru_yo, en_us, en_au), если регион не указан, то используются все (например, ru, en). Также можно одновременно указать несколько языков через запятую, для проверки многоязычного документа.

Для проверки правописания в системе (либо домашнем каталоге пользователя в ~/.vim/spell) должен существовать словарь соответствующего языка для нужной кодировки. Словарь для английского языка обычно уже доступен в системе после установки Vim в директории /usr/local/share/vim/vim73/spell/ (для FreeBSD); туда же можно положить другие словари, если нужно, чтобы они были доступны всем пользователям системы. Требуемый словарь можно скачать самостоятельно с ресурса ftp://ftp.vim.org/pub/vim/runtime/spell/ или получить при первой проверке орфографии. После ввода в командном режиме редактора «setlocal spell spelllang=ru» (проверка орфографии русского языка) будет создана директория для словарей, если ее не существует, и загружены соответствующие файлы словаря русского языка для текущей кодировки символов:

Shall I create ~/.vim/spell

Cannot find spell file for "ru" in utf-8
Do you want me to try downloading it?

Downloading ru.utf-8.spl...
:!curl 'http://ftp.vim.org/pub/vim/runtime/spell/ru.utf-8.spl'
-o '/tmp/vMcyt47/0.spl'
% Total    % Received % Xferd  Average Speed  Time  Time Time Current
Dload  Upload   Total   Spent    Left  Speed
"/tmp/vMcyt47/0.spl" [noeol] 1280L, 837741C
In which directory do you want to write the file:
1. ~/.vim/spell
"~/.vim/spell/ru.utf-8.spl" [New] 1280L, 837742C written
Do you want me to try getting the .sug file?
This will improve making suggestions for spelling mistakes,
but it uses quite a bit of memory.

Downloading ru.utf-8.sug...
:!curl 'http://ftp.vim.org/pub/vim/runtime/spell/ru.utf-8.sug'
-o '/tmp/vMcyt47/0.sug'
% Total    % Received % Xferd  Average Speed  Time  Time  Time Current
Dload  Upload   Total   Spent    Left  Speed
"~/.vim/spell/ru.utf-8.sug" [New] 22937L, 3568429C written
Press ENTER or type command to continue 

Если требуемый словарь доступен, то после включения правописания слова с ошибками будут выделены красным фоном, также выделяются синим те, которые написаны с маленькой буквы в начале предложения. Также Vim может предложить возможные правильные варианты написания, добавить слово в словарь или пометить как ошибочное.

Клавиши для перемещения по словам с ошибками:

]s — установить курсор на следующее выделенное слово;
[s — установить курсор на предыдущее выделенное слово.

Клавиши для добавления подсвеченного слова в словарь:

zg — добавляет слово, находящееся под курсором;
zG — то же, что и zg, но слово будет добавлено только для текущей сессии работы;
zw — то же, что и zg, однако слово будет помечено как ошибочно-написанное;
zW — то же, что и zw, однако слово будет добавлено только для текущей сессии работы.

Замечание: Если в визуальном режиме выделить область, включающую больше, чем одно слово, то в словарь будет добавлен весь выделенный текст как одно слово.

Клавиши для отмены добавления слова в словарь:

zug и zuw — отменяет действие zg и zw соответственно;
zuG и zuW — отменяет действие zG и zW соответственно.

z= — является комбинацией клавиш для просмотра/выбора альтернатив слова из словаря. При ее нажатии появляется список с пронумерованным вариантами исправления. После ввода соответствующей цифры изменения будут внесены и слово больше как ошибочное подсвечиваться не будет, либо можно просто вернуться обратно не сделав выбор. Можно без просмотра списка альтернатив сразу заменить слово на то, которое находится под определенным номером, например, для первого варианта написания слова в списке достаточно нажать последовательно комбинацию из трех символов «1z=». Для альтернативы под другим номером следует заменить «1» на требуемое.

Для более комфортной работы полезным будет задать переключение между языками ввода внутри самого редактора помимо системной расскладки клавиатуры. Для этого следует прописать в vimrc:

set keymap=russian-jcukenwin

что даст возможность по нажатию Ctrl+^ (или Ctrl+6) в режиме вставки или командном изменять ввод букв между русскими и латинскими.
Ctrl+n/Ctrl+p позволяет использовать авто-дополнение ключевого слова (также в режиме вставки);

Еще хотелось бы упомянуть на всякий случай клавиши отмены действий:
u – отмена последней команды;
U – отмена изменений во всей строке;
Ctrl+r – отмена отмены.

Понравилась статья?
Подписаться на RSS feed
Оставить комментарий