В этом разделе я опишу настройку различных программ для работы с кириллическими текстами. Этот раздел не охватывает текстовые процессоры, настройка которых описывается позже (смотри раздел Текстовые процессоры)
Для проверки правописания я использую программу GNU ispell
.
Она имеет очень гибкие настройки и возможности для расширения.
Ее можно использовать при проверке правописания текстов,
написанных на языках, отличных от английского, путем добавления
новых словарей.
Константин Книжник создал очень хороший русский словарь для
ispell
. Вы можете найти его на
домашней страничке К.Книжника.
В поставку словаря включен полезный скрипт, обеспечивающий
инкрементный режим проверки правописания слов для emacs
.
В идеальном случае, когда ваш ispell
установлен правильно, вам
надо только создать словарь, используя команды, обеспечиваемые
файлом Makefile
из дистрибутива. Однако с некой долей вероятности
у вас возникнут проблемы с ispell
, который откажется понимать
8-ми битные данные. Это означает, что в вашей системе ispell
скомпилирован без поддержки 8-ми битных символов. В этом случае вам
не удастся избежать перекомпиляции пакета ispell
.
Если у вас все нормально, то можете инициировать проверку
правописания для русских текстов путем вызова программы ispell
с опцией '-d russian'
Более правильным (с точки зрения способа создания), чем словарь Книжника, является "Словарь русского языка для ispell" Александра Лебедева.
Словарь постоянно совершенствуется, дополняется и корректируется. Последнюю версию словаря можно найти на сервере: mch5.chem.msu.su
Я использую именно этот словарь.
Есть две версии редактора Emacs -- GNU Emacs
и XEmacs
.
Они обеспечивают более или менее сходный набор функций
и возможностей, но при этом реализация некоторых деталей расходится
довольно сильно.
Для настройки старых версий Emacs следует посмотреть
изначальный "Cyrillic HOWTO" от Беликова -- дословный перевод
можно найти на моей страничке:
www.inp.nsk.su/~baldin
в разделе Cyrillic HOWTO (old rus)
.
Существует масса способов кириллизации Emacs -- в основном
эти способы требуют некоего низкоуровневого (в духе Emacs Лиспа)
"хака". Более "идеологически" правильным способом
является настройка с использованием MULE
(MULtilanguage Emacs support) --
раздел
MULE.
Совет: При работе с X-window для Emacs, вероятно, лучше
всего подойдут шрифты lucidatypewriter
из коллекции шрифтов
Болховитянова Cyr-RFX
(См. раздел
Cyr-RFX).
MULE -- "MULtilanguage Emacs support" -- это подсистема Emacs, которая создана для возможности использования в этом редакторе различных языков. Основным толчком для развития MULE послужило желание использовать китайские/японские и тому подобные языки -- с этим, говорят, проблем нет, а вот по поводу использования кириллицы мало что известно -- попробуем разобраться.
Для правильной работы с емаксом надо всего-то
Далее:
Mule,Set Font/Fontset, Fontset
и выбираем standard
. Зачем? Fontset
-- это набор
шрифтов, который емакс себе при загрузке подбирает.
Причем startup подбирается с тем расчетом чтобы
для каждого шрифта из Fontset'а
имелись italic и
bold варианты, а standard подбирается так, чтобы
в Fontset'е
имелось как можно больше различных
кодировок. Естественно весь этот процесс кастомизируется
в ~/.emacs
.
(describe-input-method "cyrillic-jcuken") (set-language-environment "cyrillic-koi8") (set-default-font "-*-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-standard")
Mule,Set Language Environment, Cyrillic
и устанавливаем один из 3-ёх вариантов. Какой -- по
большому счету без разницы. Это будет влиять только
на общение емакс'а с внешним миром -- если поставим
Cyrillic-ISO
, то текст будет сохраняться в ISO и в
буфер обмена будет копироваться текст в кодировке
ISO. То же самое с KOI8.
C-\
.
Для изменения переключателя, вероятно, надо покопаться в районе
функций global-set-key
или
set-keyboard-coding-system
(не проверялось).По умолчанию обычно выбираются совершенно неюзабельные шрифты. Например, в дистрибутиве Mandrake 7.0 после, описанных выше, телодвижений при вводе текста получается нечто непотребное.
Если у вас уже установлены Cyr-RFX (См. раздел Cyr-RFX):
(create-fontset-from-fontset-spec "-b&h-*-medium-r-*-*-14-*-*-*-*-*-fontset-vasja, latin-iso8859-1:-b&h-*-medium-r-*-*-14-*-*-*-*-*-iso8859-1, latin-iso8859-15:-b&h-*-medium-r-*-*-14-*-*-*-*-*-iso8859-15, cyrillic-iso8859-5:-b&h-*-medium-r-*-*-14-*-*-*-*-*-iso8859-5" t)
C-x C-e
выполнив введенный ранее куск кода.
(set-default-font "-b&h-*-medium-r-*-*-14-*-*-*-*-*-fontset-vasja")и опять-таки выполните этот код, нажав комбинацию клавиш
C-x C-e
(не забудьте, что курсор должен находиться за последней
закрывающей скобкой)
~/.emacs
, чтобы они выполнялись
при каждом
запуске emacs'а.
(set-language-environment "Cyrillic-KOI8")
Добавление: Мой ~/.emacs
выглядит следующим образом
(у меня установлен пакет Cyr-RFX -- раздел
Cyr-RFX):
;;русификация через mule - переключалка "Ctrl+\" ;; Переключение в русский регистр в самом начале ;;(set-input-method "cyrillic-jcuken") ;;(describe-input-method "cyrillic-jcuken") (set-language-environment "cyrillic-koi8") ;; размер 18 -- у меня относительно большой монитор 17' -- можно поставить 14 (create-fontset-from-fontset-spec "-b&h-LucidaTypewriter-medium-r-*-*-18-*-*-*-*-*-koi8-1, latin-iso8859-1:-b&h-*-medium-r-*-*-18-*-*-*-*-*-iso8859-1, latin-iso8859-15:-b&h-*-medium-r-*-*-18-*-*-*-*-*-iso8859-15, cyrillic-iso8859-5:-b&h-*-medium-r-*-*-18-*-*-*-*-*-iso8859-5" t) (set-default-font "-b&h-LucidaTypewriter-medium-r-*-*-18-*-*-*-*-*-koi8-1")
В консоле при загрузке Emacs выдаётся ошибка -- кусок со шрифтами надо как-то научиться пропускать при работе в консоле и загружать в X-Window. Не понятно как переделать расскладку клавиатуры.
Поддержка кириллицы без MULE -- совместимость между версиями не гарантируется.
Минимальная поддержка кириллицы в GNU emacs
(вам не нужно
этого делать при настройке XEmacs
) обеспечивается при
выполнении следующих вызовов, добавленных в .emacs
(при условии,
что поддержка символов кириллицы установлена для консоли или для
X Window соответственно):
(standard-display-european t) (let ((m (current-input-mode))) (set-input-mode (car m) (nth 1 m) 1))
Это позволит вам видеть и вводить символы, находящиеся в верхней части ASCII таблицы.
Андрей Ёлкин (
Andrei Elkin) предлагается простой вариант `русификации'
emacs c использованием
однобайтового представления символов в буферах редактора. Причем
флаг --unibyte
при вызове редактора указывать не обязательно.
Чтобы вводимая кириллица отображалась и нам всё ещё не нужен unicode
(standard-display-european t)
, не хватает в emacs важной
малости -- syntax table
для unibyte mode
Собранный пакет можно найти на
linux-ink.ru/pub/) -- следует взять файл
emacs-unibyte-cyr-*.rpm
.
Иначе можно просто взять
этот файл отсюда:
http://www.inp.nsk.su/~baldin/misc/koi8-r.el
и положить его куда-нибудь в
/usr/share/emacs/site-lisp)
И прописать ~/.emacs
;; minimal cyrillic - unibyte & koi8r ( ; но-икс в икс-тэрм (let (this-input-mode (current-input-mode)) (set-input-mode (elt this-input-mode 0) (elt this-input-mode 1) 0 (elt this-input-mode 3)))) (standard-display-european t) ; roughly equal to --unibyte flag (set-language-info "Cyrillic-KOI8" 'unibyte-syntax "koi8-r") (setup-cyrillic-koi8-environment) ; по умолчанию
От Владимира Дмитриева ( Vladimir Dmitriev):
Это для консоли, для X в принципе то же самое.
(require 'oc-unicode) (require 'cyril-util) (set-language-environment 'cyrillic-koi8) (set-terminal-coding-system 'utf-8)
Если не нужен unicode, то в принципе можно обойтись следующим (HЕ проверено):
(require 'cyril-util) (set-language-environment 'cyrillic-koi8) (set-terminal-coding-system 'koi8-r)
Редактор vi
(по крайней мере, его клон vim
, присутствующий
в большинстве дистрибутивов Linux) знает о существовании 8-ми битных
символов. Это дает вам возможность вводить кириллические буквы. Редактор
правильно распознает границы слов.
Насколько я понимаю, vim
использует locale для преобразования
букв из строчных в заглавные и обратно, т.е. на всех встреченных мной
unix-like системах vim
правильно работал с русским языком после
настройки locale (Как настроить локаль смотрите раздел
Настройка локали).
Для того, чтобы постоянно не переключаться в командном режиме между
английскими и русскими буквами, необходимо выполнить мапирование русских букв
в английские -- либо (в старых версиях vim
или vi
) через команду
map для каждой буквы, либо (в новых версиях vim
) через
опцию langmap. Последнее делается
добавлением в ваш ~/.vimrc
, или в общесистемный
vimrc, двух строк:
set langmap=ж;; set langmap=ё`,йq,цw,уe,кr,еt,нy,гu,шi,щo,зp,х[,ъ],фa,ыs,вd,аf,пg,рh,оj,лk,дl,э',яz,чx,сc,мv,иb,тn,ьm,б\,,ю.,Ё~,ЙQ,ЦW,УE,КR,ЕT,HY,ГU,ШI,ЩO,ЗP,Х{,Ъ},ФA,ЫS,ВD,АF,ПG,РH,ОJ,ЛK,ДL,Ж:,Э\",ЯZ,ЧX,СC,МV,ИB,ТN,ЬM,Б<,Ю>
Подробности -- в :help langmap
.
Все проблемы joe можно решить, правильно настроив locale (См. раздел Настройка локали), если он правильным образом "пропатчен". Если у вас ничего не получилось, то попробуйте рецепт, описанный ниже.
Для того, чтобы распознавать 8-ми битные символы, joe
требует
специальную опцию -asis
. Вы можете указать ее в командной
строке или вставить в файл ~/.joerc
для личного пользования,
или в /usr/lib/joerc
для настройки всей системы.
joe, который входит в более-менее современные дистрибутивы
(BCL 6.2, RH 5.2-6.1; FreeBSD) правильно распознаёт границы
русских слов. А для
преобразования регистра man joe
советует ^K /
-- фильтровать
блок через tr, т.е. все сводится к работе tr.