jstar [global-options] [ [local-options] filename ]...
jmacs [global-options] [ [local-options] filename ]...
rjoe [global-options] [ [local-options] filename ]...
jpico [global-options] [ [local-options] filename ]...
jice [global-options] [ [local-options] filename ]...
JOE также эмулирует несколько других редакторов. JSTAR - это имитация WordStar со многими расширениями JOE. JPICO - имитация текстового редактора PICO, используемого в почтовой системе PINE, но со многими расширениями и улучшениями. JMACS - это имитация GNU-EMACS. JICE - настроенный на использование функциональной клавиатуры в традиционном PC-стиле редактор, рекомендуемый для использования в комплексе программ бухучета iceB. RJOE - урезанная версия JOE, которая позволяет редактировать только файлы, указанные в командной строке.
Хотя JOE выглядит ка шесть различных редакторов, он в действительности представляет собой единственную исполняемую программу, но с шестью разными именами. Имя редактора вместе с суффиксом "rc" составляют имя инициализационного файла JOE, который определяет внешние особенности редактора.
JOE - свободная программа; вы можете распространять и/или модифицировать его в соответствии с положениями GNU General Public License, опубликованной Free Software Foundation. У меня нет планов по превращению JOE в коммерческий или share-ware продукт. JOE доступен через Internet по адресу www.sourceforge.net/projects/joe-editor.
Для запуска редактора введите имя joe, можно со следующими за ним именами редактируемых файлов. Каждому имени файла могут предшествовать ключи локальных опций (ниже см. таблицу локальных опций). В командной строке также могут быть указаны ключи глобальных опций, воздействующие на редактор в целом (ниже см. таблицу глобальных опций). Если вы редактируете новый файл - можете указать его имя либо в командной строке при запуске редактора, либо из редактора при сохранении файла. Предоставляется специальный синтаксис имени файла для редактирования вывода программ, стандартного ввода/вывода или участков файлов или устройств. Подробности см. ниже в разделе Имена файлов.
Запустив редактор, вы можете вводить в нем текст и использовать специальные управляющие последовательности для выполнения других задач редактирования. Описание того, что выполняет та или другая последовательность, вы можете найти ниже в этом справочом руководстве либо набрав в редакторе ^K H для получения подсказки.
Замечания по некоторым общепринятым договоренностям:
^ значит, что вы удерживаете клавишу Control при нажатии указанной далее клавиши (аналогично тому, как работает Shift для ввода буквы верхнего регистра). Некоторые управляющие последовательности дублируются другими клавишами, так что вам не всегда обязательно нажимать Control: ESC работает как ^[, Del - как ^?, Backspace - ^H, Tab - ^I, Return или Enter - это ^M и Linefeed может использоваться вместо ^J. На некоторых клавиатурах отдельные управляющие клавиши могут не работать. ^_, ^^ и ^@ обычно вводятся без нажатия Shift (т.е., пробуйте ^-, ^6 и ^2). На других клавиатурах эти клавиши могут быть переназначены. Попробуйте: ^., ^, и ^/. ^ПРОБЕЛ обычно можно использовать вместо ^@. ^\ и ^] интерпретируются многими коммуникационными программами, включая telnet и kermit. В этом случае вам придется нажать данную клавишу дважды, чтобы прорваться через коммуникационную программу.
После нажатия ^K H в верхней части экрана появится первое окно подсказки. Вы можете продолжать вводить и редактировать текст, пока оно там находится. Для листания подсказки используйте ^[, и ^[. (т.е., ESC , и ESC .). Нажмите ^K H снова для закрытия окна подсказки.
Вы можете настроить раскладку клавиатуры, окна подсказки и различное поведение редактора, скопировав инициализационный файл JOE (обычно /etc/joe/joerc) в .joerc в вашей домашней директории и затем отредактировав его. Ниже см. раздел joerc.
Чтобы использовать JOE в качестве редактора по умолчанию для e-mail и News, вам необходимо установить переменные среды EDITOR и VISUAL в стартовом командном файле вашего шелла (.cshrc или .profile) так, чтобы они ссылались на JOE (joe обычно располагается в /usr/bin/joe).
Также имеются некоторые специальные параметры выполнения, которые, возможно, придется установить, в частности, если экран вашего терминала изменяется не так, как вы этого ожидаете. См. раздел Переменные среды ниже.
В командной строке могут быть указаны следующие глобальные опции:
Каждая из этих опций может также быть определена в файле joerc. Кроме того, опции NOXON, BAUD, LINES, COLUMNS и DOPADDING могут быть определены в виде переменных среды.
Переменная среды JOETERM может быть установлена для замены обычной переменной среды TERM для определения типа вашего терминала.
Следующие опции могут быть указаны перед каждым именем файла в командной строке:
Эти опции также могут быть определены в файле joerc. Они могут быть установлены в зависимости от расширения имени файла. Для программ (с расширениями .c, .h или .p) обычно включается автооотступ. Перенос слов разрешен для всех прочих файлов, кроме инициализационных rc-файлов.
Когда вы вводите символы в редакторе, они обычно вставляются в редактируемый файл (или добавляются к нему, если курсор стоит в конце файла). Это - нормальный режим работы редактора. Если вы хотите заменить некоторый существующий текст - можете удалить его до или после ввода нового текста. Для удаления текста может использоваться клавиша Backspace: поместите курсор справа от текста, который требуется удалить и нажмите Backspace нужное количество раз.
Нажатие Enter или Return вызывает вставку разрыва строки. Например, если курсор находился всередине строки и вы нажали Enter, эта строка будет разрезана на две, и курсор будет находиться вначале второй строки. Нажатие Backspace в начале строки приведет к удалению предыдущего разрыва строки.
Для перемещения по файлу используйте клавиши стрелок. Если на вашей клавиатуре таких клавиш нет (или они почему-то не работают) - используйте ^F для перемещения вперед (вправо), ^B - для перемещения назад (влево), ^P - на предыдущую строку (вверх), и ^N - на следующую (вниз). Клавиши стрелок вправо и влево просто перемещают курсор на один символ вправо или влево по тексту за раз: если вы находитесь в начале строки и нажмете стрелку влево - то окажетесь в конце предыдущей строки. Нажатие клавиш стрелок вверх и вниз вызывает перемещение курсора на столько символов, чтобы оказаться в той же позиции предыдущей или последующей строки, в которой находились в исходной строке.
Если вы желаете сделать отступ перед вводом текста - можете использовать клавишу TAB. Она вставляет в текст специальный управляющий символ, который заставляет следующие за ним символы вводиться с начала следующего табулостопа (TAB STOP). Табулостопы обычно располагаются через каждые 8 позиций, но это может быть изменено с помощью команды ^T D. Программисты на языках PASCAL и C часто располагают табулостопы в каждой 4-ой позиции.
Если по каким-либо причинам экран вашего терминала сбивается (например, при получении сообщения о прибытии почты от программы biff), вы можете потребовать от редактора перерисовать экран - нажатием ^R.
Имеются и другие команды для удаления текста и перемещения по файлу. Например, можно нажать ^D для удаления символа в позиции курсора вместо удаления назад, как это делает клавиша Backspace. ^D также удаляет разрыв строки, если курсор находится в конце строки. Нажмите ^Y для удаления всей строки в позиции курсора или ^J для удаления от курсора до конца строки.
Нажмите ^A для перемещения курсора в начало текущей строки. Нажмите ^E для перемещения курсора в конец строки. Нажатие ^U или ^V приведет к скроллированию на полэкрана вверх или вниз. "Скроллирование обозначает, что что текст на экране перемещается, но курсор остается в одной и той же позиции относительно экрана. Нажмите ^K U или ^K V для перемещения в начало или конец файла. Другие команды удаления и перемещения вы можете найти на экране подсказки редактора.
Если вы сделали ошибку - можете отменить последнее действие нажатием ^_. На большинстве клавиатур вам потребуется прото нажать ^- для получения ^_, но на некоторых вам понадобится для этого одновременно удерживать Shift и Control. Если вы случайно ваполнили слишком много отмен - можно отменить предыдущую отмену по нажатию ^^ (для этого на большинстве клавиатур следует просто нажать ^6).
Если вы находитесь в одной позиции файла, а необходимо временно просмотреть или отредактировать другой участок текста - вы сможете вернуться в исходную позицию по нажатию ^K -. Эта команда возвратит вас в то место, где были выполнены последние изменения в файле. Вы можете перемещаться по местам изменений с помощью ^K - и ^K =, так же, как вдоль истории изменений с помощью команд "отмена" и "отмена отмены".
Когда вы закончите редактирование файла - нажмите ^K X для выхода из редактора. Если вы не редактировали ранее существовавший файл - у вас будет запрошено имя, под которым вы хотите этот файл сохранить.
Когда вы редактируете файл - в действительности изменению подвергается только его копия. Так что если вы решите, что изменения, сделанные во время данного сеанса редактирования, вам не нужны - можете нажать ^C для выхода из редактора без их сохранения.
Если вы отредактировали файл и сохранили изменения - в текущей директории будет создана резервная копия ("backup"), имя которой формируется путем добавления символа ~ в конец имени редактируемого файла, и содержащая исходную версию этого файла.
Если вы будете вводить на правом краю экрана на программу на языке C или PASCAL - экран будет скроллироваться вправо для того, чтобы удерживать на нем текущее положение курсора. Если вы будете вводить на правом краю данные в обычный файл (имя которого не закнчивается ни на следующую строку, так что вам не обязательно нажимать Enter. Это называется режимом автопереноса. Перенос слов может быть разрешен или запрещен с помощью команды ^T W . Инициализационный файл JOE обычно настраивается так, чтобы этот режим включался для всех файлов, не являющихся текстами программ. Смотрите ниже раздел joerc - как изменять это и другие умолчания.
За исключением случая режима автопереноса, JOE не хранит абзацы отформатированными, как это делают некоторые текстовые процессоры. Вместо этого если вам потребуется отформатировать абзац - нажмите ^K J. Данная команда "выравнивает" абзац, в котором находится курсор, пытаясь разместить в одной строке столько слов, сколько возможно. В данном случае абзацем считается часть текста, ограниченная сверху и снизу пустыми строками.
Границы, в которых JOE выполняет форматирование абзаца и автоперенос слов, могут быть установлены с помощью команд ^T L и ^T R. Если левая граница установлена в значение, отличное от 1, то кода вы начинаете вводить данные с начала строки - курсор сразу перепрыгнет на указанную левую границу.
Если вы желаете центрировать строку в указанных границах - используйте команду ^K A.
Иногда утомительно удалять старый текст перед вставкой нового или после нее. Это случается, например, когда вы заполняете данные в таблице и вынуждены следить за положением правого края этой таблицы. В таких случаях вы можете перевести редактор в режим замещения с помощью последовательности ^T T. Если вы находитесь в данном режиме - вводимые символы замещают собой существующие. Кроме того, Backspace просто выполняет перемещение влево вместо удаления расположенного там символа, если курсор находился не в конце и не в начале строки. Режим замещения не является общепринятым при электронной обработке текстов, поэтому рекомендуется вернуться к режиму вставки так скоро, как это возможно, нажав ^T T еще раз.
Если вам необходимо выполнить вставку во время нахождения в режиме замещения - нажмите ^@. Это приведет к вставке в текст одиночного ПРОБЕЛА.
Каждый символ представляется некоторым числовым кодом. Например, кодом символа 'A' является 65, а код '1' - 49. Все символы, которые вы обычно видите, имеют коды в диапазоне 32 - 126 (данное соответствие между символами и их кодами называется символьным набором ASCII). Коды вне этого диапазона, от 0 до 255, обычно не отображаются, но иногда имеют некоторое специальное значение. Символ с кодом 10, например, используется для обозначения конца строки. Вы можете ввести эти неотображаемые управляющие символы, нажав сначала `, а затем - введя символ из диапазона @ A B C ... X Y Z [ ^ ] \ _ для получения кодов 0 - 31, и ? для получения 127. Например, если вы нажмете ` J - выполнится вставка символа разрыва строки, а если нажмете ` I - вставится символ табуляции (то же самое делает клавиша TAB). Полезный управляющий символ - 12 (` L), который заставляет большинство принтеров выполнить прогон страницы. Вы сможете заметить, что JOE выводит этот символ как подчеркнутое L. Вы можете вводить символы с кодами более 127, называемые мета-символами, нажав сперва ^\. Это добавит 128 к коду следующего (возможно управляющего) введенного символа. JOE выводит символы с кодами большими, чем 128, в инверсном изображении. В некоторых языках, имеющих больше символов, чем в английском, метасимволы используются для остальных букв ихнего алфавита. Вам придется перевести редактор в режим ASIS (описан далее), чтобы эти символы передавались на терминал без преобразования. (Прим. переводчика: поскольку для всех кодовых наборов с кириллицей так и происходит - в большинстве дистрибутивов, используемых на территории бывшего СССР, режим ASIS для JOE включается по умолчанию).
Большинство запросов ведут историю обращения к ним. Вы можете перемещаться по этим историям с помощью клавиш-стрелок вверх и вниз.
Запросы в действительности являются однострочными окнами без строки состояния, так что вы можете использовать в нем любые команды редактирования. История запроса в действительности представлена разными строками в одном и том же "файле запроса". Поэтому вы можете выполнять поиск в истории запроса с помощью обычной команды ^K F.
Поскольку запросы являются окнами - вы также можете переключаться между ними с помощью ^K P и ^K N.
Нажмите ^K ПРОБЕЛ для получения отчета JOE о номере строки и колонки, а также номере текущего байта в файле, в последней строке экрана. Также показывается код текущего символа. Вы можете настроить редактор так, чтобы номер текущей строки и/или колонки постоянно отображался в строке состояния, поместив специальные управляющие последовательности в настроечную строку строки состояния. Более подробная информация по этому вопросу приведена в файле joerc.
Вы можете нажать ^K D для сохранения текущего файла (возможно, под именем, отличающимся от оригинального). После того, как файл сохранен - можете нажать ^K E для редактирования другого файла.
Если вы желаете сохранить только отдельную часть файла - см. ниже раздел Блоки.
Если вы желаете включить другой файл в редактируемый - используйте для его вставки команду ^K R.
Если вам необходимо временно приостановить редактор и вернуться в шелл - нажмите ^K Z. Вы можете сделать это, к примеру, для того, чтобы прервать редактирование и ответить на почтовое сообщение или почитать man page. Для возврата в редактор вам надо будет выполнить команду fg или exit (вам будет сказано какую именно, когда вы нажмете ^K Z).
Нажмите ^K F, чтобы выполнить поиск фрагмента текста (строки) вперед или назад. У вас будет запрошен образец поиска. После нажатия Enter вы получите запрос на ввод опций поиска. Вы можете просто нажать Enter еще раз, чтобы редактор сразу начал поиск вперед, или можете ввести одну или больше из следующих опций:
Вы можете нажать ^L для повторения предыдущего поиска.
При поиске текста в качестве образца могут использоваться различные специальные символьные последовательности:
Следующие специальные символьные последовательности могут использоваться в строке замещения:
Несколько примеров:
Предположим, у вас имеется список адресов, по одному в строке, начинающейся со слова "Address:", и элементы разделены запятыми. Вроде следующего:
Address: S. Holmes, 221b Baker St., London, England
Если вы захотите переформировать этот список, чтобы сначала шло наименование страны, затем - города, за ним - имя человека, и в конце - адрес, вы можете сделать следующее:
Нажмите ^K F чтобы начать поиск, и введите:
Address:\*,\*,\*,\*\$
что соответсвует "Address:", четырем элементам, разделенным запятыми, и затем - конец строки. При запросе оции поиска нажмите r для замены строки, и затем введите:
Address:\3,\2,\0,\1
для перетасовки данных нужным вам способом. После нажатия Enter начнется поиск и исходная строка будет преобразована в:
Address: England, London, S. Holmes, 221b Baker St.
Если вы желаете перемещать, копировать, сохранять или удалять отдельные части текста - вы можете использовать для этого отмеченные блоки. Сначала поместите курсор в начало текста, с которым желаете работать, и нажмите ^K B. Затем переместите курсор за последний символ текста и нажмите ^K K. Текст между ^K B и ^K K отметится подсветкой. Теперь вы можете переместить курсор куда-нибуди еще и нажать ^K M для перемещения отмеченного текста туда. Вы можете нажать ^K C, чтобы вставить копию отмеченного текста в точку расположения курсора. ^K Y удалит отмеченный текст. ^K W запишет его в файл.
Очень полезная команда - ^K /, которая фильтрует блок текста через команду unix. Например, если вы отметите список слов, и затем наберете ^K / sort, то этот список отсортируется. Другая полезная команда unix для ^K / - tr. Если вы введете ^K / tr a-z A-Z, то все латинские символы в блоке будут переведены в верхний регистр.
По завершению операций с блоком вы можете просто оставить отметку включенной и не обращать на нее внимания (но, естественно, если вы случайно нажмете ^K Y ...). Если же это вас действительно беспокоит - просто нажмите ^K B ^K K для снятия отметки.
Вы можете использовать команды ^K , и ^K . для сдвига блока текста влево и вправо. to the left or right. Если вы попытаетесь выполнить эти команды, когда блок не отмечен - весь редактируемый текст будет отмечен, и при последующих вызовах ^K , и ^K . будет смещаться. Количество колонок, на которое выполняется сдвиг данными командами, может быть установлено с помощью опции ^T.
Вы можете повторно нажать ^K O в окне, чтобы создать больше окон. Если на экране образовалось слишком много окон, но вы не хотите их закрывать - можете нажать ^K I. Это приведет к тому, что на экране будет отображаться только одно текущее окно. Повторное нажатие этой комбинации приведет к обратной попытке - разместить все спрятанные окна на экране. Если вы открыли больше окон, чем может поместиться на экране - вы можете нажать ^K N в самом верхнем или ^K P в самом нижнем окне для доступа к тем окнам, которые не влезли.
Если в командной строке вызова JOE вы указали более одного файла - каждый будет размещен в отдельном окне.
Вы можете изменить высоту окна с помощью команд ^K G и ^K T.
С помощью макросов вы можете записать последовательность нажатий клавиш и затем повторять ее по нажатию двух клавиш. Это полезно для автоматизации повторяющихся задач. Чтобы начать запись макро - нажмите ^K [ и затем число от 0 до 9. В статусной строке появится сообщение (Запись макро n...). Теперь вводите последовательность клавиш, которую желаете повторять. Вводимые команды будут действовать как обычно. Нажмите ^K ] для завершения записи макро. Нажмите ^K с последующей цифрой для повторения записанной ранее последовательности нажатий.
Например, если вы желаете поместить "**" в начало некоторых строк - можете ввести следующее:
^K [ ^A ** <стрелка вниз> ^K ]
В начале записи макро перемещаете курсор в начало строки, вставляете "**", перемещаете курсор на следующую строку и заканчиваете запись. Поскольку мы включили в макро команду перемещения курсора на следующую строку - мы сможем циклически поторять вызов макро, не переводя курсор вручную, что вам следует часто иметь в виду при записи макро.
Если вы обнаружите, что макро, которое вы записывете, само включает в себя повторяющиеся нажатия клавиш - вы можете записать макро внутри макро, только с другим номером. Вы также можете вызывать ранее записанное макро при записи нового.
Например, для удаления следующих 20 строк текста нажмите:
^K \ 20<Enter>^Y
Когда включен режим прямоугольных блоков, также может оказаться полезным включить режим замещения (^T T). В этом случае прямоугольники будут замещать существующий текст. Также команда удаления блока (^K Y) будет заполнять отмеченные прямоугольники пробелами и табуляторами вместо того, чтобы удалять их. Режим замещения также может быть полезен при выполнении команды фильтрации блока (^K /), поскольку исходная ширине выбранной колонки останется неизменной.
Если вы редактируете большую программу на языке C со многими исходными файлами - можно использовать программу ctags для генерации файла тагов. Этот файл содержит список имен, используемых в программе и позиций в файлах, где эти имена определены. Команда ^K ; может использоваться для поиска имен (функций, предопределенных констант, и т.п.), загрузки файла, в котором определено данное имя, в текущее окно, и позиционирования курсора в точку определения. ^K ; запрашивает требуемое имя, используя слово, на котором находится курсор, в качестве умолчания. Поскольку ^K ; загружает файл определения в текущее окно - возможно, вам потребуется сначала разрезать окно с помощью команды ^K O, чтобы видеть одновременно и исходный файл, и файл определения.
Переменная среды TERM должна указывать на тип используемого вами терминала. Если размер (число строк/колонок) вашего терминала отличается от указанного в его описании TERMCAP или TERMINFO - вы можете установить правильное знение с помощью команды stty rows nn cols nn, или определив переменные среды LINES и COLUMNS.
Обычно JOE ожидает, что для управления потоком данных между компьютером и вашим терминалом используется протокол ^S/^Q (т.е., если компьютер посылает данные слишком быстро для вашего терминала - терминал посылает ^S для приостановки вывода и ^Q для его продолжения). Если для управления потоком используется аппаратный протокол, или если ваш терминал достаточно быстр, чтобы всегда во-время отрабатывать компьютерный вывод и вы желаете использовать ^S/^Q в качестве команд редактирования - вы можете установить переменную среды NOXON, чтобы JOE пытался принимать ^S/^Q. Если связь между компьютером и вашим терминалом не использует никакого протокола управления потоком, а ваш терминал недостаточно быстр, чтобы вовремя отрабатывать вывод компьютера - можете установить переменную среды DOPADDING, чтобы JOE замедлял вывод путем вставки символов заполнения в последовательности изменения экрана.