su13@pochta.ru

| Первый | Второй | Третий | Четвёртый | Пятый | Шестой | Седьмой |


Глава 6

Linux писателю


В свое время юный Карел Чапек спросил своего дядю, известного в те годы писателя: "Как пишутся романы?" — "Сидя, молодой человек!" — ответил тот.

И по сию пору романы, а также рассказы, статьи, эссе, монографии, докладные (и закладные) записки и все прочие тексты пишутся по-прежнему сидя. Правда, обычно за компьютером, а не за листом бумаги. И потому, помимо компьютера, требуют некоторого инструментария — средств для работы с текстами.

Что нужно писателю, чтобы писать

Их (в смысле, средства) можно разделить на две группы: средства для составления текстов — текстовые редакторы, и средства для оформления таковых — текстовые процессоры. В чем разница между ними?

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

На мой взгляд, различие между редакторами и процессорами — чисто формальное: все, что дает на выходе простой текстовый файл (так называемый plain text) — это редактор, тогда как процессор создает текст в собственном (хотя, возможно, и общепринятом) формате, содержащем кроме ASCII-символов всякого рода управляющие и форматирующие коды. Ну а богатство возможностей — это исключительно на совести разработчика.

Из такого определения следует, что текстовые редакторы ориентированы на создание оригинальных содержательных материалов, тогда как процессоры — на их представление. Предвижу возражение: подавляющее большинство тружеников пера (пардон, клавиатуры) использует текстовый процессор (берусь угадать, какой) для обеих целей. По моему мнению, это неправильно: создание оригинальных текстов (если, конечно, они заслуживают этого названия) — процесс, требующий концентрации внимания именно на содержательной стороне дела. Изобилие же всякого рода форматирующих и украшательских опций приводит к попыткам одновременно заниматься и оформительством. Казалось бы, экономия времени, однако обычно это приводит к тому, что как то, так и другое получается скверно. Впрочем, это моя точка зрения, которую я не собираюсь ни доказывать, ни упаси Боже, навязывать.

Работа с текстами подразумевает еще один аспект — языковой. И, соответственно, для нее нужны средства языковой поддержки, то есть ввода символов и их отображения на экране — раз, шрифтового отображения на печати — два. Ну и проверка орфографии вряд ли покажется лишней. Конечно, все мы учились понемногу, но "правильнописание" хромает не у одного Винни-Пуха.

Начнем рассмотрение с тех инструментов, которые представляются более важными. Это текстовые редакторы.

Текстовые редакторы.

Редактор текстов — каким хотелось бы его видеть.

Из данного выше определения редактора следует, что для огромного количества трудящихся это один из основных инструментов. А такой инструмент всегда хочется видеть если не идеальным, то максимально к идеалу приближенным. Каковы же требования к идеальному редактору?

Разумеется, они отличаются для разных задач. Одно дело — редактор для программиста, и совсем другое — для писателя. Все же попробую сформулировать свои представления о редакторе с позиций составления "из головы" длинных структурированных текстов, претендующих на оригинальность и содержательность.

Текстовый редактор, заслуживающий своего имени, кроме ввода букв, в том числе и русских (это важнейшее условие, но о нем — в самом конце), должен обеспечивать:
удобные средства навигации по тексту, как с помощью клавиатуры, так и мыши;
вырезание и вставку текстовых блоков, их перенос между окнами и приложениями;
поиск и замену, в том числе многострочных фрагментов и регулярных выражений;
возможность ввода закладок, особенно важную для длинных сочинений;
проверку орфографии.

Кроме того, для редакторов графического режима необходима настраивае-мость цвета фона и текста, гарнитуры и размера экранных шрифтов — мало радости будет от любых развитых функций, если для рассмотрения их потребуется ломать глаза: ведь представления разработчика о зрительном комфорте не обязаны совпадать с вашими.

Крайне желательны также расцветка синтаксиса, по крайней мере HTML и ТеХ, многооконный режим работы, возможность работы с различными кодировками русского языка, ну и как предел мечтаний — поддержка проектов из нескольких файлов, с доступом к групповым операциям (скажем, поиска и замены) в них.

Должен сразу сказать — хоть "все страны облазил, и в Европе был, и в Азии", идеала своего я пока не нашел. И не только под Linux, но и под Windows. Однако именно с позиций приближения к этому идеалу я и буду описывать ниже текстовые редакторы.

Но сначала пару слов о том, какие они бывают вообще. А бывают они, во-первых, консольные, и, во-вторых, графические (то есть работающие в графическом режиме). С другой стороны, бывают редакторы общего назначения и специализированные, например, редакторы для программистов. Хотя последние подчас могут использоваться и в качестве первых.

Количество текстовых редакторов под Linux достаточно велико. Что же они из себя представляют, для чего предназначены и на что способны?

Чтобы как-то прояснить этот вопрос, я решил провести эксперимент, как обычно, на самом себе. А именно, последовательно загружал каждый из попавшихся под руку редакторов и описывал в нем свои впечатления (о нем же, конечно). Пользуясь в основном базовыми средствами, доступными по умолчанию. При этом я не старался не только описать, но даже постигнуть все потенциальное богатство описываемых систем, а только пытался определить, насколько они удобны для поставленной выше цели.

Начал я, естественно, с редакторов консольных. Почему? — спросите вы меня. Ведь все прогрессивное человечество уже полдесятилетия работает в графических средах.

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

Кроме того, в ряде случаев требуется слегка подправить некий конфигурационный файл. Для чего нелепо вызывать редактор графического режима — ведь на работу в нем уйдет меньше времени, чем на загрузку.

А бывает и хуже: сбой системы просто не позволяет загрузить графический режим до внесения соответствующих исправлений, которые, естественно, можно осуществить только консольным текстовым редактором. Наконец, при совсем уж скверной ситуации, требующей загрузки с дискеты, консольный текстовый редактор — единственно доступный инструмент по определению. Именно поэтому первое, что приходит на ум из консольных редакторов — vi.

vi — классика мира Unix

vi — редактор, в различных своих версиях (Vim, elvis и другие), модификациях и клонах (сохраняющих полную совместимость между собой), представленный абсолютно во всех Unix- и Unix-подобных системах. В большинстве случаев он является системным редактором по умолчанию, а в критических обстоятельствах может оказаться просто единственным инструментом (для той же правки конфигурационных файлов, например).

Поэтому иметь представление о vi необходимо любому пользователю Linux. Хотя назвать его чрезвычайно удобными в использовании я бы не рискнул. От него веет какой-то допетровской Русью. Я понимаю его поклонников — это пользователи Unix старого закала. В те времена былинные, после строчного редактора (помните о таких; в DOS это был ediine, в Unix — просто ed), vi выглядел как шедевр. И те, кто впитал привычку к нему с молоком матери, никогда от него не откажутся. К тому же, как редактор исходных текстов или системных файлов он более чем функционален. Посмотрим же и мы, что это такое.

Основная сложность в освоении vi для человека, привыкшего к редакторам с более или менее, но все же человеческим лицом, является наличие трех режимов: командного, ввода и построчного редактирования. После запуска программы (а это делается просто: vi имя_файла, существующего или нового) перед вами возникает черный экран с тильдами (~) по левому краю каждой строки.

Пользователь DOS, помнящий еще о WordPerfect версий 4 и 5 (прекрасный был, кстати сказать, текстовый процессор), попытается тут же начать ввод текста — и не получит ничего, кроме звукового сигнала, поскольку находится в режиме командном, ввода не допускающем. То есть нажатия на клавиши интерпретируются не как коды букв, а как команды программы.

Для перехода в режим ввода нужно нажать клавишу <А> (от англ. add) или <1> (от англ. insert); первая позволяет добавлять текст после курсора, вторая — вставлять перед ним. Теперь-то можно и печатать буквы, как в любом другом редакторе или процессоре.

Можно также и перемещаться по тексту с помощью клавиш управления курсором. Следует помнить только, что нажатие таких клавиш, как <End> и <Ноте>, не даст привычного для пользователя DOS эффекта. И, более того, автоматически переведет редактор в командный режим. Для всякого рода сложных перемещений (на слово влево и вправо, в начало и конец строки, на стоку вверх и вниз, и т. д.) используются комбинации клавиш в командном режиме. То же относится и к операциям удаления и замены слов и текстовых блоков: клавиши <Delete> или <Insert> не окажут никакого действия на выделенный фрагмент; нужно перейти в командный режим и выполнить соответствующие действия уже там.

А вот сохранение файла и выход из него требуют еще одного режима — построчного редактирования. Для этого нужно перейти из режима ввода в командный режим (нажатием клавиши <Esc>) и набрать : (то есть двоеточие), а после (без пробела) букву для соответствующего действа; например, w — для сохранения, q — для выхода (если файл был изменен, последует предложение сохранить изменения командой : w или q! — для выхода без сохранения изменений).

Следует заметить, что далеко не всегда ясен текущий режим редактора. В той версии, к которой я набираю эти строки (Vim), режим ввода маркируется строчкой —INSERT-- в нижней части экрана; но в общем случае — это не обязательно. Косвенно текущий режим можно определить нажатием клавиши <Esc>: в случае режима ввода это переведет редактор в командный режим, а в командном — просто вызовет звуковой сигнал.

В наших условиях сложность работы с vi усугубляется русскими буквами: если вы перешли в командный режим непосредственно из кириллической раскладки (да еще и забыли об этом) — никакие его команды работать не будут. Вызывая жалобное попискивание. А поскольку в консоли раскладка клавиатуры не индицируется (по крайней мере, мне неизвестно, как это можно сделать) — можно провести некоторое время в недоумении, пока не сообразишь переключиться на латиницу.

Я, конечно, понимаю, что все особенности vi — реликты той далекой эпохи, когда главным средством доступа к вычислительным мощностям компьютеров были текстовые терминалы, клавиатуры которых не имели, скажем, клавиш управления курсором. Однако немало с тех пор воды утекло. И найти ныне такую (работающую) клавиатуру — посложнее, чем пользователя, помнящего о ее существовании, для которого применение vi и оправдано долголетней привычкой, и доскональным знанием. Ныне же приходящим в Linux — есть что выбрать из иного.

Причем — выбор существует, даже если не выходить за пределы консольного режима. Примером чему Emacs.

Вариации на тему Emacs

Подобно vi, текстовый редактор Emacs — инструмент классический. Именно он стоит у истоков всего течения open source. И уже поэтому заслуживает внимания. К тому же, он часто рассматривается как универсальный инструмент, позволяющий решать почти любые задачи: от правки конфигурационных файлов до написания исходных текстов программ во многие тысячи строк.

Естественно, о Emacs написано немало. Достаточно вспомнить книгу Ричарда Столмена "Руководство по GNU Emacs", недавно изданную в русском переводе. Не говоря уже о многочисленных статьях, как в Интернете, так и в традиционных журналах. Однако обычно уделяется внимание использованию Emacs как редактора для программистов. Мы же посмотрим, каковы его возможности в написании не исходных, но просто текстов.

Функционально Emacs существенно ближе к текстовым редакторам DOS, чем vi. Он имеет один-единственный режим — режим редактирования, включающийся сразу же после запуска редактора. Практически все манипуляции в нем осуществляются с помощью управляющих клавиш <Ctrl>, <Esc> и <Alt> в комбинации с буквенными. Что особенно приятно нашему человеку, комбинации эти работают вне зависимости от раскладки клавиатуры.

В основе концепции Emacs лежит понятие буфера, то есть области оперативной памяти, в которой и осуществляются манипуляции с текстом. При запуске программы по умолчанию открывается пустой буфер. С буфером возможны следующие манипуляции:
в него может быть считано содержимое уже существующего файла (<Ctrl>+<X> — общий компонент для всех операций с буферами и окнами, затем <Ctrl>+<F> — от слова file, как я понимаю);
вновь созданный в буфере текст может быть записан как файл (<Ctrl>+<X>, затем <Ctrl>+<S> — вероятно, от save);
несколько текстовых файлов могут быть объединены в одном буфере последовательным выполнением команды (<Ctrl>+<X>, <I>), то есть insert, за которой следует запрос имени файла.

Редактор Emacs позволяет работать в одной консоли с несколькими файлами одновременно. С этой целью для каждого файл посредством (<Ctrl>+<X>, <B>) создается новый буфер со своим именем (которое никакого отношения к имени файла иметь не обязано).

В каждом буфере можно работать с любым количеством окон, сколько их поместится на экране. Разделение экрана на два окна осуществляется командой (<Ctrl>+<X>, <2>), переход между окнами — командой (<Ctrl>+<X>, <0>). Фрагменты текста могут переноситься из окна в окно либо штатными командами Emacs, либо путем выделения мышью и вставки в позицию курсора щелчком средней ее кнопки.

Очень приятной особенностью Emacs является нормальное, с точки зрения пользователя DOS, поведение клавиш <Ноте> и <End>, перемещающих курсор, соответственно, в начало и конец строки. И еще: перенос слов на границе экрана осуществляется без разрыва строки, то есть, в терминологии текстовых процессоров, без образования нового абзаца (который возникает только при нажатии клавиши <Enter>). Что очень полезно, если в дальнейшем предполагается экспорт в какой-либо текстовый процессор типа MS Word: искоренение лишних символов возврата каретки, возникающих при переносе слов во многих редакторах, — занятие не из самых жизнерадостных.

Редактор Emacs обладает довольно эффективными инструментами для редактирования введенного текста. Они основываются на понятии блока, то есть текстового фрагмента, расположенного между меткой (вводимой комбинацией <Ctrl>+<@> и текущим положением курсора. Блок может быть изъят (аналог команды Cut в Windows) комбинацией <Ctrl>+<W> и вставлен (в текущем окне или буфере, или в ином другом) с помощью <Ctrl>+<Y>. Имеется также многоуровневая отмена последовательности команд (<Ctrl>+<X>, <U>).

В общем, пользователь, имеющий навыки работы со старыми текстовыми процессорами для DOS, основанными на использовании клавишных комбинаций, способен без большого труда освоить Emacs, а доведя манипуляцию ими до автоматизма, и эффективно его использовать.. Недостаток его (впрочем, характерный почти для всех консольных редакторов Linux) — крайне непривычное для пользователей DOS применение мыши: с ее помощью можно только выделять фрагменты текста, но на текущую позицию курсора она никакого влияния не оказывает. Кроме того, мерцание последнего раздражает (по крайней мере, меня).

Впрочем, некоторая, скажем так, непривычность интерфейса Emacs в известной мере сглаживается, если он запущен в окне терминала системы Х Window. Это, как ни странно, не совсем то же самое, что Emacs в режиме консольном. Правда, его можно запустить в окне терминала и в первозданном виде — командой

emacs -nw

(что означает "no window"); правда, не очень понятно, зачем это нужно — тогда уж лучше просто работать в консоли, потому что Emacs, запущенный в терминальном окне той же командой без параметров, предоставляет многие дополнительные возможности по сравнению с чисто консольным вариантом. Для начала, в нем волшебным образом появляется строка меню (рис. 6.1), избавляющая от необходимости запоминания немерянного количества клавишных комбинаций (что само по себе не смертельно, но требует постоянной практики). Кроме того, курсор начинает вести себя обычным (для DOS/Windows-ми гранта) способом, то есть может позиционироваться мышью. Есть и еще несколько приятных особенностей.

Итак, первое, что бросается в глаза при запуске Emacs в окне терминала — это строка меню, организованного не вполне стандартным, но по-своему логичным образом.
Рис. 6.1. Текстовый редактор Emacs, запущенный в окне эмуляции терминала

Первым пунктом идет Buffers — основополагающее понятие для Emacs. Здесь можно, во-первых, переключаться между открытыми буферами, во-вторых, вывести список буферов.

В пункте Files, как это ни странно, помимо открытия, сохранения, переименования и вставки файла, также присутствуют операции с буферами (обращение и уничтожение буфера), а также с фреймами; термин "фрейм" в контексте Emacs соответствует понятию окна в большинстве иных приложений.

В пункте Tools масса всяких опций: от печати и сравнения файлов и буферов до чтения новостей, получения и отправки почты, поиска файлов, компилирования и отладки программ.

В пункте Edit обычный набор инструментов для редактирования (вырезание, копирование и вставка, а также отмена). Здесь же всякого рода форматирование, именуемое свойствами текста: от шрифтового начертания и выравнивания до отступов и установок цвета фона и текста.

В пункте Search — разнообразный поиск, а также работа с закладками (Bookmark).

Все, что не вошло в перечисленные пункты, собрано в пункте Mule (не от мула ли?). Главным образом, однако, он предназначен для установки языкового окружения. Причем язык может быть выбран почти произвольный — от английского и любого другого европейского до тибетского и эфиопского.

Присутствует и русский, причем сразу в четырех своих ипостасях — ISO, Alt, KOI-8R и (да простят меня мои "незалежные" братья по этносу) KOI-8U.

В общем, через окно терминала наглядно можно видеть величие системы Emacs, в которой, теоретически, заложены все мыслимые и немыслимые возможности, замаскированные в чисто консольном варианте длинными списками команд. Однако, не смотря на изобилие возможностей, и для непосредственной задачи, то есть ввода текстов, Emacs вполне пригоден.

Правда, для этого требуется некоторая привычка. Начать с того, что открытие файла осуществляется не вполне традиционно: при выборе из меню File | Open File внизу окна появляется нечто вроде командой строки с предложением ввести имя открываемого файла. Сделать это не сложно — поддерживается режим дополнения пути с помощью клавиши табулятора.

Если же на приглашение командной строки просто нажать <Enter>, появляется список файлов и подкаталогов текущего каталога (по умолчанию — /$Ноте). Который представляет собой отдельный буфер, видимый в их списке (пункт меню Buffers).

Далее с помощью мыши (или, конечно, клавишами управления курсором) можно перейти к подкаталогу с требуемыми файлами. Однако открыть этот подкаталог можно, только нажав <Enter>. После чего появляется содержимое дочернего каталога, также представляющее собой самостоятельный буфер. В результате, при достаточной вложенности подкаталогов, довольно быстро пункт Buffers заполняется всеми этапами пути до требуемого файла. Так что лучше уж принять приглашение командной строки в самом начале.

Правда, после открытия файла никаких сложностей при его редактировании не возникает. Перемещение по тексту происходит обычным для пользователя DOS способом — с помощью клавиш управления курсором, <Ноте> и <End>, <PageUp> и <PageDown>, а также мыши; никаких неожиданных эффектов не возникает.

Выделение текстовых блоков также обычное: мышью, клавишами управления курсором при нажатой клавише <Shift>. Слово можно выделить двойным щелчком мышью, а щелкнув правой кнопкой мыши, можно выделить блок между текущей и предшествовавшей позицией курсора.

В буфер обмена (не буфер в понимании Emacs) автоматически попадают только блоки, выделенные мышью. Для помещения в буфер обмена фрагментов, выделенных клавишами управления курсором, их нужно поместить туда явным образом — через пункт меню Edit ¦ Copy. Как ни странно, за этой операцией не закреплено комбинации горячих клавиш.

Вставка содержащегося в буфере обмена фрагмента, независимо от способа его помещения туда, может быть осуществлена щелчком правой кнопки мыши, через меню (Edit ¦ Paste) или комбинацией клавиш <Ctrl>+<Y>.

Измененные файлы могут быть сохранены через пункты меню File ¦ Save Buffer или File ¦ Save Buffer as. По умолчанию устанавливается также автосохранение файлов. Предупреждаю: если вы закрываете родительское для Emacs окно терминала, не сохранив изменений, Emacs будет закрыт, и никаких предупреждений о необходимости записи измененных файлов не ждите.

Интерактивных способов настройки Emacs не предусмотрено. Такие параметры, как размер и гарнитура экранного шрифта, его цвет и цвет фона, изменяются ручным редактированием файла ~/.Xdefaults (в домашнем каталоге пользователя). Относящаяся к Emacs его секция имеет примерно такой вид:

! emacs, xemacs

emacs*Background: DarkSlateGray

emacs*Foreground: Wheat

emacs*pointerColor: Orchid

emacs*cursorColor: Orchid

emacs *bitmaplcon: on

emacs*font: -cronyx-courier-medium-r-*-*-20-*-*-*-*-*-koi8-r

emacs.geometry: 80х25

Из чего понятно, что могут быть заменены цвета фона, текста, индикатора курсора, гарнитура, начертание и размер экранного шрифта и его кодировка, а также геометрия окна. Впрочем, для единичного сеанса все это можно указать в качестве параметров при запуске Emacs из командной строки.

Более сложная настройка Emacs (нужно сказать, что возможности таковой почти безграничны) осуществляется редактированием файла инициализации ~/.emacs, который представляет собой, в сущности, программу на языке LISP. На нем я останавливаться не буду, это описано в упоминавшейся книге Ричарда Столмена.

Следует заменить, что существует и собственно графическая модификация Emacs — XEmacs. Однако кроме внешнего вида, никаких впечатлений о нем получить мне не удалось: программа с регулярностью, достойной лучшего применения, слетала после ввода нескольких слов. Не имею оснований для обобщений, вероятно, это особенность моей системы, поскольку многие пользователи XEmacs применяют и не жалуются. Однако мне про него сказать нечего.

vi и Emacs — далеко не единственные редакторы для текстового режима. Однако в большинстве своем они продолжают одну из двух этих. линий. Хотя есть и самостоятельные программы, которые стоит рассмотреть в следующей рубрике.

Прочие консольные редакторы

В числе консольных редакторов, обычно присутствующих в дистрибутивах Linux, можно отметить Joe и Jed.

Редактор Joe многолик. Он способен эмулировать системы команд всех прочих из описанных здесь редакторов — и vi, и Emacs, и других, о которых я не говорил. Но собственно Joe — это командно-ориентированный, управляемый путем комбинации клавиш (<С1г1>+буква, буква), редактор. Эта возможность, как и следовало ожидать, не работает при кириллической раскладке клавиатуры; вернее, работает, если предварить нажатие второй ключевой буквы еще одним нажатием <Ctrl>, что, если и не делает этот редактор малопригодным для работы с объемными русскоязычными документами, все же несколько усложняет его использование.

При запуске Joe появляется черный экран, доступный для ввода и редактирования текста. Присутствует также строка состояния, содержащая имя файла, текущие линию и колонку, а также указание для вызова помощи (<Ctrl>+<K>, <H>). Последняя, правда, занимает около трети экрана, но может быть убрана вторичным вводом той же клавишной комбинации.

Редактирование текста основывается на понятии блока и не производит впечатления богатства возможностей. Можно отметить начало и конец блока командами (<Ctrl>+<K>, <H>) и (<Ctrl>+<K>, <K>) соответственно, скопировать или переместить его в другое место, а также удалить. Понятия вставки удаленного фрагмента (аналогичного буферу изъятия в Emacs) нет.

Интересно, что клавиша <Ноте> ведет себя как в редакторах для DOS, то есть перемещает курсор в начало экранной строки. Подсознательно и от клавиши <End> ожидаешь "правильного" поведения. Но не тут-то было — вместо этого она (по крайней мере, в терминальном режиме) вставляет тильду перед позицией курсора. Что крайне раздражает. Хуже этого только необходимость переключаться на латиницу перед выполнением любой операции. В общем, Joe не показался мне пригодным для использования в мирных целях, хотя бы в русскоязычной стране.

Однако по сведениям моих корреспондентов, он обладает чрезвычайно редкой особенностью, а именно, способностью работать с файлами размера большего, чем ВСЯ оперативная память (то есть больше суммы физической и виртуальной памяти). К, сожалению (или к счастью?) проверить это я не смог: отыскать текстовый файл больше чем 256 Мбайт RAM плюс 256 Мбайт Swap partition показалось мне несколько затруднительным. Тем не менее, на слабых машинах это может искупить все его недостатки (или то, что мне таковыми показались).

Текстовый редактор Jed, в отличие от всех описанных ранее — меню-ориентированный, что делает его, казалось бы, более привычным для пользователя, пришедшего из мира DOS/Windows. Во всяком случае, при запуске можно видеть строку меню достаточно стандартного вида с пунктами File, Edit, Search, Buffers, Windows, System, Help, с выделенными горячими клавишами, активизация которых происходит при нажатии <F10>, прямо как в Лексиконе.

Однако если Jed был загружен без имени файла, он долго и упорно будет требовать введения такового в командной строке внизу экрана. И на выбор File ¦ Open реагировать не пожелает, пока не додумаешься выполнить File ¦ Cancel Operation. Только после этого требуемый файл можно будет открыть обычным (вернее, привычным) образом.

Дальше еще интереснее. Ну, то, что ни клавиша <Ноте>, ни клавиша <End> не работают — ладно, пора уже бы и привыкнуть. Но не работает и <Delete> — удалить введенное можно только клавишей <Backspace>. И меню абсолютно не реагирует на мышь, хотя внутри текста манипуляции мышью осуществляются обычным для Linux-консоли способом.

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

К достоинствам Jed можно отнести возможность работы с несколькими файлами, что реализуется через новые буферы, аналогично тому, как это сделано в Emacs. Возможно также работать с двумя (как будто бы, не больше) окнами, в которых может быть открыт один и тот же файл или разные.

Предусмотрены также различные режимы (кроме основного, текстового) для поддержки различных языков программирования (С, ТеХ, Fortran и другие;

HTML, к сожалению, среди них нет). Однако это не делает Jed более пригодным для решения поставленной перед нами задачи.

Более практичным представляется редактор Pico, входящий в состав широко используемой в Linux почтовой системы pine. Он очень компактен, что позволяет использовать его на слабых машинах. Редактор — командно-ориентированный, все манипуляции в нем осуществляются посредством комбинации <0.г1>+буква, что работает и при кириллической раскладке клавиатуры. Основные клавишные комбинации постоянно присутствуют в нижней части экрана, не требуя чрезмерного напряжения памяти.

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

А так возможности редактирования довольно убоги: можно удалить (<Ctrl>+<K>, то есть Cut — в том же значении, что и в Windows) строку текста, на которой находится курсор, а затем вставить ее куда-либо еще, переместив курсор на новую строку и выполнив команду <Ctrl>+<U>, то есть uncut. Есть еще функции поиска, проверки орфографии, а также своеобразно понимаемая опция Justify — вписывание строк, выходящих за границы экрана, в его пределы.

В целом pico, конечно, не очень подходит для работы с объемными текстами. Однако, как мне представляется, почти идеален для правки конфигурационных файлов. Поскольку интуитивно более понятен, чем vi, и много проще в использовании. По крайней мере, для бывших пользователей DOS/Windows.

Хотя еще более привычным для них, вероятно, покажется текстовый редактор mcedit, встроенный в файловый менеджер Midnight Commander (о котором шла речь в предыдущей главе). Это, пожалуй, наиболее близкое и родное Linux-создание для старого пользователя DOS. Поскольку напоминает видом редактор из советского народного Командира Нортона, и почти таков же нравом.

Вызывается mcedit, как и редактор NC, по нажатии клавиши <F4>, зафиксированной на текстовом файле (можно, конечно, и на любом другом, вопрос только, что вы увидите). Но его можно запустить и автономно, просто набрав mcedit в командной строке: в этом случае открывается пустой файл.
Рис. 6.2. Текстовый редактор mcedit

Все в mcedit радует глаз (рис. 6.2): и привычный синий фон с нерезко белыми буквами, и строка состояния в верхней части экрана, и линейка нумерованных (по функциональным клавишам) операций внизу. Привычно работают клавиши <Home> и <End>, <Delete> и <Backspace>, и щелчок мышью в тексте приводит к перемещению курсора в эту позицию. Правда, в отместку за это не совсем обычно работает вставка выделенного фрагмента по щелчку средней кнопки — только при нажатой клавише <Shift>.

Как и в редакторе из Norton Commander, по умолчанию отключен перенос слов в конце строки; его можно включить динамически (то есть по ширине экрана) или на фиксированном числе знаков.

Назначение функциональных клавиш также более или менее совпадает. Хотя в mcedit есть специфика, касающаяся копирования, перемещения и удаления; так, последнюю операцию можно выполнить только через нажатие клавиши <F8>, но не через <Delete>.

Выделение текстовых фрагментов самое разнообразное, и по клавише <F3>, и мышью, и клавишами управления курсором при нажатой клавише <Shift>. Правда, не лучшим образом осуществляется копирование и перемещение:

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

Приятна также полная русификация программы. И все сочетания управляющих и буквенных клавиш работают как при латинской, так и кириллической раскладке клавиатуры.

В отличие от прототипа, ограничение на размер открываемого файла (16 Мбайт) можно считать отсутствующим. Имеется подсветка синтаксиса, по крайней мере, для языка HTML, хотя цветовая гамма и ограничена.

Конечно, в mcedit маловато настроек внешнего вида, нет и встроенной проверки орфографии (что, впрочем, при наличии русского ispell, неудобств не" доставляет). Но в целом это инструмент, в равной степени пригодный для использования в качестве системного редактора и для набора длинных содержательных текстов.

В заключение добавлю, что для mcedit имеется переведенная на русский язык документация, а на сайте Виктора Костромина http://Iinux-ve.chat.ru/ можно найти прекрасное описание его возможностей.

В прошлом разделе, заговорив о XEmacs, мы плавно перекинули мостик от консольных редакторов к редакторам, работающим в графическом режиме. А так как мы договорились, что первой нашей графической средой будет KDE, логично рассмотреть ее средства.

Средства KDE: KEdit, KWrite, Katy

Графическая среда KDE включает в себя два штатных текстовых редактора KEdit (именуемый в русском варианте простым) и KWrite (названный по-русски расширенным).

Первый из них — это закаленное и отточенное орудие для набора текстов и особенно для их придумывания, поскольку KEdit содержит большинство функций для набора текстов и их простейшего редактирования: выделение, копирование, вставка, поиск и замена, и ничего лишнего для их форматирования. А также имеет почти все необходимые и достаточные настройки.

Манипуляции с текстами в KEdit осуществляются посредством строки меню и инструментальной панели (рис. 6.3). В последней находятся кнопки для файловых операций (создание, открытие, запись), редактирования (копирование, вставка, вырезание), печати и почты. Панель, правда, не настраиваемая.
Рис. 6.3. Текстовый редактор KEdit

Пунктов меню — три (не считая Помощь): Файл, Редактирование, Настройка. В первом — создание и открытие (в том числе из списка недавних) файла, его сохранение (и под другим именем тоже) и закрытие. Можно открыть файл из удаленного источника и сохранить в таковом. Здесь же печать, отправка и прием почты, выход, а также создание нового окна: KEdit — редактор однооконный, для каждого нового документа требуется запустить его отдельную копию.

В пункте Редактирование находятся операции копирования, вставки (которая возможна и стандартным способом, средней кнопкой мыши) и вырезания, выделения (всего), вставки даты. Здесь же поиск, замена, проверка правописания, переход на строку.

Настройки достаточно богаты для такого простого на вид инструмента. Можно настроить гарнитуру шрифта и его начертание, кегль и, при необходимости, кодировку. Поддаются переопределению цвета шрифта и фона (можно выбрать их из стандартной палитры или назначить собственные), параметры Spellchecker (выбор словаря и кодировки, по умолчанию используются стандартные для ispell), граница (в знаках) для переноса слов и т. д. Для сохранения установок в следующем сеансе их следует запомнить (команда Записать установки).

В общем, инструмент более чем пригодный для набора текстов. Из принципиальных недостатков я отметил бы только отсутствие функции Undo/Redo и возможности делать закладки в тексте. Навигация несколько затруднена невозможностью перейти в начало или конец текста (например, с помощью привычных комбинаций клавиш <Ctrl>+<Home> и <Ctrl>+<End>). He предусмотрен многооконный режим: для работы с несколькими документами нужно открывать соответствующее количество экземпляров программы. Нет также подсветки синтаксиса, но это — уже из области роскошного.

Редактор KWrite чрезвычайно схож по интерфейсу с KEdit. Название KWrite вызывает ассоциацию с приснопамятным по временам Windows З.хх редактором Write. Однако функционально он отличен от редакторов общего назначения типа KEdit, поскольку предназначен для написания не столько просто текстов, сколько текстов исходных.

С точки зрения интерфейса KWrite очень похож на KEdit, обнаруживая строку меню и панель кнопок. Пункты меню почти те же — Файл, Редактирование, Настройки плюс Закладки.

В пункте Файл — создание, открытие (в том числе Open Recent) и сохранение (в том числе Save as), печать. Новое окно (открытие пустого окна) и Новый вид (открытие второй копии того же документа в новом окне): как и KEdit, KWrite не является многооконным редактором в полном смысле слова, требуя отдельного своего экземпляра для каждого файла. Кроме того, есть вставка существующего файла в текущий. Ну и выход, конечно.

В пункте Редактирование — стандартные Вырезать, Копировать, Вставить, а также Undo и Redo (отсутствующие в KEdit), поиск, замена, переход на строку. Кроме того, здесь есть ввод отступа строки и его отмена, и всякого рода выделения (всего, отмена и обращение выделения).

Добавленный против KEdit пункт Закладки содержит три очевидных подпункта: установка, добавление и уничтожение закладок.

А вот настройки в KWrite существенно отличаются от таковых в KEdit. Перво-наперво, в нем можно установить раскраску синтаксиса какого-либо языка — С, C++, Java, HTML и т. д. Далее, в подпункте По умолчанию устанавливаются гарнитура, размер, кодировка и цвет шрифта, как для нормального текста, так и для различных типов данных. Затем — Раскраска, где настраиваются цвета для языковых конструкций. Так, если ранее была выбрана раскраска HTML, здесь можно определить цвета не только для тегов, но и для атрибутов и их значений, в результате чего HTML-код может принять сколь угодно пестрый вид.

Собственно подпункт Настройки — это возможность установить ограничение длины строки (при включении переноса по словам), величину табуляции, уровни отмены, всякого рода отступы, а также параметры выделения (в том числе множественное и вертикальное выделение, иногда очень полезная возможность).

Еще одна достаточно интересная возможность — изменение символа конца строки: помимо свойственного Unix LF, можно установить DOS CR-LF или MacOS CR.

Также в пункте Настройки можно определить горячие клавиши для большого количества команд: перемещения курсора, файловых операций, редактирования, выделения, поиска, замены и перехода. Назначение прочих подпунктов — понятно без комментариев.

Панель кнопок предназначена для выполнения стандартных операций с файлами, редактирования, отмены и возврата.

Из обзора возможностей KWrite и его настроек видно, что это типичный редактор для программиста, что подчеркивается, скажем, отсутствием функции проверки орфографии и даже печати. Однако и для набора длинных связанных текстов он вполне пригоден. А орфографию можно всегда проверить и в любой внешней программе, просто в ispell, наконец.

Кроме штатных для работы в K.DE предназначен такой редактор, как Katy — очень простой, но удобный. Его отличительная особенность — многооконность, переключение между загруженными документами осуществляется с помощью закладок.

Текущая версия Katy (0.2.3), вероятно, еще не вполне функциональна. Об этом можно судить по тому, что разработчиками он позиционируется как аналог такого редактора для Windows, как UltraEdit, но существенно не дотягивает до него по своим возможностям.

Интерфейс Katy достаточно стандартен для KDE-приложений. Управление осуществляется через меню или почти дублирующую его функциональную панель. В меню — пункты:
File, содержащий стандартные операции с файлами (создание, открытие, сохранение и прочие, включая печать); здесь привлекает внимание возможность сохранения всех открытых файлов (Save All), а также установка конца строки — в стиле Unix, DOS или MacOS;
Edit также достаточно обычен по набору функций (Undo и Redo, копирование, вырезание и вставка, поиск и замена); стоит отметить только возможность принудительного переключения регистров (с нижнего на верхний и наоборот, а также инвертирование);
View — это просто переключатели скрытия/показа инструментальной панели и строки состояния;
Options — минимальные настройки (гарнитура и кегль шрифта, его кодировка, величина табуляции).

Полезно, что закладка каждого измененного, но не сохраненного файла маркируется звездочкой.

Из недоработок бросаются в глаза отсутствие переноса слов и подсветки синтаксиса, что весьма необычно для редактора, претендующего на статус развитого. Кроме того, Katy не может похвастаться и стабильностью.

Разумеется, описанными примерами список текстовых редакторов графического режима не исчерпывается. Поэтому более или менее кратко затронем другие редакторы для Х Window.

Прочие редакторы для системы Х Window

Здесь я упомянул бы Cooledit — известный текстовый редактор для программистов. Он имеет собственный десктоп-менеджер, способный изменить вашу рабочую среду до неузнаваемости, причем не всегда спрашивая на то позволения. Для набора текстов, по-моему, это не лучший инструмент, но располагает богатыми возможностями для редактирования текстов исходных, скриптов, макросов и прочего.

Очень обширно семейство текстовых редакторов для GNOME (или просто базирующихся на библиотеке Gtk). Здесь можно назвать и gEdit, и gnotepad+, и CodeCommander, и Latte, и еще несколько. Многие из них обладают очень развитыми функциями редактирования, например работы с разметкой HTML. Однако я ими не пользовался — во-первых, как уже неоднократно говорил, почти все Gtk-приложения у меня работают неустойчиво, во-вторых, мне просто не нравится интерфейс GNOME-ориентированных программ.

Несколько подробнее я хотел бы остановиться на fte. Это весьма своеобразный текстовый редактор, совмещенный с чем-то вроде файлового навигатора. При запуске его появляется дерево каталогов. Перемещаться по нему довольно удобно, но никаких собственных средств управления файлами, вроде копирования, удаления, перемещения и прочего, нет. Однако существует возможность вызова минитерминала (<Ctrl>+<F9>), появляющегося внизу окна fte. В нем все эти функции доступны так же, как ив любой оболочке. Правда, не поддерживается ни история команд, ни дополнение клавишей табулятора.

Двойной щелчок на имени файла (или выбор пункта Open из меню по нажатии правой кнопки мыши) вызывает собственно текстовый редактор. Возможности его довольно богаты. Пункт File, в соответствии со своим названием, содержит всякие файловые манипуляции: открытие, сохранение, печать и прочее; в том числе открытие файла в определенном режиме — текстовом или режиме различных языков программирования, в спике коих обнаружился и HTML, и ТеХ. Впрочем, выбор режима автоматически (и правильно) происходит при открытии файла. Так, при открытии HTML-файла включается цветовая подсветка тегов.

В пункте Edit, помимо Undo и Redo (кстати, многоуровневых), содержались операции с текстовыми фрагментами: копирование, вырезание, вставки различного вида. А маркировка этих фрагментов — в пункте Block; помимо обычного выделения линий и абзацев, можно выделить вертикальные колонки. Здесь же установка автоотступов, конвертирование регистров, сортировка и прочее.

Из остальных, весьма многочисленных, пунктов меню привлекает внимание пункт Options: здесь можно запретить или разрешить перенос слов, установить левую и правую границы, величину табуляции, а также изменить режим просмотра документа.

Стандартное меню может быть дополнено собственными командами посредством редактирования конфигурационных файлов.

В общем, fte — это, конечно, редактор, в первую очередь, для программиста. Однако и просто для набора текстов он вполне пригоден. А подсветка синтаксиса HTML позволяет применять его для предварительной разметки Web-страниц.

Под занавес истории о текстовых редакторах не могу отказать себе в удовольствии рассказать о том из них, который, на мой взгляд, наиболее близок к очерченному во вступлении идеалу. Имя ему NEdit.

NEdit — на пути к идеалу

Редактор NEdit реализован для всех Unix- и Unix-подобных систем, как коммерческих, так и свободных. Он доступен на http://www.nedit.org, последняя версия (5.1.1) — в виде исходных текстов, предыдущая (5.0.х) — также и как бинарные пакеты.

NEdit базируется на библиотеке Motif, имеющей статус коммерческой. Однако для Linux он может быть скомпилирован с использованием свободного аналога этой библиотеки — OpenMotif. Кроме того, распространяемые бинарные пакеты (rpm и deb) компилируются статически, то есть без необходимости установки каких-либо специфических библиотек вообще.

По назначению NEdit сходен с KWrite, но существенно превосходит его в функциональности и настраиваемости. И в том, и в другом отношении редактор этот приближается к идеалу. Однако осознал я это далеко не сразу, потому что в своей системе долго не мог добиться поддержки вставки выделенного фрагмента по щелчку средней кнопки мыши. И мне казалось, что это его особенность, полностью обесценивающая все прочие (весьма многочисленные) достоинства.

Однако по сведениям, полученным от моих корреспондентов, проблем в этом отношении, как будто, быть не должно. Я попробовал разобраться, в чем дело — и безуспешно. Тогда как последнее средство, я решил, установив предварительно OpenMotif, собрать пакет из исходных текстов (раньше я устанавливал его из статически скомпилированных rpm-пакетов) — и вставка средней кнопкой мыши волшебным образом появилась. После чего понял, что могу описывать его со спокойной совестью.

В отличие от KEdit и KWrite, NEdit управляется исключительно через меню: инструментальная панель отсутствует, что кому-то может показаться и недостатком (мне — так нет, это компенсируется достаточным количеством горячих клавиш).

Главное меню насчитывает, за исключением непременного Help, семь пунктов:
File — это в основном обычные действия, как то: создание, открытие файла, в том числе из списка последних, запись, ну и все такое прочее; о чем стоит сказать, как об уникальных особенностях, так это о пунктах Revert to Saved (Отмена изменений в уже записанном файле) и Include File (Вставка некоего существующего файла в текущий документ);
Edit — также достаточно тривиально, это всякого рода выделения, копирование, вырезание, вставка; здесь привлекает внимание изменение регистров (Lower Case и Upper Case>, а также подпункт Fill Paragraph, конденсирующий абзацы в соответствии с принятыми правилами переноса слов (о чем — через пару пунктов);
Search вполне заслуживает выделения в отдельный пункт главного меню, поскольку возможности поиска, да и замены, чрезвычайно широки; здесь же создание закладок и переход к ним;
Preferences — понятно, что это настройки, о которых я подробнее расскажу ниже;
Shell — достаточно необычный пункт меню текстового редактора: здесь можно просто запустить на исполнение любую команду или программу (подпункт Execute Command, вызывающий нечто вроде минитерминала), определить в качестве команды на запуск строку из текущего документа (Execute Command Line); тут же проверка правописания, подсчет слов и строк, сортировка и прочее, включая сборку программы из набранного исходного текста;
Macro — этот пункт предназначен для запуска пользовательских макрокоманд; NEdit поддерживает собственный макроязык, довольно подробно описанный в справочной системе;
Windows позволяет расщепить текущее окно на два и более фрейма; в каждом из них будет своя, независимо прокручивающаяся, копия одного и того же текущего файла; кроме того, здесь же можно переключаться между всеми открытыми документами; NEdit, в отличие от KEdit и KWrite, истинно многооконный редактор: хотя каждый из открытых файлов существует в собственном окне со всеми его атрибутами (строкой меню, полосами прокрутки и прочим), все они присутствуют в едином списке окон и имеют одни и те же параметры настройки.

Кроме главного меню существует и меню контекстное, вызываемое, как положено, щелчком правой кнопки мыши на выделенном фрагменте текста. Правда, оно достаточно простое и содержит лишь пункты Undo и Redo, Cut, Copy и Paste, что в комментариях не нуждается.

Таким образом, функциональность NEdit в первом приближении ясна из рассмотрения меню. Вьюсним, какова же его настраиваемость, для чего вернемся к пункту Preferences.

Здесь можно отдельно настроить опции текущей сессии и параметры редактора по умолчанию. Начнем с первых. Это:
переключатели показа/скрытия строки состояния (где отображается, в том числе, полный путь до текущего файла, поддающийся выделению мышью, копированию и вставке в любой другой документ), линии избирательного поиска (Incremental Search Line) и нумерации строк в документе;
режим языка (в смысле программирования, а не человеческого); в списке доступных, не считая чисто текстового режима (Plain) — С и C++, Java и JavaScript, Ada, Fortran, Pascal, Python, Tel, awk, язык командных оболочек линии bash, языки разметки HTML и ТеХ, PostScript, SQL и прочая, и прочая, и прочая; разумеется, есть и режим собственного языка NEdit Macro;
включение/выключение автоотступов и переноса слов; в последнем подпункте предусмотрены опции — без переносов, автоматически по границе открытого окна, по заданному числу знаков, а также непрерывное; в этом случае экранная (не истинная) строка разрывается на границе окна без образования нового абзаца, подобно тому, как это происходит в Emacs;
установка экранных шрифтов; выбрав этот пункт, можно определить гарнитуру исходного шрифта вводом вручную или выбором из списка; в последнем случае необходимо явным образом отметить все три доступные для выбора атрибута — Font, Style и Size, иначе последует сообщение о некорректном определении шрифта; что характерно (вернее, не характерно для редакторов такого типа), хотя по умолчанию в списке присутствуют только моноширинные шрифты, можно включить также показ шрифтов пропорциональных и использовать их в свое удовольствие;
включение/выключение подсветки синтаксиса в соответствии с определенным выше языковым режимом;
включение/выключение режима создания резервных копий;
переключатель для подсветки открывающей скобки при фиксации курсора на закрывающей, и наоборот.

Из этого, несколько, возможно, сумбурного, описания, можно понять, что в NEdit поддается настройке практически -все (а что не настраивается через меню — на то есть другой способ, о котором чуть позже). Однако все описанные выше установки имеют силу только в текущем сеансе NEdit. Чтобы сделать их перманентными, нужно зайти в пункт меню Preferences ¦ Default Settings, в котором нам будет предложен абсолютно тот же, хотя и слегка перетасованный, список опций и переключателей. Настроив его по собственному разумению, следует вернуться к пункту Save Defaults для сохранения изменений и далее быть спокойным: при следующем запуске NEdit все будет, как доктор (то бишь my self) прописал...

Правда, через меню удается настроить не все, что может понадобиться впредь. В частности, здесь не удается прикрутить проверку орфографии для русскоязычных текстов. Однако на это есть метод левой резьбы — файл ресурсов .nedit в домашнем каталоге пользователя. Начальная его секция, отвечающая за пункт меню Shell, выглядит примерно так:

nedit.shell Commands: \

spell:Alt+B:5:EX:\n\

cat>spellTmp; xterm -e ispell -x spellTinp; cat spellTmp; rm spellTmp\n\

Достаточно в строке, относящейся к спеллингу, добавить после i spell параметр -d russian (предписывающий обращаться при проверке именно к русскому, а не какому-то иному, словарю), — и все будет в порядке: обращение к пункту Shell ¦ spell будет отныне и вовек вызывать русский вариант программы ispell в собственном окне терминала (параметры которого, как нетрудно догадаться, описываются в той же строке конфигурационного файла) со всеми последующими действиями (о которых — в заключительном разделе этой главы).

Конечно, значение секции shell в файле -nedit (как и следующей за ней секции macro) много шире: никто не мешает добавлять в любую из них собственные команды и конструкции (в первую — на языке командной оболочки и на собственном макроязыке NEdit — во вторую), наращивая функциональность соответствующих этим секциям пунктов меню.

А еще через меню (и через файл .nedit тоже) не удается настроить цвет фона, текста меню, курсора, геометрию открываемого окна и т. д. Все это, конечно, можно при необходимости указывать в командной строке при запуске. Однако если такая настройка вам представляется необходимой, а указывать параметры лениво, можно обратиться к файлу .Xdefaults в своем пользовательском каталоге. Секции nedit в нем по умолчанию нет, но создать ее труда не составит (хотя бы средствами того же NEdit), придав ей вид вроде

! nedit

nedit*Background: SlateGray

nedit*Foreground: Wheat

nedit*pointerColor: Orchid

nedit*cursorColor: Orchid

nedit*bitmaplcon: on

nedit*font: -cronyx-courier-medium-r-*-*-20-*-*-*-*-*-koi8-r

nedit.geometry: 80х25

или указать какие-либо иные параметры, по собственному желанию.

Из приведенного описания видно, что по своим возможностям и настраи-ваемости NEdit вплотную приближается к Emacs (а учитывая возможность сколь угодно широкого наращивания функциональности пунктов меню Shell и Macro — возможно, и не уступает). В то же время он предоставляет пользователю удобный и привычный интерфейс, лишенный архаических особенностей как Emacs, так и vi.

К недостаткам NEdit (или, вернее, особенностям, которые способны не нравиться) можно отнести отсутствие инструментальной панели и открытие каждого файла в собственном окне (а не в том же самом, с перемещением через систему закладок, например). Впрочем, и тот, и другой момент — спорны: отсутствие панели, как я уже говорил, компенсируется системой горячих клавиш, а перемещение между отдельными окнами, на мой взгляд, не менее удобно, чем между закладками.

Еще в NEdit нет штатных средств управления проектом. Однако эту функцию в элементарном исполнении, то есть в виде открытия и сохранения группы связанных файлов (глав книги, например, или серии Web-страниц), несложно реализовать с помощью встраиваемых в меню сценариев оболочки и, вероятно, также и макрокоманд.

Короче говоря, если NEdit и не отвечает в полной мере идеалу текстового редактора, то вплотную к нему приближается. На мой взгляд, это один из лучших редакторов вообще и, пожалуй, лучший на платформе Linux. Дополнительное достоинство его — отсутствие привязки к конкретной графической среде (типа KDE или GNOME) и представленность во всех Unix-системах.

В общем, этот редактор мне так понравился, что я без тени сомнения добавил его в список любимых программ, о которых, как и о любимых женщинах, буду помнить всегда. Надо сказать, что за десять лет околокомпьютерной жизни список этот (профамм, не женщин) отнюдь невелик. Ранее в нем были QuattroPro для DOS (не для Windows) от электронных таблиц, Lotus AmiPro — от текстовых процессоров, Surfer в обеих своих (DOS и Windows) ипостасях, ну и еще пара-тройка. Теперь в этом списке и NEdit.

Подводя итог всему разделу, замечу: инструментов для создания текстов под Linux — вдоволь, и всегда можно выбрать подходящий. А как обстоит дело с оформлением созданных текстов? Для этого нужно рассмотреть текстовые процессоры.

Текстовые процессоры

Здесь материалов будет существенно меньше. Во-первых, текстовых процессоров под Linux просто меньше, чем текстовых редакторов. Во-вторых, самые могучие из процессоров, по доброй традиции последних лет, выступают не самостоятельно, а в составе офисных комплектов, которые будут предметом следующей главы. И, в-третьих, многие программы, которые могли бы занять достойное место в этом разделе, находятся в процессе разработки и не могут считаться пока полнофункциональиыми.

Каково, на мой взгляд, предназначение текстового процессора? От ответа на этот вопрос будет зависеть и их оценка, а потому задержусь на нем чуть подробнее.

Можно наметить три сферы приложения текстовых процессоров:
первая — делопроизводство, то есть составление документов, которые должны быть оформлены в соответствии с определенными, обычно жесткими, требованиями;
вторая — объединение и доведение до кондиционного вида неких материалов, подготовленных в текстовых и графических редакторах;
третья — использование текстовых процессоров как универсального средства работы с текстовой информацией.

Рассмотрим их по очереди, начав с последней; поскольку именно для этого применяются текстовые процессоры подавляющим большинством пользователей — во-первых, и потому, что именно на это ориентированы все развитые коммерческие их представители — во-вторых.

Мне думается, что это самый нерациональный подход, который только можно себе представить. Почему — нетрудно ответить. Как известно, пятиборцы (да простят меня представители этого, очень мной любимого, вида спорта) — это те, кто все умеют делать. Плохо. И потому ожидать, что программа будет одинаково хорошо выполнять столь противоречивые функции, как просто ввод текста и его редактирование, форматирование, вставку рисунков и таблиц с их точным позиционированием (а подчас и обработку, и даже подготовку иллюстраций), сравнение версий с точки зрения содержания и оформления — было бы наивно. Каждый, кто пробовал набирать текст в PageMaker или верстать оригинал-макет в MS Word — вероятно, спорить со мной не будет. Во всяком случае, то, что книжки, сверстанные в MS Word, безошибочно опознаются с первого взгляда (и не своими высокими оформительскими достоинствами) — медицинский факт, как сказал бы О. Бендер.

Даже если представить себе непредставимое (подобно квадратному трехчлену), и создать программу, в равной степени хорошо выполняющую все перечисленные (но далеко не все, которые могут реально потребоваться) функции удалось бы — страшно представить, каких аппаратных ресурсов потребует такой монстр. Впрочем, страшно-то страшно, но можно: именно тех, каких требуют современные развитые коммерческие текстовые процессоры. Что, впрочем, не означает, что они хоть в какой-то мере приблизились к туманному идеалу.

Хотя, справедливости ради, нужно заметить: такой цели — приблизиться к идеалу — перед этими продуктами создатели и не ставили. Ведь основное, я бы сказал, сакральное, предназначение коммерческих офисных приложений — облегчение не труда, а кошелька пользователя, первейшая обязанность которого, как известно — постоянные upgrade (т. е. обновления) аппаратуры в соответствии с требованиями нового софта.

Однако я отвлекся, пора перейти ко второй сфере применения текстовых процессоров. То есть обработке уже написанного. Обработка эта может быть двоякого рода — с точки зрения содержания и представления, что требует различных функций.

Обработка с точки зрения содержания требует средств редактирования — раз, и возможностей сравнения и контроля версий — два. Первая задача достаточно успешно решается, не выходя за рамки текстовых редакторов. Вторую, значение которой при коллективной работе трудно переоценить, теоретически также можно попробовать решить средствами текстовых редакторов, по крайней мере, наиболее развитых. Однако это потребует дополнительных усилий, штатные средства такого рода в них мне неизвестны. И потому функции контроля и коллективной работы — это единственное, что хоть как-то примиряет меня с программными монстрами типа Word или WordPro. Благо, самому этими средствами пользоваться почти не приходится.

Обработка с точки зрения оформления — понятие чрезвычайно обширное. С одной стороны, под него попадает несложное шрифтовое оформление и центрирование заголовков перед выводом на печать докладной записки, с другой — сложная верстка, вплоть до оригинал-макета для типографского воспроизведения. О первой крайности — чуть ниже, а вот для второй человечеством специально придуманы так называемые настольные издательские системы. Зато все промежуточные варианты обработки для представления — создание и ранжирование рубрик, составление оглавлений и предметных указателей, разметка иллюстративного и табличного материала — это именно и по преимуществу вотчина текстовых процессоров.

Наконец, сфера делопроизводства. Речь идет, разумеется, не о документообороте министерства или транснационального концерна, а о тех планах, отчетах, этапах, сметах, служебных записках, которые каждый из нас пишет по сто раз на дню и имя которым — легион. Ведь, как доказано практикой, повсеместное внедрение электронного документооборота привело к росту документооборота бумажного в геометрической прогрессии. И это понятно: раньше, чтобы напечатать бумагу в трех экземплярах, нужно было напрячься и каждый лист проложить копиркой, а сейчас — отправил на принтер хоть сто копий — "и сидишь себе, болтаешь ножками, сам сачкуешь, а она работает" (А. Галич).

Вот со сферы такого, с позволения сказать, локального, документооборота мы и начнем. Для чего рассмотрим Ted.

Ted как орудие бюрократа и головотяпа

Не могу не начать этот раздел с цитаты: "Я всегда мечтал о маленьком простеньком Word Processor-e, позволяющем делать минимальное оформление, чтобы при этом умел картинки, таблицы, а уж о том, чтобы он был совместим с MS-Office, я и мечтать не осмеливался" (Виктор Вагнер, http://ppg.ice.ru/ppg/14420).

Полностью присоединюсь к мнению предыдущего оратора, что такой текстовый процессор есть — это Ted, разработка Марка де До (Mark de Does), доступный на ftp://ftp.nluug.nl/pub/editors/ted. Впрочем, это оригинальная версия, хотя и пригодная к использованию в наших условиях, но требующая для этого некоторых телодвижений. А поскольку мы решили, что текстовый процессор пока нужен нам для написания бюрократических бумажек, такие телодвижения представляются излишними.

И потому лучше воспользоваться продуктом, готовым к употреблению — бинарным пакетом (в формате rpm) из дистрибутива Linux Mandrake 7.0/RE или Appendix к оному. Установленный Обычным образом, Ted сразу после своего запуска, сопровождаемого заставкой в стиле старых фламандцев, обнаруживает русский интерфейс в меню, состоящее из двух пунктов (не считая пренепременного Help, сиречь Подсказка) — Файл и Окно. Посредством первого из них, как нетрудно догадаться, можно создать или открыть файл, после чего окно программы преображается ), а меню обрастает многочисленными пунктами, обычными для всех текстовых процессоров: Правка, Вставка, Шрифт, Таблица, Формат, Инструменты.

Ted основан на коммерческой библиотеке Mofit, но может быть собран с использованием ее свободных аналогов (например, Lesstif). Это я к тому, что, как и большинство Motif-приложений, он не имеет инструментальной панели. Что кое-кто (впрочем, этот кое-кто — не я) полагают недостатком.

Я не буду подробно описывать строение меню Ted, большая часть его пунктов достаточно прозрачна для любого, хоть раз в жизни видевшего текстовый процессор. А остановлюсь, в рамках поставленной перед ним задачи, на возможностях — раз, и на средствах обмена документами — два.

Ну конечно, Ted обладает и средствами набора и редактирования текстов. Но я не назвал бы их выдающимися. Разумеется, поддерживаются стандартные функции копирования, вырезания, вставки (пункт меню Правка), для чего задействованы своеобычные клавишные комбинации (<Ctrl>+<0, <Ctrl>+<X>, <Ctrl>+<V> соответственно), работающие, что приятно, и при кириллической раскладке клавиатуры. Есть возможность поиска и замены (пункт меню Инструменты), впрочем, без возможности включения/отключения чувствительности к регистру и без использования регулярных выражений. Здесь же, в Инструментах, возможна проверка орфографии собственными средствами (не с помощью стандартного ispell).

Существует возможность работы с таблицами через пункты меню Вставка ¦ Вставить таблицу или Таблица ¦ Вставить таблицу (вообще, дублирование действий в различных пунктах главного меню — характерная черта этого процессора). По умолчанию создается таблица в две строки и две колонки; в дальнейшем количество и тех, и других может быть увеличено или уменьшено через соответствующие подпункты меню Таблица.

Возможна и вставка изображений (пункт меню Вставка [ Вставить картинку), причем достаточно широкого спектра растровых форматов (TIFF, GIF, JPEG, PNG и другие). Вставленную картинку можно масштабировать, зафиксировав на ней курсор двойным щелчком, но нельзя перемещать.

Оформительские возможности Ted не то чтобы обширны, но достаточны. По умолчанию доступен список из четырех стандартных гарнитур: Times, Helvetica, Courier, Symbol, который может быть дополнен с помощью некоторых манипуляций. Можно изменить начертание (нормальное на курсивное, выделенное и выделенное курсивное) и кегль (от 8 до 64), что проделывается идентичным образом через пункты меню Шрифт ¦ Выбор Шрифта или Инструменты ¦ Выбор шрифта. Кроме того, может быть использовано подчеркивание, верхние и нижние индексы.

К фрагментам текста может быть применено форматирование: абзацные отступы произвольной величины, выравнивание по одному из краев, по центру или двустороннее (опять-таки, либо через Формат ¦ Форматирование, либо через Инструменты ¦ Форматирование).

Каковы возможности обмена документами между Ted и иными приложениями? На первый взгляд — весьма ограничены. Понимаются и для считывания, и для записи лишь два формата: чисто текстовый и RTF (Rich Text Format). Конечно, в последнем случае при считывании неизбежны некоторые потери форматирования. Но зато кириллический RTF-файл, записанный из MS Word для Windows (естественно, в кодировке СР-1251), будет корректно считан Ted и, после редактирования, записан в той же кодировке. Что, в принципе, почти решает проблему взаимодействия с Windows-коллегами.

Разумеется, умеет Ted и печатать (через меню Файл ¦ Печать), обнаруживая при этом даже всякого рода настройки, как то: изменение размера бумаги (А4—А6, Letter, Legal), расположения страниц на ней — одна, две или четыре страницы на листе, интервала печати. Правда, русский текст при первой попытке получается далеко не всегда. Возможно, придется добавить метрики кириллических шрифтов в каталог /usr/lib/Ted/afm/ и внести соответствующие изменения в файл fonts.dir. Процедура эта обзорно будет описана в заключительном разделе этой главы.

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

Для полноты картины упомяну и еще об одном аналогичном инструменте — текстовом процессоре AbiWord, основанном на библиотеке Gtk и активно разрабатываемом в рамках концепции GNOME-офиса. Он позволяет считывать текстовые и RTF-файлы, а также напрямую понимает документы MS Word 6/95 и MS Word 97/2000. Сохранение возможно в собственном формате ABW (основанном на стандарте XML), а также в текстовом формате, RTF, HTML и даже LaTex. Судя по имеющейся информации, в последних версиях появилась возможность работы с кириллицей. Чего, впрочем, лично не проверял — во-первых, из-за общей нелюбви к GNOME-приложениям (нужно признаться, взаимной), во-вторых, из-за неполной функциональности программы. Впрочем, обновляется она очень активно и, возможно, скоро будет достойным выбором для помянутого бюрократа и головотяпа.

Lyx и Klyx

В отличие от Ted, Lyx и его клон для среды KDE, Klyx, предназначены, в первую очередь, для оформления созданных текстов. Конечно, с их помощью можно и набирать тексты, и их редактировать — все необходимые для этого функции имеются. Однако основное их назначение — выдавать готовый для печати PostScript-файл. Впрочем, и при этом главное достоинство обеих программ остается за кадром. Но — по порядку.

Программа Lyx стандартным компонентом входит в состав почти всех известных мне дистрибутивов. По сути своей это не самостоятельный текстовый процессор, а графическая надстройка над широко известной в узких кругах издательской системой ТеХ (в варианте TeX—LaTeX), наличие которой в установленном виде — непременное условие функционирования Lyx (и Юух тоже).

Как Lyx, так и Юух, входящий в состав корректно русифицированных дистрибутивов (Linux Mandrake и Black Cat Linux), изначально пригодны к использованию в русскоязычной среде. В противном случае потребуются некоторые не вполне тривиальные действия для его русификации. Я на них останавливаться не буду, так как они подробно описаны Виктором Вагнером (http;//ppg.ice.ru/ppg/14076).

Если потребности в русификации нет, можно приступать к работе. И Lyx, и Юух — программы чрезвычайно похожие по принципам действий. Различия между ними — в некоторых дополнительных возможностях и деталях интерфейса. Поэтому я расскажу о программе Юух, с которой больше имел дела, а затем вкратце остановлюсь на отличиях исходного Lyx.

Сразу после запуска Юух возникает окно, содержащее строку главного меню, основную инструментальную панель с достаточно стандартным набором кнопок и несколько дополнительных панелей. Последние могут быть включены или выключены, но в полном виде включают панели формул, таблиц и символов. Впрочем, и показ основной панели можно отключить.

В момент запуска в главном меню Юух активизированы пункты Файл, Настройки и Помощь. Последний в комментариях не нуждается, а на настройках остановлюсь подробнее. К ним относятся:
Настройка экрана, где определяются экранные шрифты и их кодировка, а также включаются или выключаются панели инструментов;
Параметры проверки орфографии, где определяется язык словаря (по умолчанию совпадающий с языком текущего документа), подключается дополнительный пользовательский словарь и определяются некоторые другие параметры (например, разрешенные в словах специальные символы);
Клавиатура, где назначаются основной и дополнительный языки, кодировки и т. д.;
LaTeX — этот пункт становится доступным только при открытом документе.

В пункте Файл, очевидно, можно создать новый документ (в том числе на основе шаблона) или открыть существующий. После этого активизируются остальные пункты меню: Редактирование, Формат, Вставить, Документы. Большая их часть вполне понятна из названия и содержания подпунктов. Однако результат соответствующих действий может оказаться несколько неожиданным. Так что перво-наперво следует уяснить себе специфику Юух (и Lyx вообще, все сказанное ниже относится к обеим программам) сравнительно с привычными текстовыми процессорами для Windows и их Linux-имитаторами (типа описанного в следующей главе StarWriter из комплекта StarOffice).

Для начала следует уяснить, что Lyx не является редактором типа WYSIWYG. Хотя обычно и величается этим звучным титулом. Конечно, всякого рода форматирующие действия (сконцентрированные в пункте меню Формат) имеют своим следствием изменение экранного представления документа (хотя и не всегда, как будет показано ниже). Однако это не более чем некоторая условная визуализация, не вполне соответствующая (а иногда вполне не соответствующая) тому, что будет получено на печати. Точное же представление того, в каком виде документ станет выводиться на принтер, можно получить только после генерации файла PostScript или DVI и их просмотра во внешнем визуализаторе (например, ghostview), что осуществляется через пункт меню Файл ¦ Просмотр ¦ Просмотреть PostScript (или, соответственно, Просмотреть DVI).

Поэтому не следует удивляться, если вы, например, изменили ориентировку таблицы с горизонтальной на вертикальную (а Lyx, честь ему и хвала, позволяет развернуть как таблицу целиком, так и отдельные ее ячейки и их серии) и не получили никакого видимого эффекта. Обращаемся к просмотру PostScript-файла и видим, что в итоговом печатном варианте ориентировка благополучно изменена.

Вторая особенность — жесткая ориентация Lyx на стилевое представление, каковое ничего общего не имеет с форматированием как созданием визуальных эффектов, а отражает логическую структуру документа. И потому, в отличие от редакторов типа MS Word, стили находятся не в пункте меню Формат, а вынесены в выпадающее меню на основной инструментальной панели.

Смысл доступных по умолчанию стилей легко понять любому, хоть раз в жизни создававшему HTML-страницу непосредственно в кодах. Что и не удивительно, поскольку как HTML, так и ТеХ (база Lyx и Юух) основаны на языке SGML (Standard Generalized Markup Langauage, стандартном обобщенном языке разметки).

Так вот, в списке доступных стилей — заголовок (Title), рубрики разного уровня, нумерованные и ненумерованные (Part и Part*, Section и Section*, и т. д. соответственно), элементы ненумерованных и нумерованных списков (Enumerate и Itemize соответственно). Paragraph и Subparagraph, а также ряд более специфических: Author, Date, Bibliography, Abstract и другие. Кроме всего прочего, имеется стиль Standard, приписываемый любому введенному (или импортированному) текстовому блоку по умолчанию.

Эти особенности создают определенный дискомфорт в работе при отсутствии должных навыков. Возникает вопрос, а есть ли у Юух достоинства, ради которых стоит такие навыки приобретать? Агитировать не буду, судите сами.

О возможностях стилевого оформления и форматирования говорить не стану: они аналогичны любому современному текстовому процессору, хотя, как можно понять из вышесказанного, и осуществляются несколько иначе. А вот возможности вставки всяких специальных элементов — поистине безграничны. И осуществляются через соответствующие подпункты пункта Вставить главного меню.

В Юух (и Lyx также) легко и просто создаются оглавления и указатели (предметные, списки иллюстраций, таблиц, библиографические ссылки). Предусмотрены вставки примечаний, сносок, заметок на полях, перекрестных ссылок, элементов индексных списков. В Lyx, помимо этого, существует понятие вставки кадров, содержимым которых может быть таблица или рисунок.

Возможна (и в Lyx, и в Юух) просто вставка рисунков, правда, в одном единственном формате — PostScript (ps, eps), в который, впрочем, силами практически любого графического редактора может быть претворен каждый графический формат.

Вставка рисунка происходит в два этапа. Сначала через меню Вставить ¦ Рисунок образуется пустая рамка. Щелчок мышью на ней вызывает окно, через которое определяется требуемый графический файл (ps или eps) и параметры рисунка: его ширина и высота (исходные, в сантиметрах, дюймах или процентах от размера страницы), представление (монохромное, в градациях серого, в цвете), разворот (на произвольный угол), заголовок и т. д. Все эти параметры в любой момент могут быть изменены (тем же щелчком мыши на рисунке). Что вполне компенсирует отсутствие возможности интерактивного масштабирования.

Чрезвычайно развиты функции работы с таблицами: не случайно в Юух этому посвящена самостоятельная инструментальная панель. По умолчанию через пункты меню Вставить ¦ Таблица создается таблица в пять строк и столбцов (это число может быть изменено в тот же момент с помощью ползунков). При этом первая строка автоматически приобретает статус шапки таблицы (Caption). Далее, в любой момент может быть добавлено любое количество как строк, так и колонок (правда, только по одной за раз).

Содержимое ячеек таблицы может быть выровнено по левому или по правому краю, а также центрировано (двусторонняя выключка не предусмотрена). В каждой ячейке таблицы, их группе, а также во всей таблице целиком могут быть показаны (по умолчанию) или скрыты ограничивающие рамки с любой из сторон (и со всех сразу). Две и более ячеек могут быть объединены, правда, только по горизонтали — объединение вертикально расположенных ячеек невозможно. Но зато можно изменить ориентацию любой ячейки или их группы, как, впрочем, и всей таблицы целиком. Последнее делается через выпадающее меню в левой части панели Таблица, содержащее три пункта: Обычная, С поворотом (именно то, что требуется в данном случае), Длинная.

Последний пункт этого меню заслуживает особого внимания. Он предназначен для создания таблиц, заведомо продолжающихся на нескольких (в том числе и многих) страницах. Выбор его приводит к активизации в правой части панели Таблица еще одного выпадающего меню. Через него могут быть заданы те элементы, которые должны повторяться на каждой странице с данной таблицей: заголовки и колонтитулы разного уровня.

Никаких проблем не вызывает печать из Юух, в том числе и кириллических текстов (повторю, что это касается только того его варианта, который входит в состав Linux Mandrake RE или Black Cat Linux). Она осуществляется через встроенную в Linux систему эмуляции PostScript, именуемую GhostScript. Разумеется, если вы обзавелись принтером с аппаратной поддержкой PostScript, необходимости в эмуляции не возникнет. Понятно, что это требует дополнительных аппаратных ресурсов и затрат времени, но на современных машинах проблем не вызывает.

Все сказанное относилось к обоим вариантам — и к Юух, и к Lyx просто. Последний обладает некоторыми особенностями. Интерфейс его несколько проще: строка меню и единственная инструментальная панель. Но возможности — несколько шире. Так, Lyx обладает более богатыми опциями вставки математических формул и функций, возможностью вставки кадров. В русскоязычных версиях этих программ различается и терминология: в Lyx она выглядит более традиционной, в Klyx — удобопонятной (впрочем, это на мой взгляд).

К недостаткам Lyx и Юух можно отнести ограниченные возможности обмена документами. Обе программы напрямую способны открывать и сохранять только файлы собственного формата (1ух). Через Файл ¦ Импорт (в Lyx) или Вставить ¦ Вставить файл ASCII (в Юух) можно считать текстовый файл (русскоязычный — в кодировке KOI-8-R). Из обеих программ возможен экспорт в форматы LaTeX, DVI, PostScript, ASCII, для Lyx также и в формат HTML. Относительно бедности понимаемых графических форматов (только PS и EPS) я уже говорил.

Тем не менее, богатство возможностей по оформлению текстов и простота их использования (после освоения, каковое требует некоторых сил и времени), на мой взгляд, более чем окупают эти недостатки. Особенно, если речь идет об объемных и сложно структурированных текстах, например, научного содержания, требующих развитого аппарата в виде оглавлений, примечаний, ссылок, указателей и прочего, оформленного большим количеством сложных таблиц и штриховых иллюстраций (для полноцветных иллюстраций Lyx, разумеется, не лучший выбор).

Однако главную прелесть Lyx и Юух начинаешь понимать, если открыть файл 1ух в простом текстовом редакторе. А увидеть в этом случае можно нечто вроде вот этого:

#This file was created by <alv> Sun Nov 12 12:02:21 2000

#LyX 0.12 (С) 1995-1998 Matthias Ettrich and the LyX Team 

\lyxfonnat 2.15 

\textclass article 

\language russian 

\inputencoding koi8-r

...

\papersides 1 

\paperpagestyle default 

\layout Part 

Lyx и Klyx 

\layout Standard

Догадались, что это такое? Правильно, исходный код документа, сверстанного в ТеХ. И потому одно из главных достоинств Lyx — это возможность относительно простым способом изучить эту издательскую систему. Путем совершения интерактивных действий с визуальным результатом, и дальнейшим просмотром образовавшегося после этого кода. Подобно тому, как использование Dreamweaver для Windows — один из наиболее эффективных способов изучения языка HTML. Правда, в Lyx этот процесс происходит не в реальном времени, но, кто знает: вдруг кто-нибудь сподобится создать его версию с возможностью одновременного просмотра ТеХ-кода?

Впрочем, о ТеХ я говорить не буду: во-первых, не имею на то морального права, так как целиком еще ни одной книги в нем не сверстал. Во-вторых, на эту тему написано немало хороших книг, начиная с основополагающего труда Дональда Кнута.

Русские буквы, шрифты, правописание

Проводя в деревне лето, Их своди на скотный двор:

Помогает много это Расширять их кругозор;

Но желаньем подстрекаем Их сюрпризом удивить, Не давай, подлец, быка им В виде опыта доить.

А. К. Толстой, "Мудрость жизни"

Все, сказанное в предыдущих разделах этой главы, основывалось на молчаливом допущении, что главная проблема — ввод русских букв, — решена изначально. В ряде случаев это может быть и так, но не обязательно. И потому в заключительной части главы я некоторым образом эту проблему затрону.

В последнее время актуальность темы русификации Linux, казалось бы, утрачена, поскольку ряд дистрибутивов ныне русифицирован, что называется "из коробки", примером чему — Mandrake 7.0/RE и Black Cat 6.2. Однако возможно, что вам по каким-либо причинам не захочется их использовать. В прочих же, импортных, дистрибутивах, поддержка русского языка может осуществляться не вполне корректно (исключение, насколько мне известно, — SuSE) или вообще отсутствовать как класс. Что потребует личного вмешательства при необходимости печатать русские буквы.

Кроме всего прочего, выполнение русификации своими собственными руками полезно для общего образования. И, подобно посещению скотного двора, много расширяет кругозор, особенно проделывание этого в разных дистрибутивах. Только не следует увлекаться и править русификацию в дистрибутивах, в которых она и так имеется — эффект может быть тот же, что и от доения быка.

Общие соображения

Конечно, на тему русификации написано немало и хорошо. Однако ряд рекомендаций — достаточно стары и требуют корректировки. К тому же, мои наблюдения показали, что нет двух дистрибутивов, русифицируемых одинаково — хоть какие-то мелочи, да различаются. И, к тому же, процесс этот имеет кое-какие подводные камни.

В общем, тема русификации столь же необъятна, как и сам Великий и Могучий, что и заставляет меня еще раз обратиться к ней. Поводом послужило непреодолимое желание ознакомиться с новым изделием MandrakeSoft — бета-версией 7.2, каковая в оригинальном исполнении русский язык поддерживать не желала категорически.

Хотя в ней, как и в паре предыдущих релизов, при инсталляции можно было выбрать русский язык, радости это приносило мало за полным отсутствием русских экранных шрифтов. А инсталлировать Linux наугад — это, пожалуй, посложнее сеанса одновременной игры вслепую на 30 досках. По крайней мере, я, не смотря на некоторый опыт (игры в шахматы в слепую, имеется в виду), проделать это не рискнул.

Правда, в ходе англоязычной инсталляции от лица эксперта можно указать на необходимость поддержки еще какого-нибудь языка (в прочих режимах — нельзя), среди которых имеется и русский. Однако никаких практических следствий из этого (кроме, разве что, установки русских шрифтов) не будет. После инсталляции обнаруживается, что русские буквы нельзя ни видеть, ни вводить с клавиатуры. Ни в консоли, ни в системе Х Window.

Непримиримое противоречие между желанием покопаться с Mandrake 7.2 и необходимостью иногда все же и работать (для чего мне требуются хоть какие, но русские буквы) заставило меня засучить рукава и заняться русификацией вручную. Когда-то, на заре моего знакомства с Linux, я неоднократно (и с переменным успехом) проделывал эту процедуру в отношении Red Hat и Slackware (не помню уже, каких версий), но, избалованный Mandrake в русской ипостаси, все напрочь позабыл. А посему взял подручные первоисточники и принялся рассуждать.

Из чего, в сущности, складывается русификация? Равно как и китаизация, японизация и т. д. Из возможности: а — видеть русские (или всякие другие) буквы на экране; б — вводить их с клавиатуры и в — печатать на принтере. Причем, по вполне понятным причинам, для реализации этих возможностей в текстовом и графическом режиме действия должны быть различными. Начнем, естественно, с более Простого случая, текстового (сиречь консольного) режима.

Разумеется, подчас требуется еще и так называемая локализация, то есть представление даты, времени/десятичных дробей, денежных единиц и прочего в виде, принятом в данной конкретной стране. Однако на этой проблеме подробно я останавливаться не буду. Во-первых, для индивидуального пользователя, по большому счету, глубоко безразлично, что идет сначала — число или месяц (давеча, именуя большое количество файлов по дате их создания, осознал преимущества американского формата даты). Во-вторых, применительно к нашей конкретной стране, полная локализация вообще бессмысленна: кто поручится, что очередному нашему вождю не придет в голову изменить не только номинацию, но и название нашей национальной денежной единицы? Не говоря уже о таких мелочах, как формат десятичной дроби.

"А впрочем, это в шутку". На самом деле установка правильной "локали" желательна, а иногда и необходима, для корректной передачи русскоязычных сообщений в локализованных версиях программ, например, которых с каждым днем становится все больше и больше. И процедуру эту мы по возможности проделаем в свое время. Пока же вернемся, однако, к тому, как происходит русификация консоли.

Русификация консоли

Так вот, для осуществления вывода русских букв на текстовый терминал требуются шрифты с русскими буквами. Причем в нужной кодировке, каковой, традиционно для Linux, является кодировка KOI-8. Таковых можно найти вдоволь в каталоге /usr/lib/kbd/consolefonts.

Однако, столь же традиционно, для вывода на экран в Linux обычно используются шрифты в альтернативной кодировке (она же кодировка DOS, СР-866 и т. д.). Я встречал несколько объяснений причины этого явления — от низкого качества KOI-шрифтов до невозможности передачи символов псевдографики в консольных приложениях. Обе, насколько я понимаю, ныне потеряли силу: и шрифты стали получше, и псевдографику с их помощью передавать можно. Тем не менее, обыкновение такое осталось, и отказываться от него оснований не вижу.

А посему второй момент русификации — это установка карты соответствия (screen map), которая производит перекодирование из KOI-8 ("то есть внутренней кодировки") в СР-866, в которой существует экранный шрифт. Такие карты соответствия (файлы шаблона *.trans) можно найти в каталоге /usr/lib/kbd/consoletrans.

И главное — вся эта музыка должна быть доступна системе. Конечно, можно вводить соответствующиекоманды установки шрифта (setfont) и карты соответствия (mapscrn) вручную в каждом сеансе. Но не напоминает ли это самый безопасный вид секса? Проще произвести эти действия раз и навсегда.

Для этого ищем файл конфигурации, считываемый при загрузке. Таковые, вестимо, хранятся в каталоге /etc. С определенной долей уверенности можно ожидать, что за требуемые нам параметры отвечают файлы из каталога /etc/rc.d. Файлов гс.* там можно видеть несколько, причем — разных, в зависимости от дистрибутива и, возможно, его версии. Однако один такой файл присутствует с вероятностью, близкой к 100% — /etc/rc.d/rc.local. Из комментариев в его теле становится ясно, что считывание этого файла происходит после всех остальных инициализационных файлов. Поэтому вряд ли будет ошибкой вставить требующиеся нам команды именно в него.

Для чего открываем /etc/rc.d/rc.local, идем в его конец (хотя это и не принципиально) и вставляем строки

setfont /usr/lib/kbd/consolefonts/Cyr a8xl6 

mapscrn /usr/lib/kbd/consoletrans/koi2alt.trans

Естественно, если вы решили воспользоваться каким-либо шрифтом в кодировке KOI-8, необходимости во второй строке нет. Также, возможно, необязательно указывать полные пути, скорее всего, система о них и так знает. Однако гарантировать это во всех случаях нельзя. И потому, если никаких русских букв без указания полного пути не получилось — ничего страшного, введите эти пути полностью, и все придет в норму.

Но — не сразу. Сначала нужно проделать еще одно действо, а именно: активизировать карту соответствия для каждой из Имеющихся в системе виртуальных консолей (скорее всего, их шесть). Это можно сделать различными способами, но наиболее универсальный — с помощью ESC-последо-вательности, каковая, опять же, может быть введена руками в командной строке:

echo -ne '\033(К'

где опция -п запрещает вывод символа новой строки по завершении работы команды, а опция -е предписывает трактовать следующие за ней символы \озз именно в качестве ESC-кода.

Впрочем, можно поступить проще, внеся соответствующую команду во все тот же файл /etc/rc.d/rc.local. Например, в виде цикла:

for i in 1 2 ... # 

    do

        echo -ne '\033(K' > /dev/tty$l 

done

где в первой строке перечислены все имеющиеся в системе виртуальные консоли (как уже сказано, скорее всего, их у вас шесть), а строка echo -ne '\033(K' > /dev/tty$l перенаправляет вывод команды echo с указанными параметрами на каждую из них.

На этом с выводом на экран закончено (возможно, почти закончено). Осталось разобраться с вводом русских букв с клавиатуры. Для чего нужно всего-навсего считать командой loadkeys нужную клавиатурную раскладку. Они, скорее всего, находятся в каталоге /usr/lib/kkb/keymaps/i386/qwerty (если такового не окажется, поищите где-нибудь в районе /usr/share) и представлены в виде файлов с шаблоном *.kmap.gz или *.map.gz.

Кириллических раскладок, опознаваемых по именам файлов типа ru*.kmap.gz, может быть много. Скорее всего, можно будет выбрать, по крайней мере, из четырех вариантов — начиная с nil и кончая ru4, хотя не исключены и всякого рода ru-cpl251, ruwin и т. д.

Файлы эти можно просмотреть (например, через клавишу <F3> из Midnight Commander). Скорее всего, в начале каждого файла обнаружится комментарий, описывающий тип раскладки (соответствующий DOS, Windows и т. д.) и клавиши для переключения с латиницы на кириллицу. Лично я предпочитаю раскладку ru4 и ее аналоги (вроде niwin_cplk). Она похожа на стандартную Windows-раскладку (с кириллическими точкой и запятой на месте латинских / и ? соответственно) и переключением латиница/кириллица через клавишу <Caps Lock>).

Выбрав импонирующую и привычную раскладку, можно увековечить ее, внеся в завершение все того же файла /etc/rc.d/rc.local строку типа

loadkeys ru4

или другую понравившуюся. И наслаждаться видом набираемых русских букв на экране, сколько душе угодно. В том числе и в командной строке. Если же последнее не получится — потребуются еще некоторые телодвижения, чтобы обучить командную оболочку пониманию 8-битных символов. Поищите файл /etc/inputrc. В нем должны присутствовать строки вида

set meta-flag on 

set convert-meta off 

set input-meta on 

set output-meta on

возможно, с комментарием, что именно они отвечают за поддержку восьмого бита

# SBits supports

Если таких строк не обнаружится, их следует туда внести или просто создать в своем домашнем каталоге файл SHOME/.inputrc вышеозначенного содержания. После этого можно вводить русские буквы в командной строке, сколько угодно. .Вплоть до русских имен файлов, чего, впрочем, не советую, из общих соображений.

Да, еще вот что. Если все описанные манипуляции производились непосредственно путем записи в файл rc.local, то для вступления Изменений в силу следует перезагрузиться. Если же ради интереса вы предварительно опробовали эти действия вручную, вводом в командной строке, то можно обойтись и без перезагрузки. Единственно, для изменения параметров командной оболочки (если потребовалось модифицировать файл inputrc) нужно завершить свой пользовательский сеанс (командой logout, скажем) и авторизоваться заново.

И последнее: если по завершении всех действий не удастся увидеть или ввести русские буквы во встроенном редакторе Midnight Commander, проверьте, включена ли поддержка восьмого бита на выводе (где она обычно присутствует по умолчанию) и вводе (где ее, скорее всего, по умолчанию нет). Что делается через пункт меню Options ¦ Display bits.

Напоследок, в развитие достигнутого, можно для порядка настроить и систему локализации (locale), хотя, как говорилось, это — от лукавого. Но не помешает при дальнейшей русификации системы X Window.

Под локализацией подразумевается установка для переменной окружения LANG значений языка, страны и набора символов. В нашем конкретном случае,она должна иметь вид.

LANG=ru_RU.KOI8-R

хотя, как говорят, некоторые системы продолжают жить в стране su. Разумеется, должны присутствовать и соответствующие файлы, описывающие цифровые, денежные, временные и тому подобные форматы:

LC_MESSAGES/

LC_COLLATE

LC_CTYPE LC_MONETARY

LC_NUMERIC LC_TIME

Файлы эти имеют место быть в каталоге /usr/share/locale/ru_RU.KOI8-R (опять-таки, применительно к конкретному случаю). Если нет, их следует туда установить, взяв с какого-либо дистрибутива или из Сети. После чего дается команда

export LANG=ru_RU.KOI8-R

вслед за чем осуществляется проверка. Путем, например, ввода команды date, ответом на что должны быть текущие день недели, дата и время по-русски и в принятом у нас формате. Если проходит— соответствующая строка вносится в файл /etc/profile для повседневного использования.

Выше я, возможно, излишне подробно говорил о вещах, которые могут показаться тривиальными и, к тому же",^ могущих быть неоптимальными в случае каждого конкретного дистрибутива. Однако, как я уже говорил, дать исчерпывающие и при этом однозначные рекомендации по поддержке русских букв в каждом конкретном дистрибутиве весьма затруднительно — уж слишком они, эти дистрибутивы, различаются структурой своей файловой системы.

Однако предложенные рецепты если и не универсальны, то работают во многих случаях. Лично это проверено на упоминавшемся Linux Mandrake 7.2 (beta 1) и на Slackware 7.1. И в обоих случаях все сработало без малейших затруднений. А поскольку Mandrake по структуре каталогов недалеко отошел от своего Прототипа (Red Hat), можно предполагать, что все описанное будет действовать и для большинства клонов последнего.

Правда, как я недавно выяснил, все сказанное относится только к дистрибутивам, использующим для управления консолью пакет kbd. В некоторых же дистрибутивах для этой цели'служи'т'пакет console-tools. Пример чему — последняя (2.2) версия Debian GNU/Linux. Что, однако, жизни не осложняет — просто нужно выполнить несколько иные действия.

Перво-наперво, для установки экранного шрифта и активизации карты соответствия ищется файл7е1с/соп$61е-1ооЬ/соп1^. В первозданном виде он не содержит ничего, кроме неких комментариев. Вписываем в него строку

SCREEN_FONT=Cyr_a8xlб

или указываем иной приглянувшийся'яам шрифт из имеющихся в наличии, в том числе и в кодировке KOI-8. Следующий шаг (необходимый, естественно, только для шрифта в альтернативной кодировке) — установка карты соответствия (сразу для всех виртуальных консолей):

APP_CHARSET_MAP_vcl=koi2ait .trails

...

APP_CHARSET_MAP_vc#=koi2alt.traris

Теперь для проверки правильности наших действий (дабы не терять время на перезагрузку) запускаем шрифт активизации изменений

/etc/init.d/console-screen.sh start

и имеем удовольствие видеть русские буквы в каком-либо заблаговременно созданном файле; А для того, чтобы создавать русские тексты заново, устанавливаем клавиатурную раскладку' по умолчанию. Для чего отыскиваем симпатичный нам файл в /usr/share/keymaps/i386/qwerty (например, ru4.map.gz), копируем его в каталог /etc/config и переименовываем в defaults.n-iap.gz.

И в качестве финального упражнения устанавливаем систему локализации, для чего ищем файл /etc/environment и записываем в него

LANG=ru_RU.KOI8-R

предварительно убедившись, что требуемый каталог и его содержимое имеются в наличии. Завершив сеанс и авторизовавшись по новой, проверяем правильность наших действий той же командой date и с радостью видим на экране дату, время и день недели, написанные по-русски.

На чем и успокаиваемся. Поскольку впереди у нас еще одно мероприятие или даже, точнее сказать, операция русификации системы Х Window.

Русификация системы Х Window

Для русификации системы Х Window требуется то же самое, что и для русификации консоли — вывод русских букв на экран и ввод их с клавиатуры. Ну и locale, разумеется, для порядку, хотя и не только.

Последнее — проще всего: нужно отыскать файл /usr/XllR6/lib/Xll/ locale/locale.alias и убедиться, что в нем имеются (скорее всего это так и есть) строки типа

ru:             ru_RU.KOI8-R 

ru_RU:          ru_RU.KOI8-R 

ru_RU.iso88595: ru_RU.IS08859-5 

ru_RU.koi8r:    ru_RU.KOI8-R

или внести их самостоятельно, если они отсутствуют.

Со шрифтами также достаточно просто. Некий комплект кириллических гарнитур в кодировке KOI-8-R, именуемый Сгопух, имеется практически в любом из распространенных современных дистрибутивов. Это растровые шрифты, весьма далекие от эстетического совершенства, но для начала они сойдут (подробнее о шрифтах я поговорю позднее). Нужно только озаботиться тем, чтобы они были доступны системе.

Мне известно два способа обращения со шрифтами в системе Х Window: непосредственно через файл конфигурации XF86Config или через сервер шрифтов (xfs, то есть Х Font Server). Первый способ применяется, например, в Slackware и Debian, второй — в Red Hat и большинстве его клонов, в том числе и в Mandrake.

Чтобы сделать кириллические шрифты доступными первым способом, нужно, во-первых, отыскать их. Скорее всего, они находятся в каталогах /usr/XHR6/lib/Xll/fonts/KOI8/, /usr/XHR6/lib/Xll/fonts/cyrillic или что-нибудь в этом роде. Возможно, таких каталогов будет несколько, со шрифтами для разных разрешений (почти наверняка — 75 и 100 dpi). Или внутри единого "кириллического" каталога будет несколько подкаталогов. Запомним это.

Во-вторых, открываем файл XF86Config. В нем содержится (скорее всего, в самом начале, хотя бывают и исключения) секция, описывающая пути к файлам (именуемая section "Files"), а в ней — несколько строк вида

FontPath "/usr/XHR6/lib/Xll/fonts/..."

с перечислением путей к каталогам для различных типов шрифтов. Так вот, в самое начало этого списка следует внести одну или несколько строк с путями к файлам кириллических шрифтов. Если вам, вследствие плохого зрения, например, предпочтительны крупные шрифты, пути до шрифтов с разрешением 75 и 100 dpi следует прописать отдельно, поставив последние в начало перечня, например, таким образом:

FontPath "/usr/XllR6/lib/Xll/fonts/KOI8/100dpi/" 

FontPath "/usr/XllR6/lib/Xll/fonts/KQI8/75dpi/"

Разумеется, никто не может вам запретить таким же образом поступить и с любыми другими шрифтами, в том числе и не обязательно в кодировке KOI-8. Разумеется, возможно, что кириллические шрифты уже присутствуют в списке путей файла XF86Config. В этом случае единственное, что необходимо сделать — это передвинуть их в нужном вам порядке в его начало.

Следует всегда помнить (и это почти общее правило для всех конфигурационных файлов), что чем ближе каталог нужных шрифтов к началу списка, тем больше вероятность нахождения конкретной программой желательного для вас кириллического шрифта. Поскольку количество шрифтовых гарнитур ограничено и они, в основном, почти одноименны, вне зависимости от языковой принадлежности и кодировки. К тому же, за счет системы псевдонимов (псевдонимы эти можно посмотреть в файле fonts.alias, содержащемся в том же каталоге, что и интересующие вас шрифты), сходные (а иногда и не очень) гарнитуры могут восприниматься и системой, и программой, как одна.

В случае, если шрифты управляются программой xfs, строка путей к ним в секции "Files" будет иметь не очень вразумительный вид, например:

FontPath "unix/:-!"

Однако и тут нет ничего страшного. Поскольку пути к шрифтам все равно в явном виде прописаны в файле /etc/Xll/fs/config и имеют вид вроде следующего:

catalogue = /usr/XHR6/lib/Xll/fonts/KOI8/100dpi, 

              /us.r/XllR6/lib/Xll/fonts/KOI8/75dpi, 

              /usr/XHR6/lib/Xll/fonts/KOI8/misc, 

              /usr/XllR6/lib/Xll/fonts/misc, 

              /usr/XHR6/lib/Xll/fonts/Typel

и т. д. Проделываем с этой записью то же, что и в предыдущем случае, то есть вносим пути к файлам кириллических шрифтов (при отсутствии) или просто перемещаем соответствующие строки в начало (при наличии), как это сделано в приведенном примере.

Хуже, конечно, если кириллических шрифтов в системе нет вообще. В этом случае их надо сначала раздобыть и установить в соответствующих местах. Где и как — расскажу в разделе о шрифтах.

А вот с клавиатурными раскладками дело обстоит несколько сложнее; Поскольку существует не менее трех методов работы Х Window и его приложений с разноязычными клавиатурами: через подмену карты раскладки (Xmodmap), через резидентные программы-русификаторы клавиатуры и через систему ХКВ.

Первые два способа считаются идеологически "неправильными". Поскольку они либо переписывают вторую половину кодовой страницы, замещая символы европейских алфавитов (вродЬ немецких умляутов, французской диакритики и прочего) соответствующими кириллическими, как это делается при замене Xmodmap, либо подменяют кириллическими знаками символы первой половины стандартной кодовой таблицы. Тогда как система ХКВ преобразовывает коды нажимаемых клавиш в коды символов, используя общесистемные библиотеки.

Впрочем, в теорию этого вопроса я углубляться не буду. Она прекрасно описана в фундаментальном мемуаре Ивана Паскаля, который можно найти, например, по адресу http://www.inux.org.ni/books/xkb.) Прочитав его, вы поймете, от каких трудностей вас избавили составители корректно русифицированных дистрибутивов (вроде Linux Mandrake 7.0/RE или Black Cat 6.2), во-первых, и перестанете удивляться, почему некоторые программы не работают с русскими буквами, во-вторых. Большего удивления заслуживает, напротив, то, сколько программ русские буквы все же понимают:

В большинстве случаев, однако, "все не так суицидально, ежли в корень посмотреть". Для русификации клавиатуры через ХКВ обычно достаточно выполнить следующие целительные действа.

Во-первых, нужно озаботиться, чтобы расширение ХКВ (ХКВ Extentiori) было доступно. Для этого следует проследить, чтобы в том же файле XF86Config, в секции "Keyboard" строка

# XkbDisable

отсутствовала вообще или, в крайнем.случае, была закомментирована, как в приведенном примере. . , ,

Во-вторых, в той же секции должны быть указания на язык в виде

XkbLayout "ru"

и переключатель раскладок, например, при

XkbOptions "grp:caps_toggle"

переключение с латиницы на' кириллицу будет осуществляться клавишей <Caps Lock>. Можно добавить «'строку

XkbVariant "winkeys"

следствием чего станет появление Windows-раскладки (с точкой/запятой в нижнем правом углу клавиатуры).

В принципе для русификации клавиатуры можно воспользоваться программой XF86Setup или (в Mandrake начиная с 7-й версии) DrakConf. И та, и другая'позволяют выбрать геометрию клавиатуры (то есть, грубо говоря, количество клавиш), ее "язык" (то есть набор символов) с соответствующими вариациями (для русского языка DOS и Windows-раскладки, а также всякая экзотика вроде DO^-раскладки со знаками препинания на нижнем регистре — по моему, самый удобный вариант дщя повседневного набора) и переключатель раскладок. В качестве последнего могут выступать, помимо вышеупомянутой клавиши <Caps Lock>, также . <Alt>, <Ctrl>, <Shift> в различных сочетаниях (часто с разделением на "левый" и "правый" уклон).

Так что все было бы хорошо,, ни таким образом русские буквы можно вводить только в приложениях, именуемых "правильными". А в "неправильных" приложениях при переключении на кириллическую раскладку, скорее всего, не будет никаких букв вообще. Что делать в таком случае?

На мой-то взгляд, ответ прост: выкинуть неправильное приложение и отыскать его правильный функционадьный аналог. Что, при нынешнем изобилии Программ» сложностей Составить не должно. Тем не менее, возможно, вы являетесь счастливым обладателем неправильной программы, идеально вас удовлетворяющей функционально и, к тому же,уникальной. В этом случае придется затратить некоторые дополнительные усилия. Если, конечно, не прибегнуть к дистрибутиву типа Mandrake 7.Q/RE, где эта проблема решена штатными средствами.

Как — описывать не буду. Во-первых, сам руками: эту процедуру не проделывал. Во-вторых^ несколько способов расправиться с неправильными приложениями описаны у Ивана Паскаля,; коего и.советую почитать, если возникнет в том необходимость.

Осталось немного — индицировать/текущую . раскладку клавиатуры. В Mandrake RE, как уже говорилось, для этого есть штатное средство — программа kkb, позволяющая, кроме того, переключаться на кириллическую раскладку для "неправильных" приложений (так называемую "хакерскую"). Однако выдаваемый, ею индикатор не очень заметен для людей с плохим зрением. Поэтому, возможно, придется поискать что-нибудь другое.

Например, программу fookb Алексея Выскубова, которую можно обнаружить на http://woe.transas.com/penguin. Изначально она приспособлена для оконного менеджера WindowMaker^ но,Г скомпилированная должным образом, способна работать и со многими другими.

Для установки ее требуется, после распаковки архива (fookb.tar.gz), открыть в текстовом редакторе файл Makefile и внести изменения в строки

FIAGS=DWMAKER

И

FLAGS= 

(именно так, справа от знака равенства нет ничего). Если предполагается использование fookb с WindowMaker, знак комментария должен быть на второй строке, если с иным оконным менеджером — на первой. После этого все файлы с расширением хрет (их всего пять, это собственно изображения, индицирующие раскладку клавиатуры) копируются в каталог /usr/local/ share/fookb (естественно, сначала его нужно создать). Ну а затем программа компилируется (просто командой make, без предварительной ./configure и последующей make install) и запускается (вручную или автоматически со стартом какого-либо оконного менеджера). После этого программа (как можно догадаться из названия) позволяет переключать (щелчком мыши или общесистемным клавишным переключателем) до четырех клавиатурных раскладок, одна из которых, естественно, будет английской, вторая — "правильной" русской; то есть для "неправильных" русских раскладок остается еще две позиции.

Однако хватит про клавиатуры, полагаю, что пора переходить к следующему аспекту русификации, который я озаглавил бы как кириллические шрифты.

Кириллические шрифты

Как уже говорилось, малый джентльменский набор кириллических гарнитур присутствует в большинстве распространенных дистрибутивов. Однако они весьма далеки не только от эстетического идеала, но и просто от удобочитаемости, особенно при малых кеглях.

Впрочем, увеличение кегля делает только хуже. Шрифты эти, представленные гарнитурами Times, Courier и парой-тройкой гарнитур Sans Serif, относятся к растровым. И, следовательно, с увеличением размера приобретают ясно выраженные зазубренные очертания. Что особенно уродливо выглядит в графических приложениях типа GIMP или KIllustrator. А уж на курсивное начертание лучше не смотреть.

Впрочем, взирать на это безобразие и не обязательно. Система Х Window позволяет подключать шрифты многих типов, в том числе Adobe Type 1 и TrueType. Причем — в различных кодировках, если дело касается кириллицы. Хотя не все из подключенных шрифтов будут работать во многих приложениях, однако экранную картину это существенно улучшит.

Правда, процесс этот не столь прост, как в Windows, и требует ряда манипуляций руками. Помучавшись со штатными буковками (назвать их шрифтами язык не поворачивается), я решил эти манипуляции проделать.

В качестве объекта приложения своих сил я избрал шрифты Adobe Type I, как более универсальные и имеющие в кириллическом варианте кодировку KOI-8 — основную для Linux и Интернета. Ведь то немногое, что мне требуется в СР-1251, всегда можно конвертировать (и в Linux, и в Windows это давно не проблема).

Правда, и в Интернете изобилия русских шрифтов Type I KOI-8 — отнюдь не наблюдается. Наиболее полные подборки можно получить с ftp-серверов, распространяющих дистрибутивы Linux Mandrake RE (ftp://ftp.logic.ru) и Black Cat (ftp://ftp.blackcatlinux.com). Кроме этого, кириллические шрифты можно найти по ссылкам с http://www.opennet.ru.

Шрифты можно скачать в виде rpm-пакета или tar-архива. В первом случае, естественно, при установке пакета все его компоненты автоматически будут записаны туда, куда надо. Во втором же случае для начала нужно распаковать архив. В его составе, скорее всего, окажутся собственно шрифтовые файлы (pfb), файлы шрифтовых метрик (afm), два add-файла (fonts.dir.scale.add и psstd.fonts.add), а также README с весьма подробными указаниями дальнейших действий. Руководствуясь ими, следует переписать pfb-файлы в каталог /usr/XHR6/lib/X 11 /fonts/Type 1 (воспользовавшись своим правом администратора); а метрики размещаются в каталоге /usr/share/fonts.

В том же каталоге, где находятся шрифты, должны быть два файла: fonts.dir и fonts.scale. Это простые текстовые файлы, содержащие описание шрифтов (вернее, шрифтоначертаний, с указанием кодировки для кириллицы) данного каталога, количество которых указано в первой строчке файла. В них следует внести изменения.

Это можно сделать и вручную в любом текстовом редакторе, если знать соответствующие параметры, которые достаточно прозрачно устанавливаются из имени файла (кое-что можно почерпнуть и из метрики). Однако при наличии add-файлов все проще, поскольку они добавляются командой

cat fonts.dir.scale.add » /usr/XllR6/lib/Xll/fonts/Typel/fonts.dir; \ 

cat fonts.dir.scale.add » /usr/XHR6/lib/Xll/fonts/Typel/fonts.scale

После чего остается сосчитать количество добавленных шрифтов и приплюсовать его к числу в первой строчке каждого файла (каковые должны быть, очевидно, идентичны по содержанию).

В результате вы получаете пять-шесть новых кириллических гарнитур, включающих пропорциональные шрифты типа Sans Serif, Serif и что-нибудь моноширинное, типа Courier. Они несколько грубее, чем их TrueType-аналоги для Windows, но по сравнению со шрифтами из штатного комплекта — просто верх совершенства.

Конечно, изобилие не то, что в Windows. Но, поскольку исходный принцип понятен, остальное — вопрос времени и терпения. Ведь существует достаточное количество программ для конвертации шрифтов TrueType в Type 1. Об одной из них, расположенной по адресу http://www.netspace.net.au/, я узнал из переписки. И, разумеется, немедленно опробовал, о чем вкратце и расскажу.

На указанной странице можно скачать массу вариантов пакета ttf2ptl (последняя на сей день версия 3.21 от 1 марта 2000-го). Все в исходных текстах, но собираются без труда (хотя содержание файла INSTALL особо внятным не назовешь). Но на самом деле все просто: архив распаковывается туда, где вы хотели бы видеть-и сам пакет, дается команда make all — и готово, можно запускать.

Пакет ttf2ptl работает в командной строке и включает, кроме основного модуля ttf2ptl, также и дополнительный'—ttf2pfa, осуществляющий конвертацию ttf-файлов в pfa. Он требует двух параметров: имени сходного шрифта и целевого. ПослеЧего создает файлы pfa и aim.

Однако вариант с t-tf2pti более интересен и универсален, так как имеет массу опций, доступных по запуску tt^Spti без всяких параметров. Но в принципе необходимо только имя исходного шрифта TrueType и желаемого — Type 1. В числе прочего, ttf2ptl запущенный с параметром -ь, создает компрессированный pfb-файл плюс, естественно, метрику к нему. Кроме того, программа позволяет перекодирование в соответствии с языковой привязкой. Однако опция эта работает не идеально.

У меня имеется легальная коллекция кириллических шрифтов TrueType (не Unicode), доставшаяся при покупке лицензионной копии, какого-то по счету PageMaker (еще под Wmdoyvs 3,1). Которые мне очень нравятся (честно говоря, из всего того PageMaker только их и использую по сие время). Не говоря уже о том, что их не стыдно указать,в выходных данных макетов, которые я время от времени делаю.

Так вот, конвертировал я их посредством ttf2ptl в Type 1. И, прописавши как надо, опробовал на StarOffice. Получилось здорово: выглядели (по крайней мере, на экране), как первозданные TrueType. И никаких безобразий с кернингом в StarOffice не обнаружилось.

Однако пора поговорить, наконец, о правописании.

 

О правописании

Последнее, что нужно для элементарной работы с родной речью (в том числе и русской) — это проверка правописания. Хотя все мы учились понемногу, в том числе и русской орфографии, ошибки при наборе текста неизбежны и появляются в самых неожиданных местах. Конечно, автоматическая проверка русской орфографий—процесс чрезвычайно занудный, вследствие флективного характера языка. Но до превращения его в аналитический нам, пожалуй, не дожить. 

Так что, чтобы "правильнописание" не хромало, как у Винни-Пуха, требуется какая-нибудь программа для проверки орфографии.

Как же с этим обстоит дело под Linux? Очень просто. В состав любого дистрибутива входит программа проверки орфографии под названием ispell. Которая (почти) автоматически подключается к любому Linux-приложению, имеющему дело со словом. Программа эта давно уже имеет русский вариант. И если озаботиться установкой последнего при инсталляции (а в русской редакции Mandrake при выборе русскоязычной инсталляции это происходит по умолчанию)— больше ничего и не требуется. В других же дистрибутивах, возможно, придется просто установить руками ispell.ru и, вероятно, кое-гдй прописать путь к соответствующему русскому словарю.

После этого любые набранные по-русски тексты проверяются по правилам правописания яменно русского языка. Единственно, в некоторых приложениях (например, в Klyx) язык документа надо определить явным образом.

А иногда нужно указать и русский словарь. В этом случае неожиданно (и приятно) оказывается, что проверяются только слова, набранные кириллицей. А латиница просто игнорируется, а не считается ошибочно написанным русским словом. Что удобно, когда набираешь тексты с большим количеством иноязычных вкраплений. 

Разумеется, есть такие, обычные для современных Spetlchecker опции, как создание пользовательских словарей и возможность внесения в словарь неизвестного слова. Правда, каждую грамматическую форму надо вносить отдельно. Но это — неизбежная плата за флективность русского языка.

В заключение, уже окончательном, — еще об одной особенности русского языка, отличающего его от большинства общеупотребимых в цивилизованных странах — о кодировках кириллицы.

О кодировках кириллицы

Каковых, как известно, не менее пяти:
KOI-8, родная для Linux и большинства других Unix-систем;
кодировка DOS (она же— СР-866 или альтернативная, используемая также в OS/2);
кодировка Windows, или СР-1251, в комментариях не нуждающаяся;
IS08859-5, она же — кодировка ГОСТ, или основная; вопреки названию, применяется только на рабочих станциях Sun с операционной системой Solaris;
кодировка MacOS; исторически их тоже было две разные, но более старая, вроде, вышла из употребления окончательно.

В принципе, Linux (и многие его приложения) может работать с любой кодировкой, в том числе и с СР-1251, пользующейся (по понятным причинам) наибольшим распространением в народе. Однако отказываться от родной KOI-8 — причин не вижу: ни одна из прочих кодировок не обладает какими-либо принципиальными достоинствами. Тем более что процесс перекодирования текстовых файлов весьма не сложен.

Для этого предназначен ряд программ, например, iconv, стандартно входящей в пакет glibc любого дистрибутива. Формат ее

iconv -f [исходная_кодировка] -t [целевая_кодировка] old_file > new_file

где допустимые опции -f и -t определяются, если запустить эту программу с опцией—list. Обратите также внимание на символ перенаправления вывода в новый файл.

Кроме этого, можно использовать программу rusconv. Она распространяется в исходных текстах для всех Unix-платформ (а также для DOS и Windows) и может быть найдена на http://beta.matli.splrti.ru/. Для компиляции ее достаточно распаковать архив (rusconv.tar.gz), зайти в каталог rusconv.3.11/src/ и дать команду make all. После этого можно скопировать файл rusconv из каталога rusconv/bin в каталог для исполнимых файлов (например, SHOME/bin) и запустить программу из командной строки. Без указания аргументов (то есть исходного и целевого файлов) ответом будет полная справка по использованию программы.

Преимущество программы rusconv — возможность перекодирования нескольких (или даже сразу всех) файлов каталога. При этом, если не указать нового целевого каталога, перекодированные файлы будут помещены в исходный каталог с изменившимся расширением, соответствующим новой кодировке (например, для KOI-8 — koi).

Вот, пожалуй, и все, что я хотел сказать о русском языке и его поддержке в Linux.

GNU OCXE GNU LINUX
Сайт управляется системой uCoz