Введение в POSIX'ивизм

Макрокоманды


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

Кроме того, есть еще один простой и эффективный способ изучения макроязыка, совмещающий приятное с полезным, - режим протоколирования макрокоманд. Включается он комбинацией клавиш Control+K - [ (открывающая квадратная скобка), вслед за чем следует ввести номер макроса (от 0 до 9), выступающий как в качестве его имени, так и в роли запускающей клавиши. Далее просто выполняются необходимые действия (например, вводится требуемый тэг html), после чего запись макроса останавливается комбинацией Control+K - ] (закрывающая квадратная скобка). Для воспроизведения запротоколированного макроса используется комбинация Control+K - # (где # - указанный при записи номер макрокоманды).

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

предусмотрена возможность помещения запротоколированных в данном сеансе макросов в тело существующего или нового документа (комбинацией клавиш Meta+D).

Например, записанные мной макросы для ввода html-тэгов выглядят следующим образом:

General Structure insf,"~/blank.html",rtn ^K .k1 HTML Page "",ltarw,...,ltarw .k1 H1 rtn,"",ltarw,...,ltarw .k2 H2 rtn,"\09","",ltarw,...,ltarw .k3 H3 rtn,"\09","\09","",ltarw,...,ltarw .k4 H4

Body Text rtn,"

","

",ltarw,...,ltarw .k5 Paragraph rtn,"


" .k6 Break rtn,"",rtn,"",uparw .k7 Preformat "",ltarw,...,,ltarw .k8 Strong "",ltarw,...,ltarw .k9 Emphasis rtn,"",rtn,"",uparw ^K .k8 Division

Lists and Tables rtn,rtn,"

    ",rtn,"
",uparw ^K .k2 Unordered List rtn,"
    ",rtn,"
",uparw ^K .k3 Ordered List "
  • ,
  • ",ltarw,...,ltarw ^K .k4 List Item rtn,"",rtn,"
    ",uparw ^K .k5 Table

    Из чего вполне можно составить представление о командах языка: в первой колонке следуют разделяемые запятыми (без пробелов!) зарезервированные команды (rtn - Enter, ltarw - Left, uparw - Up и т.д.) и вводимые символьные значения в парных кавычках ("<p>"). Далее идут разделенные табулятором клавишные комбинации (^K 0 - Control+K - 0), закрепленные за макросами, и имена макросов. Последние в оригинале представлены в виде Macro 0, Macro 1 и т.д. Но никто не запрещает при редактировании придать им осмысленные имена. Да и сами макросы могут быть отредактированы должным образом в текстовом редакторе (том же joe, например).

    Легко сообразить, что за один прием можно запротоколировать не более 10 макросов (маркированных цифрами от 0 до 9). Более того, они будут действовать только в течении данного сеанса: по выходе из редактора записанные макросы сами собой не сохраняются. Что, казалось бы, напрочь обесценивает данную возможность.

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

    Выясняется, что за воспроизведение макросов отвечает конфигурационный файл ~/.joerc, о котором подробнее будет сказано в следующем разделе. И потому достаточно поместить (с помощью Meta+D или из текстового файла) в соответствующую его секцию (какую - также скажу позднее) созданные команды, чтобы обеспечить их исполнение во всех последующих сеансах.

    Более того, назначенные по умолчанию клавишные комбинации не являются обязательными.И их можно вручную заменить на любые другие, из числа не использованных ранее. После чего можно начать протоколирование команд сначала, нумеруя их от 0 до 9. Затем - повторить процедуру встраивания их ~/.joerc, и так далее, сколько потребуется (или до исчерпания комбинаторики клавиш). А поскольку количество незадействованных в joe клавишных комбинаций очень велико, то реально число созданных пользователем макрокоманд ограничивается только его фантазией и потребностями.

    Таким образом можно легко автоматизировать процесс ввода тэгов HTML или XML, конструкций JavaScript, скриптов командной среды, разметки документов TeX, а также все, что потребуется впредь. Превратив joe в специализированный инструмент для решения почти любых задач.


    Содержание раздела