В этом разделе я опишу настройку различных программ
для работы с кириллическими текстами. Этот раздел не охватывает
текстовые процессоры, настройка которых описывается позже
(смотри раздел
Текстовые процессоры)
Для проверки правописания я использую программу GNU ispell
.
Она имеет очень гибкие настройки и возможности для расширения.
Ее можно использовать при проверки правописания текстов,
написанных на языках, отличных от английского, путем добавления
новых словарей.
Словарь Константина Книжника
Константин Книжник создал очень хороший русский словарь для
ispell
. Вы можете найти его на
домашней страничке К.Книжника.
В поставку словаря включен полезный скрипт, обеспечивающий
инкрементный режим проверки правописания слов для emacs
.
В идеальном случае, когда ваш ispell
установлен правильно, вам
надо только создать словарь, используя команды, обеспечиваемые
файлом Makefile
из дистрибутива. Однако с некой долей вероятности
у вас возникнут проблемы с ispell
, который откажется понимать
8-ми битные данные. Это означает, что в вашей системе ispell
скомпилирован без поддержки 8-ми битных символов. В этом случае вам
не удастся избежать перекомпиляции пакета ispell
.
Если у вас все нормально, то можете инициировать проверку
правописания для русских текстов путем вызова программы ispell
с опцией '-d russian'
Если вы используете Emacs (подробнее в разделе
Emacs), то, вероятно, вы не против
добавить пункт в меню для проверки с русским словарем.
Константин Книжник советует выполнить следующие действия:
Чтобы иметь возможность переключить
запускаемый EMACS'ом ISPELL на использование русского словаря, можно
попробовать добавить в .emacs
следующие строки
(setq ispell-dictionary-alist (cons
'("russian" ; make russian selectable
"[\xc0-\xdf\xe0-\xff]" "[^\xc0-\xdf\xe0-\xff]" "[']"
nil ("-B" "-d" "russian") nil) ispell-dictionary-alist))
(setq ispell-menu-map-needed t)
(setq ispell-menu-map nil)
(load "ispell") ; reload ISPELL
Необходимые действия уже содержатся в cyrconf.el
в директории emacs,
поэтому в случае использование нижеследующего включать их в .emacs
не нужно.
Словарь Александра Лебедева
Более правильным (с точки зрения способа создания), чем
словарь Книжника,
является "Словарь русского языка для ispell"
Александра Лебедева.
Словарь постоянно совершенствуется, дополняется и корректируется.
Последнюю версию словаря можно найти на сервере:
mch5.chem.msu.su
Я использую именно этот словарь.
Есть две версии редактора Emacs -- GNU Emacs
и XEmacs
.
Они обеспечивают более или менее сходный набор функций
и возможностей, но при этом реализация некоторых деталей расходится
довольно сильно.
Настройка кириллицы требует некого низкоуровневого (в духе Emacs Лиспа)
"хака" и немного отличается для этих двух реализаций.
Минимальная поддержка кириллицы в 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 таблицы.
Однако этого не достаточно. Emacs обрабатывает
кириллические символы как специальные и, как следствие, не распознает
границы русских слов и не делает различия между строчными и
заглавными буквами. Чтобы обойти это, вам следует несколько модифицировать
таблицы синтаксиса и регистра emacs:
(require 'case-table)
(let* ((ruc "\341\342\367\347\344\345\263\366\372\351\352\353\354\355\356\357\360\362\363\364\365\346\350\343\376\373\375\370\371\377\374\340\361")
(rlc "\301\302\327\307\304\305\243\326\332\311\312\313\314\315\316\317\320\322\323\324\325\306\310\303\336\333\335\330\331\337\334\300\321")
(i 0)
(len (length ruc)))
(while (< i len)
(modify-syntax-entry (elt ruc i) "w ")
(modify-syntax-entry (elt rlc i) "w ")
(set-case-syntax-pair (elt ruc i) (elt rlc i) (standard-case-table))
(setq i (+ i 1))))
Для этого был создан файл rusup.el
, который содержит эти команды,
также как и пару других удобных функции. Вы должны вызвать его в
вашем ~/.emacs
.
Обратите внимание на пакет
russian.el, созданный Валерием Алексеевым (valery@math.uga.edu
),
который позволяет пользователю переключаться между кириллическим и
стандартным модами ввода и преобразовывать текстовый буфер из
одной русской кодировки в другую (это очень полезно для чтения текстов,
импортированных из MS-DOS или Windows).
ВНИМАНИЕ: Помимо описанной выше настройки, существует
альтернативный путь обучения обоих версий emacs кириллице. Для
этого используется MULE
(MULtilanguage Emacs support).
Для настройки кириллицы через MULE
берем iso8859-5
шрифты
(см. раздел
Где взять шрифты для X-window?),
подключаем их к иксам, и выбираем в меню Mule
нужную кодировку.
Этот способ является более "идеологически" правильным.
Совет: При работе с X-window для Emacs, вероятно, лучше
всего подойдут шрифты lucidatypewriter
из коллекции шрифтов Болховитянова
(См. раздел
Cyr-RFX).
Редактор 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.
Вперед
Назад
Содержание