Песнь о Joe
АрхивИз всех приложений Unix и Unix-подобных систем важнейшим, пожалуй, является текстовый редактор. С его помощью настраивается система, пишутся скрипты и сценарии, составляются программы для пользователей, часть которых, как ни странно, пользуется им и для производства текстов.
Из всех приложений Unix и Unix-подобных систем важнейшим, пожалуй, является текстовый редактор. С его помощью настраивается система, пишутся скрипты и сценарии, составляются программы для пользователей, часть которых, как ни странно, пользуется им и для производства текстов. И не случайно текстовые редакторы стали среди юзеров чуть ли не предметом религиозных войн.
Немало копий (и клавиатур) было сломано при обсуждении темы Emacs vs. vi, сопоставимой по накалу страстей только с антитезой «мастдай» - «банзай». Действительно, оба гиганта мира текстовых редакторов - и vi (вернее, его современное воплощение - Vim), и Emacs, по своим функциональным возможностям далеко вышли за рамки программ этого класса 1. Однако в дыму сражений затерялись иные представители славного клана редакторов, один из которых - скромный труженик Joe. Он не претендует, как Emacs, на роль операционной среды, не покидая которую, можно получать и отправлять почту, просматривать новости и Web-страницы, составлять программы и верстать в TeX. В отличие от Vim, Joe не рассчитывает и на признание в качестве универсальной среды программирования на любых изобретенных человечеством языках. Тем не менее, он честно выполняет свой долг на ниве сочинения повествовательных текстов, особенно если те требуют некоторого оформления. Joe представляет собой разумный компромисс между функциональным богатством и простотой. Он не труднее в освоении, чем редакторы типа le или mcedit, и вдобавок обеспечивает гораздо большую скорость обработки текста.
Однако некоторые усилия на изучение Joe затратить все же необходимо. И первое, что требуется четко уяснить: Joe - типичный представитель семейства командных редакторов, то есть все действия по редактированию текста осуществляются соответствующими встроенными командами, к которым привязаны комбинации клавиш. В сущности, это - макросы на собственном языке Joe. Поэтому, с одной стороны, система команд может быть сколь угодно расширена, с другой - клавишные комбинации для них могут быть переопределены произвольным образом.
Последнее, впрочем, практически не нужно: структура предопределенных по умолчанию клавишных команд проста и логична. За простыми и частыми действиями по навигации и редактированию закреплены двухклавишные комбинации - как правило, Control (изредка - Escape) плюс литера (последняя - обычно с мнемоническим смыслом). Для более сложных или редких операций используются трехклавишные комбинации. Все они не чувствительны к регистру и, что особенно важно в наших условиях, к раскладке клавиатуры (латиница/кириллица, например).
Я не буду останавливаться на описании клавиатурных команд - исчерпывающую справку по ним можно получить из Help-системы. Посмотрим лучше на другие возможности Joe.
Joe - многозадачный редактор, количество одновременно открытых документов лимитируется только ресурсами машины. Непосредственно из Joe, без выхода, можно обращаться к командам Shell, причем различными способами. Можно перевести редактор в фоновый режим (комбинация Control+K -> Z) и выполнять любые действия в командной строке. А можно и прямо в редакторе выполнить единичную команду (после нажатия клавиш Escape + «!» + команда).
Есть и более интересная возможность: открытие внутри Joe, посредством комбинации Control+K + ‘ (апостроф), самостоятельного окна с полноценной командной средой (рис. 2). Здесь можно выполнять любые команды, выводить их результат на экран и сохранять в виде текстового файла, что очень удобно как при создании скриптов, так и при файловых операциях.
Если штатных возможностей редактора Joe недостаточно, их список можно расширить с помощью внутреннего языка макрокоманд. При этом изучать язык не обязательно - достаточно включить режим протоколирования (комбинацией клавиш Control+K -> [ ), интерактивно выполнить все требуемые действия и присвоить созданному макросу номер (от 0 до 9), который и используется для воспроизведения макрокоманды (комбинацией Control+K -> #).
Далее, раз запротоколированные макрокоманды можно сохранить «на века». Для чего их следует поместить в соответствующую секцию конфигурационного файла (~/.joerc) и закрепить за каждой из них любую свободную клавишу или комбинацию клавиш. Таким образом, можно легко автоматизировать процесс ввода тегов HTML или XML, конструкций JavaScript, скриптов командной среды, разметки документов TeX, а также всего, что потребуется впредь, превратив Joe в специализированный инструмент для решения почти любых задач.
Если же еще добавить, что глобальные опции (переносы слов, автоматические отступы, условия маркирования блоков и многое другое) могут быть установлены ключами при запуске Joe, настроены интерактивно во время сеанса или заданы раз и навсегда в конфигурационном файле (причем - для разных типов документов по-разному), вывод становится очевидным: соотношение простоты, функциональности и настраиваемости у этого редактора близко к оптимальному. Благодаря чему Joe можно найти в любом дистрибутиве Linux, в виде порта или пакета для FreeBSD или OpenBSD (имеются даже DOS- и Windows-версии).
1 (обратно к тексту) - Относительно Emacs мне встречалось даже выражение «операционная среда». Если вы помните, именно этим термином величалась Windows до 95-й своей ипостаси…