Редактор ee (Easy Editor) представляет собой штатное
средство для работы с текстами во FreeBSD. Он входит в состав базовой
системы (Distributions) и, собственно, является там чуть не единственным
представителем этого семейства. Не считая, конечно, классического vi ,
который, однако, а) функционально ограничен (сравнительно с современным
Vim) и б) поначалу не особенно легок в использовании. Так что на первом
этапе освоения FreeBSD ee вполне может быть естественным
выбором. Особенно если учесть, что, при всех своих ограничениях, о
которых я скажу позднее, он, подобно большинству штатных средств
FreeBSD, не так уж прост и незатейлив, как кажется на первый взгляд. Это
делает его более чем пригодным для правки конфигурационных файлов как
на начальном этапе настройки FreeBSD, так и в дальнейшем, например, при
всякого рода аварийных ситуациях. А что ещё требуется от текстового
редактора "легкой весовой категории"? Поскольку ee представляет собой неотъемлемый компонент базовой системы, исполняемый его файл имеет своим местопребыванием каталог /usr/bin/ , всегда входящий в состав переменной path любого пользователя. Так что запускается этот редактор просто — одноименной командой
% ee filename
где filename (необязательный аргумент) — имя файла, подлежащего
редактированию. После этого открываются два окна редактора. В нижнем -
редактируемый текст (если файла с указанным именем не существует, или
ee запущен без аргумента — окно это остается пустым), в верхнем -
краткая, но практически исчерпывающая справка по использованию программы (рис. 1).
Рис. 1. Общий вид редактора ee по умолчанию (в окне редактирования открыт его собственный умолчальный конфиг, о котором будет говориться позже)
Предусмотрен и запуск ee с опциями командной строки, такими, как:
- -e — отключение преобразования символов табуляции в пробелы;
- -i — отключение информационного окна со справкой;
- -h — отключение подсветки рамок вокруг информационного окна;
кроме мифического повышения производительности на некоторых терминалах,
это придаёт редактору более строгий вид;
- +# — перемещение курсора к строке с указанным номером # при открытии файла, что полезно при редактировании конфигов.
Навигация по тексту осуществляется или обычным способом — клавишами управления курсора, PageUp, PageDown, Home, End и т.д., либо — специфичными для ee управляющими (или командными) комбинациями клавиши Control с какой-либо из литерных. Так, комбинация Control+f (от forward) перемещает курсор на один символ вправо (т.е. вперед), Control+b (от backward)
— на один символ влево (т.е. назад), и так далее. Причем возможности
управляющих комбинаций шире — например, они позволяют перейти к
следующему слову (Control+z), перейти в начало (Control+t) или конец (Control+u) экрана.
Аналогично и редактирование текста можно выполнять двояким образом: посредством клавиш редактирования (Backspace, Delete)
или такими же управляющими комбинациями. Причем последний способ, как и
в случае навигации, — более эффективен, позволяя удалить не только
отдельный символ (Control+d), но и целиком слово (Control+w) или строку (Control+k).
Редактор ee с точки зрения интерфейса является
гибридным, и все основные действия могут быть выполнены в нём тремя
способами: с помощью управляющих клавиш, о которых только что говорилось
(и более подробные сведения о которых можно почерпнуть из man ee ), через меню или прямыми командными директивам.
Главное меню редактора вызывается нажатием клавиши Escape. Пункты его — следующие:
- a) выйти из редактора;
- b) подсказка;
- c) операции с файлами;
- d) обновить экран;
- e) параметры;
- f) поиск;
- g) разное.
Каждый из указанных пунктов вызывает панель соответствующих подменю.
Выбор требуемого пункта осуществляется клавишами управления курсором
(Down и Up) или нажатием соответствующей литерной клавиши (например,a
— для выхода из редактора). Последнее, впрочем, работает только при
латинской раскладке клавиатуры. Выход из меню осуществляется повторным
нажатием клавиши Escape (рис. 2). Та же клавиша в любом из подменю возвращает в окно редактирования текста.
Рис. 2. Главное меню редактора ee ; рамки вокруг меню и информационного окна отключены.
При выходе из редактора (пункт a) выводится панель запроса
на сохранение изменений в файле (рис. 3), буде таковые производились:
- a) сохранить и выйти;
- b) не сохранять.
Рис. 3. Подменю выхода
В панели подменю подсказки выводится более подробная, нежели в
информационном окне, справка по управляющим последовательностям и
командам (рис. 4).
Рис. 4. Подменю подсказки
Подменю файловых операций (рис. 5) содержит следующие пункты:
- прочесть файл — считывание существующего файла и помещение его содержимого в позиции курсора файла текущего;
- записать в файл — запись текущего файла ;
- сохранить текущий файл и
- распечатать файл — понятно без комментариев.
Рис. 5. Подменю файловых операций
Пункт обновления экрана никакого подменю не вызывает, а лишь совершает указанное действие.
Пункт е) параметры вызывает панель просмотра текущих настроек редактора с возможностью их изменения (рис. 6):
- a) табуляция пробелами НЕТ
- b) поиск с учётом регистра НЕТ
- c) авто-перевод строки НЕТ
- d) авто-формат абзаца НЕТ
- e) 8-битные символы ДА
- f) окно подсказки ДА
- g) клавиши как в Emacs ДА
- h) ширина текста 79
- i) 16-битные символы НЕТ
- j) сохранить установки
Рис. 6. Подменю параметров
Выбрав соответствующий пункт подменю, можно изменить текущие значения
параметров с НЕТ (OFF) на ДА (ON) и наоборот, или (для ширины текста)
задать численное значение, после чего сохранить новые установки — в
текущем каталоге или домашнем каталоге пользователя именем .init.ee code>.
В подменю поиска — два пункта (рис. 7): что искать и повторить поиск, смысл которых ясен.
Рис. 7. Подменю поиска
И наконец, в подменю о разном — три пункта (рис. 8):
- форматирование абзаца,
- вызов оболочки для прямого ввода команд, не выходя из редактора, и
- вызов проверки орфографии, которая выполняется внешней программой типа ispell или aspell.
Рис. 8. Подменю о разном
Как видно из сказанного, меню ee просто и понятно.
Однако работать через него иногда бывает скучновать — по каким-то, не
вполне ясным мне, причинам, вывод панели меню и его подменю происходит с
задержкой, не зависящей ни от режима (в чистой консоли или в эмуляторе
терминала Иксов), ни от мощности машины. Однако прибегать к меню совсем
не обязательно, ибо все те же действия можно выполнить прямыми
командами.
Переход в командный режим осуществляется комбинацией клавиш Control+C, после чего у нижнем левом углу окна редактирования появляется приглашение собственной командной строки редактора:
command:
Команд в ee немного, и они мнемонически понятны, так что запомнить их легко:
help — вывод подробной подсказки;
read — вставка указанного файла в позицию курсора файла текущего;
write — запись текущего файла под произвольным именем;
exit — выход из редактора с записью выполненных изменений;
quit — выход из редактора без записи изменений;
line — вывод номера текущей строки и количества символов в ней;
expand — преобразование табуляции в пробелы;
noexpand — не преобразование :) табуляции в пробелы;
file — распечатать файл;
char — вывод числового значения ASCII-кода текущего символа;
case — поиск, чувствительный к регистру символов;
nocase — поиск, не чувствительный к регистру;
!cmd — выполнение команды шелла внутри редактора; вывод команды можно через "мышиный" буфер перетащить в окно редактирования текста;
0-9 и далее — переход на строку с указанным номером.
В итоге оптимальным методом работы в ee , по моему мнению, будет использование управляющих последовательностей вкупе с директивами командного режима.
Возможности настройки ee ограничены, но они имеются. Типовой настроечный файл этого редактора — /usr/share/misc/init.ee . По умолчанию он включает в себя следующие строки:
emacs
noexpand
nomargins
Его можно скопировать в свой домашний каталог:
% cp /usr/share/misc/init.ee ~/.init.ee
где и подвергнуть всяким издевательствам. А можно поступить иначе —
через меню установить необходимые настройки, как было сказано выше, и
записать их в виде всё того же файла ~/.init.ee . У меня он имеет такой вид:
NOCASE
NOEXPAND
NOINFO
NOMARGINS
NOAUTOFORMAT
PRINTCOMMAND lpr
RIGHTMARGIN 80
NOHIGHLIGHT
EIGHTBIT
NOEMACS
16BIT
Можно видеть, что у моём конфиге отлючён режим поддержки клавиатурных
последовательностей Emacs'а (параметр NOEMACS). Однако по умолчанию он
имеется (параметр emacs "образцового" конфига). Так что любители этого
редактора могут пользоваться ими и в ee .
Надо заметить, что вывод подсказок и сообщений на русском языке в ee происходит
только при правильной локализации. К сожалению, он не поддерживает
локаль UTF8. И если таковая используется в качестве Иксовой локали,
работа с кириллицей в этом редакторе, запущенном в окне эмулятора
терминала, становится невозможной: не смотря на присутствие среди
параметров поддержки шестнадцати бит, которую можно видеть на рис. 6,
кириллические символы в Unicode нормально не вводятся и не отображаются.
А сообщения ee и его меню в этом случае будут английскими
(благо, что не кракозябровыми), хотя в консоли при какой-либо русской
восьмибитной кодировке, KOI8-R, скажем, они останутся вполне русскими.
Нет в нём также и какой-либо подсветки синтаксиса, а также возможности
создавать пользовательские макросы.
Всё это делает невозможным применение ee в качестве
универсального редактора и для консоли, и для Иксов. Но ни в коей мере
не снижает его удобства как редактора конфигурационных файлов и
сценариев, в которых по определению кириллические комментарии не
желательно. Но ведь на большее он и не претендовал, а универсальных
текстовых редакторов и без него вдоволь.
И напоследок — несколько слов об использовании ee при
системных аварийно-восстановительных работах, обычно выполняемых в
однопользовательском режиме. Как уже говорилось, его исполняемый файл
находится в каталоге /usr, который обычно образует самостоятельную
файловую систему, лежащую на отдельном разделе. А в однопользовательском
режиме, как известно, монтируется только корневая файловая система (и
то в режиме read only). Так что, дабы использовать ee для
аварийного редактирования общесистемных конфигов, надо не только
перемонтировать корневой каталог в режиме чтения/записи, но и не забыть
подмонтировать к нему каталог /usr — элементарная операция, о которой
начинающие пользователи иногда забывают. Да и запускать редактор следует
с указанием полного пути:
# /usr/bin/ee
Почему я об этом говорю так подробно? Да потому, что в однопользовательском режиме у ee не так уж много альтернатив. Вариант vi из каталога /rescue ,
содержащего статически слинкованные исполняемые файлы важнейших
"аварийных" утилит, в некоторых версиях FreeBSD (в частности, той, в
которой пишутся эти строки - 7.11-BETA), просто не работает, ссылаясь на
отсутствие доступа к библиотеке свойств терминала. Так что остаётся
только строчный (неинтерактивный) редактор /rescue/ed ,
использование которого без должного навыка затруднительно (не будем
забывать, что и man-страницы в однопользовательском режиме могут быть
недоступны), да и не всегда эффективно. И это — ещё один стимул для
заблаговременного привыкания к редактору ee .
|