Проверка орфографии на двух языках с aspell
Опубликовано 29.01.2024 в OpenBSD
Любопытство до добра не доведет. Много раз в этом убеждался и всё равно не поумнел. Скажем, вот уже много-много лет я пользовался редактором vim, привык, освоил, руки под него, можно сказать, искривил, конфиг с годами выстрадал. Даже когда родитель и ключевой разработчик vim Брам Моленар (он написал более 3,5 миллионов строк кода оного vim, чуть ли не больше всего остального комьюнити вместе взятого) внезапно помер - я не присоединился к кричащим "всё пропало!". Да что там, даже когда Брам Моленар хуже, чем помер - выступил в поддержку скакуасов и укронацистов - я не сдавался. Просто брезгливо перелез на neovim, где до такого не опускались, да и lua выглядит куда привлекательнее в качестве встроенного скриптового языка.
Но любопытно же, зараза, что там люди нового-то изобретают для редактирования текста. Вот услышал где-то мельком про редактор micro, поставил, потюнил... да и приглянулся мне он чем-то. Шустрый, резкий, вроде всё необходимое под рукой и даже какая-никакая экосистема плагинов зарождается (и снова на lua). Присутствует на зеркалах OpenBSD в качестве бинарного пакета и в портах. В общем, не буду растекаться мыслью про этот micro, благо по нему есть документация и по его плагинам тоже.
Вот, скажем, проверка орфографии реализована плагином aspell - оный плагин устанавливается так:
$ micro -plugin install aspell
Естественно, требуется наличие самого aspell и русского словаря для него (английский с ним идет из коробки), в OpenBSD оно устанавливается вот так:
# pkg_add aspell aspell-ru
Ну а далее запускаем редактор micro и в командном его режиме (Ctrl-e) пишем: set aspell.check on
, для выбора языка set aspell.dict ru
(доступны также варианты словарей с "Ё" - ru-yo, без оной - ru-ye, и оба варианта сразу - ru-yeyo).
А для удобства управления этим делом с клавиатуры, настроим сочетания клавиш для включения/отключения проверки, добавления незнакомого слова в пользовательский словарь и выбора предлагаемого варианта автозамены слова под курсором. Для этого в ~/.config/micro/bindings.lua впишем что-нибудь на ваш вкус, например:
{
"Alt-d": "lua:aspell.addpersonal",
"Alt-s": "lua:aspell.togglecheck",
"Alt-/": "lua:aspell.acceptsug"
}
Теперь, собственно, о сабже: а как же нам сделать так, чтоб в режиме проверки орфографии использовалось сразу два словаря: русский и английский? Из коробки aspell вроде бы так не умеет. Точнее, aspell-то умеет, он тупенькая искалка по любому подсунутому словарю - словарь нужен! И мы не можем ждать милостей от природы, мы сделаем его своими руками вот так:
su
cd /tmp
mkdir aspell_ruen
cd ./aspell_ruen
cp /usr/local/lib/aspell/en.dat /tmp/aspell_ruen/
cp /usr/local/lib/aspell/ru.dat /tmp/aspell_ruen/
grep '^special' en.dat >>ru.dat
aspell dump master en >w.en
aspell dump master ru-yeyo >w.ru
cat ./w.ru ./w.en >w.all
aspell --lang=ru --encoding=UTF-8 create master ruen.rws < w.all
cp ./ru.dat /usr/local/lib/aspell/
echo "add ruen.rws" > /usr/local/share/aspell/ru.multi
И вроде бы всё, если я ничего не забыл. Чудесным образом, у нас теперь будет работать проверка орфографии сразу на русском и английском! По крайней мере У Меня Всё Работает.