Настройка Joe
Как я уже говорил, некоторые настройки joe
можно выполнить интерактивно (вызвав их комбинацией Control+T). Однако они весьма ограничены и к тому же будут иметь силу только в текущем сеансе. Более интересные и богатые возможности открываются при редактировании конфигурационного файла joerc
.
Пример такого файла обнаруживается в каталоге /etc/joerc
. Перво-наперво его надлежит скопировать с свой домашний каталог и переименовать в ~/.joerc
— именно этот файл ищется в первую очередь при загрузке редактора. А затем он открывается в любом текстовом редакторе -- лучше всего в самом же joe
и, после соответствующего изучения, правится вручную.
В экранной документации синтаксис конфигурационного файла не описан, что мотивируется его простотой и понятностью. Это действительно почти так — смысл практически всех настроек можно понять из контекста (и комментариев).
Файл joerc
разбит на четыре секции. Первая — это глобальные опции редактора, большая часть которых может быть задана также параметрами командной строки. Все они — односложные и имеют вид -имя_опции
(установить данную опцию) или --имя_опции
(отменить ее). Опция является установленной (или, напротив, отмененной), если ею начинается строка (первая колонка, в терминологии программы — это относится и ко всем остальным секциям .joerc
). Если строка начинается с пробела или табуляции, дальнейшее ее содержание рассматривается как комментарий и не учитывается. Комментарием является и все, отделенное пробелом от имени опции.
Описание всех опций заняло бы слишком много места, поэтому обращу внимание только на некоторые ключевые моменты. Обязательно следует включить (то есть удалить пробел в начале строки, если он имеет место быть) опцию
-asis
Это необходимо для правильного отображения символов кириллицы — иначе они будут показаны латинской транслитерацией.
Полезным представляется также установка опций:
-lightoff
обеспечивающей выключение подсветки выделенного блока после его перемещения или копирования, — иначе выделение это будет маячить перед глазами;
-marking
дающей подсветку текста между началом выделяемого блока и текущей позицией курсора. Можно отменить также создание страховых копий или, напротив, определить место для их помещения, отличное от исходных файлов. Это достигается включением опций
-nobackups
или
-backpath path
соответственно.
Интересная возможность — задание количества строк и колонок (знаков в строке) на экране, отличное от определенных для текущего терминала (виртуальной консоли) в целом, что задается опциями
-lines # -columns #
где #
— количество строк и знаков, соответственно.
В этой же секции настраивается вид статусной строки (вывод которой, впрочем, можно и отключить опцией -nosta
). Он определяется двумя опциями -lmsg
и -rmsg
. Первая определяет компоненты, выводимые в левой части строки, вторая — в правой. В любой из них можно вывести индикацию режимов (забивки или вставки, переноса слов, автоотступов), имя файла и показатель его изменения, текущее положение курсора (в строках, колонках или знаках), и т.д. Первый знак левой части статусной строки — escape-последовательность, определяющая ее общий вид: инвертирование цветов, выделение подчеркнутым или полужирным начертанием, мерцание.
Например, строка вида
-lmsg i%k%T%W%I%X %n %m%R %M
указывает, что в левой части статусной строки в инвертированном виде (черным по белому, \i
) должны быть выведены
- префиксные ключи (
%k
), маркирующие включение режимов вставки/замены (%T
), переноса слов (%W
), автоотступа (%I
), прямоугольного выделения (%X
); - имя редактируемого файла (
%n
); - указание на модификацию файла (
%m
) и на режим “только для чтения”
(%R
); - индикатор включения протоколирования макросов (
%M
).
Строка же вида
-rmsg Row %r Col %c %o %O %u
выводит в правой части статусной линии номер текущей строки (Row %r
) и колонки (Col %c
) файла, смещение от начала в байтах (в десятичной, %o
, и шестнадцатеричной, %O
, формах, и системное время в 24-часовом формате(%u
).
Возможен вывод и иной информации, как то:
- системного времени в 12-часовом формате (
%t
); - индикации измененного файла символом
*
; - ASCII-кода символа под курсором в десятичной (
%a
) или шестнадцатеричной
(%A
) форме; - процента просмотра файла до позиции курсора (
%p
); - общего количества строк в файле (
%l
); - индикации запуска встроенной оболочки (
%S
).
Кроме того, внешний вид статусной строки можно изменить, придав ему, вместо или помимо инверсии, атрибуты подчеркивания (\u
), полужирного начертания (\b
), мерцания (\f
).
Вторая секция конфигурационного файла — это локальные опции, которые можно определить отдельно для файлов различных типов. Для этого в ее составе создаются субсекции вида
* все файлы *.html документы HTML *.c программы на C *rc конфигурационные файлы
и так далее. Напомню здесь, что знак маски (*
) должен обязательно начинаться с начала строки, то есть занимать первую колонку.
Для каждой субсекции можно независимо задать такие параметры, как перенос слов (или его отключение), автоматический отступ, величину табуляции и т.д., а также, что интересно, назначить собственную раскладку клавиатуры, отличную от определенной для консоли в целом. Кроме того, с файлами любого типа можно связать макросы, выполняемые при их загрузке или записи.
Третья секция описывает вид экранов помощи, выводимых клавишной комбинацией Control+K — H. Экраны могут быть изменены как с позиций внешнего вида (инверсия цветов, выделение или подчеркивание и т.д.), так и по существу. В частности, здесь можно задать специальные экраны помощи для собственных макрокоманд. Более того, редактированием этой секции можно выводить и подсказки на русском (или каком-либо еще) языке. Каждый такой экран заключается в фигурные скобки, предваряется собственным идентификатором (в примере — HTML), ему придаются атрибуты внешнего вида (в примере — инвертирование рамки, \i
), задается строка подсказки, после чего следует просто перечисление клавишных комбинаций и их описание.
Четвертая секция — разного рода ключевые последовательности, или связки (key bindings), в том числе и макрокоманды. Они могут быть определены отдельно для всех окон (субсекция :windows, опять же начиная с первой колонки), окна редактируемого текста (субсекция :main), и так далее.
Внимательное рассмотрение секции показывает, что все описанные выше (и перечисленные в приложении) клавишные комбинации joe
представляют собой макрокоманды, именно здесь и определенные. Из чего следует два вывод.
Первый — возможность переопределения клавиатурных комбинаций, назначенных для штатных команд joe
по умолчанию. Например, если вам не нравится, что пролистывание экрана осуществляется комбинациями Control+U (назад) и Control+V (вперед), можно присвоить им иные значения (из числа свободных, разумеется).
Второй вывод — штатные команды joe
могут быть (почти) неограниченно наращены собственными макрокомандами. Для чего достаточно их запротоколировать и поместить (напомню, посредством Escape — D) в соответствующее место четвертой секции (скорее всего, в раздел :windows или :main) файла ~/joerc
. Более того, здесь же им можно присвоить и членораздельные имена (вместо данных по умолчанию Macro 1
, Macro 2
и т.д.), во-первых, и изменить закрепленные клавишные комбинации (по умолчанию — Control+K — 0 и т.д.) — во-вторых. То есть полностью индивидуализировать редактор, не прибегая ни к каким сильнодействующим средствам (вроде перекомпиляции исходных текстов).
Пользовательские макросы следует помещать в одну из субсекций — :window
или :main
. В последней, кроме этого, целесообразно отредактировать имеющиеся там по умолчанию макросы проверки орфографии для работы с русским словарем. По умолчанию эти макросы описываются строками вида:
:def spellfile :def spellword
для спеллинга всего текста и отдельных слов, соответственно. Они просто описывают параметры вызова внешней программы проверки орфографии (по умолчанию — ispell
). И подключение русского словаря при этом, разумеется, не предусмотрено. Чтобы осуществить это, следует просто добавить к обеим строкам после вызова исполнимой команды ispell
опцию -d russian
.