Joe: обзор возможностей

Текстовый редактор joe — типичный представитель консольных редакторов командного стиля, то есть ориентированных не на действие через меню, а на управление с помощью прямых директив. Название его можно перевести примерно как “редактор дядюшки Джо”. Он создан Джозефом Алленом (Joseph H. Allen) при участии Ларри Форда (Larry Foard) и Гари Грея (Gary Gray). Это — открытая и бесплатная программа, доступная в исходниках на сайте проекта. Она реализована для всех, насколько я знаю, Unix'ов и Unix-подобных систем. А некоторые конкретные версии были собраны для Windows всякого рода и даже для DOS.

Запускается joe одноименной командой, можно — с именем файла, предназначенного для редактирования. В случае, если этого имени в природе не имеется, создается новый файл. Кроме этого, при запуске joe можно использовать ряд опций командной строки. Представление о них дает чтение страниц экранной документации (man joe).

Сразу после запуска joe выглядит весьма непрезентабельно: черный экран со светло-серым текстом — и все. Что делать дальше — остается пока неясным. Единственно, строка заголовка в верхней части экрана гласит, что с помощью комбинации клавиш Control+KH можно вывести на экран систему помощи. И далее пролистывать ее с помощью Escape. (точка) — вперед или Escape, (запятая) — назад.

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

Думаю, понятно, что текстовый редактор позволяет вводить текст (в том числе и кириллический) и обеспечивает навигацию по нему. Последняя осуществляется двояко: либо с помощью собственных клавишных комбинаций (как правило, это Control+литера), о чем подробнее — в следующем разделе, либо — стандартных клавиш управления курсором (стрелок, PageUp, PageDown, End, Home). При этом клавиши эти введут себя обычным (с точки зрения пользователя DOS/Windows) образом, что отнюдь не само собой разумеющееся для консольных Unix-редакторов). Исключение — клавиша End, которая на некоторых типах терминалов и в большинстве эмуляторов терминала графического режима работать отказывается.

Вообще, следует заметить, что основным средством навигации по тексту в joe являются именно собственные команды, а не клавиши управления курсором. Во-первых, при наличии некоторого навыка, они обеспечивают большую скорость работы за счет того, что не требуется перемещения пальцев за пределы основной клавиатуры (поверьте, это действительно быстрее!). Во-вторых, команды joe, вызываемые клавишными комбинациями, функционируют абсолютно одинаково в любых консолях (по крайней мере за Linux-консоль, syscons FreeBSD, pcvt OpenBSD я ручаюсь — проверено лично) и эмуляторах терминалов. Тогда как для клавиш управления курсором возможно, как уже отмечено, аномальное поведение.

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

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

joe имеет функцию многоуровневой отмены и возврата отмененных операций. Встроенной проверки орфографии нет, однако можно подключить внешнюю программу (такую, как ispell), в том числе и для русскоязычных текстов. Имеются достаточно развитые средства поиска и замены, в том числе с использованием шаблонов и регулярных выражений. Есть возможность создания закладок (Bookmarcs) и перехода к ним, что необходимо при редактировании длинных структурированных документов.

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

С некоторых пор Joe обеспечивает подстветку синтаксиса основных языков программирования и разметки, причём ныне она поддерживается по умолчанию, не требуя никаких дополнительных настроек.

Количество одновременно открытых файлов, насколько мне удалось понять, не ограничено ничем. Более того, по сведениям моих корреспондентов, joe позволяет работать с документами, объем которых превышает объем ВСЕЙ доступной (то есть физической + виртуальной) памяти! Правда, проверить это мне не удалось…

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

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

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

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

. .