Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum
Беспроводные выключатели nooLite

Lines Club

Ищем достойных соперников.


Книги по Linux (с отзывами читателей)

Библиотека сайта или "Мой Linux Documentation Project"

На главную -> MyLDP -> Тематический каталог -> Электронный офис в Linux

О консольных текстовых редакторах
Зачем они нужны и какие бывают

Медицинское вступление

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

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

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

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

Поэтому необходимость в консольных редакторах будет сохраняться всегда. И Linux (как, впрочем, и Unix вообще) удовлетворяет эту потребность различными способами.

Во первых, в Linux имеется непременный атрибут любой Unix-системы - редактор Vi. Во вторых, есть EMACS - редактор, положивший основу всему открытому программному обеспечению. В третьих, в большинстве дистрибутивов присутствуют (и обычно устанавливаются по умолчанию) редакторы pico, joe, jed. И, наконец, в составе файлового менеджера Midnight Commander имеется встроенный редактор, доступный по клавише F4 (аналогично Norton'у, известному).

Что из себя представляют эти программы, для чего предназначены, на что способны? И какой из них выбрать?

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

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

Vi и ViM - классика мира Unix

Не могу сказать, что Vi и его модификация - Vim, показались мне чрезвычайно удобными в использовании. Да простят меня старого закала, но от Vi веет какой-то допетровской Русью. Тем не менее, поскольку Vi присутствует абсолютно во всех Unix-системах и обычно является системным редактором по умолчанию, некоторое представление о нем иметь необходимо.

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

Текстовый редактор Vim

Рис. 1. Текстовый редактор Vim

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

Для перехода в режим ввода нужно нажать клавишу a (app) или i (insert); первая позволяет добавлять текст после курсора, вторая - вставлять перед. Теперь-то можно и печатать буковки, как в любом другом редакторе или процессоре. Можно перемещаться по тексту с помощью стрелок управления курсором.

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

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

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

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

Думаю. сказанного достаточно для обоснования моего мнения: Vi - далеко не самый удачный инструмент для набора длинных связанных текстов. Однако в критических случаях он может оказаться единственным инструментом для правки, скажем, конфигурационных файлов после сбоя системы. И потому не вредно получить о нем некоторое представление. Путем чтения соответствующего раздела в практически любой толстой книжке про Linux (или Unix вообще). EMACS

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

Функционально EMACS существенно ближе к текстовым редакторам DOS. Он имеет один-единственный режим - режим редактирования. Включающийся сразу же после запуска редактора (рис. 2). А всякого рода манипуляции осуществляются с помощью управляющих клавиш Control, Escape и Alt в комбинации с буквенными. Что особенно приятно нашему человеку, комбинации эти работают не зависимо от раскладки клавиатуры.

Редактор EMACS

Рис. 2. Редактор EMACS

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

  • в него может быть считано содержимое уже существующего файла ([Control+x] - общий компонент для всех операций с буферами и окнами, затем [Control+f] - от слова file, как я понимаю);
  • вновь созданный в буфере текст может быть записан как файл ([Control+x], [Control+s] - вероятно, от Save;
  • несколько текстовых файлов могут быть объединены в одном буфере последовательным выполнением команды ([Control+x] i), за которой следует запрос имени файла.

EMACS позволяет работать в одной консоли с несколькими файлами одновременно.Для этого для каждого файл посредством ([Control+x] b) создается новый буфер со своим именем (которое никакого отношения к имени файла иметь не обязано).

В каждом буфере можно работать с любым количеством окон, сколько их поместится на экране. Разделение экрана на два окна осуществляется командой ([Control+x] 2), переход между окнами командой ([Control+x] o). Фрагменты текста могут переноситься из окна в окно либо штатными командами EMACS, либо путем выделения мышью и вставки в позицию курсора щелчком средней ее клавиши.

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

EMACS обладает довольно эффективными инструментами для редактирования введенного текста. Они основываются на понятии блока - то есть текстового фрагмента, расположенного между меткой (вводимой комбинацией [Control+@] и текущим положением курсора. Блок может быть изъят (аналог Cut в Windows) командой [Control+w] и вставлен (в текущем окне или буфере, или в ином другом) командой [Control+y]. Имеется также многоуровневая отмена последовательностю команд ([Control+x] u).

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

Текстовый редактор Pico

Pico - командно-ориентированный редактор, входящий в состав почтовой системы pine. Он очень компактен, что позволяет использовать его на слабых машинах. Все манипуляции в нем осуществляются посредством комбинации Control+буква. Что работает и при кириллической раскладке клавиатуры. Основные клавишные комбинации постоянно присуствуют в нижней части экрана, не требуя чрезмерного напряжения памяти (рис. 3).

Редактор pic

Рис. 3. Редактор pico

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

А так возможности редактирования довольно убоги: можно удалить ([Contol+k] Cut - в том же значении, что и в Windows) строку текста, на которой находится курсор, а затем вставить ее куда либо еще - переместив курсор на новую строку и выполнив команду [Contol+u], то есть UnCut. Есть еще функции поиска, проверки орфографии, а также своеобразно понимаемая опция Justify - вписывание строк, выходящих за границы экрана, в его пределы.

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

Текстовый редактор Joe

Этот редактор многолик. Поскольку способен эмулировать все прочие - и Vi, и Emacs, и pico, а также еще пару. Но собственно Joe - это командно-ориентированный, управляемый путем комбинации Control+буква-[буква]. Что, как и следовало ожидать, не работает при кириллической раскладке клавиатуры. Делая этот редактор малопригодным для работы с объемными русскоязычными документами.

При запуске Joe появляется черный экран, доступный для ввода и редактирования текста. Присутствует также статусная строка, содержащая имя файла, текущие линию и колонку, а также указание для вызова помощи ([Control+k] h); последняя, правда, занимает около трети экрана, но может быть убрана вторичным вводом той же клавишной комбинации (рис. 4).

Редактор Joe

Рис. 4. Редактор Joe

Редактирование текста основывается на понятии блока и не производит впечатления богатства возможностей. Можно отметить начало и конец блока командами ([Control+b] h) и ([Control+k] k), соотвественно.

Редактирование текста основывается на понятии блока и не производит впечатления богатства возможностей. Можно отметить начало и конец блока командами ([Control+b] h) и ([Control+k] k), соответственно, скопировать или переместить его в другое место, а также удалить. Понятия вставки удаленного фрагмента (аналогичного буферу изъятия в EMACS) - нет.

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

Текстовый редактор Jed

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

Редактор Jed

Рис. 5. Редактор Jed

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

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

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

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

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

Текстовый редактор Midnight Commander

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

Все здесь радует глаз (рис. 6): и привычный синий фон с нерезко белыми буквами, и статусная строка в верхней части экрана, и линейка нумерованных (по функциональным клавишам) операций - внизу. Привычно работают клавиши Home и End, delete и backspace; и щелчок мышью в тексте приводит к перемещению курсора в эту позицию. Правда, в отместку за это не работает вставка выделенного фрагмента по щелчку средней клавиши.

Встроенный редактор Midnight Commander

Рис. 6. Встроенный редактор Midnight Commander

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

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

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

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

В отличие от оригинального Нортона, я не обнаружил никаких ограничений на размер открываемого файла. По крайней мере, файл размером в 400 Кбайт был открыт безропотно.

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

cat > имя_файла ^d

и пустой файл готов. Можно наполнять его своими бесценными мыслями. Нет также и встроенной проверки орфографии. Что, при наличие русского ispell, также не доставляет неудобств.

В общем, редактор хороший. Правда, я не освятил всех его достинств. Но подробно о нем можно прочитать у Виктора Костормина.

Заключение

Как и положено, в заключение проведу небольшое сравнение. Не претендующее не только на полноту, но и на объективность. Поскольку оценка производилась соответственно задачам, поставленным во вступлении. То есть созданию оригинальных текстов содержательного характера.

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

Для мелкомасштабного редактирования (скажем, конфигурационных файлов) оправдано использование pico. Редактор из MC также вполне подходит для этой цели. Позволяя, в то же время, и создание оригинальных текстов средней длинны.

Что касается традиционного Vi, на мой взгляд (заранее прошу прощения у его адептов), освоение его специфики нецелесообразно для любого, не впитавшего привычку к этому редактору с молоком матери. Joe практически не имеет специфических особенностей, оправдывающих трудозатраты и неудобства. Ну а меню-ориентированность Jed не искупает неудобства реализации.

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

Алексей Федорчук
Писано на Поселке 26 февраля 2000 г.



Copyleft by
Alex Fedorchuk


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

Комментарии отсутствуют