JOE(1)

Название
joe - Joe's Own Editor

Использование
joe [global-options] [ [local-options] filename ]...

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 - мощный текстовый редактор. Он обладает экранным пользовательским интерфейсом, подобно многим дружественным пользователю редакторам для PC. Пользователи WordStar от Micro-Pro или "Турбо"-языков от Borland почувствуют себя с ним как дома. В то же время JOE является полнофункциональным текстовым экранным редактором для UNIX, и обладает массой функций для редактирования программ и текстов.

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 обычно располагается в /bin/joe).

Также имеются некоторые специальные параметры выполнения, которые, возможно, придется установить, в частности, если экран вашего терминала изменяется не так, как вы этого ожидаете. См. раздел Переменные среды ниже.

Опции командной строки

В командной строке могут быть указаны следующие глобальные опции:

-asis
    Символы с кодами большими, чем 127, будут передаваться на терминал как есть, вместо преобразования их в соответствующие символы с кодами меньшими 128. Если это не срабатывает - проверьте ваш терминальный сервер.

-backpath path
    Если эта опция задана - файлы резервных копий будут создаваться в указанной директории, а не в "родной" директории редактируемого файла.

-baud nnn
    Установить скорость передачи для оптимизации экранного вывыода. Joe будет вставлять межсимвольные паузы для скоростей ниже 19200, что позволяет обойти терминальную буферизацию и прерывать экранный вывод клавиатурным вводом. Команды сколлинга не будут использоваться при указании скорости 38400 бод. Это полезно при использовании X-терминалов и экранов консоли, которые не подключены через последовательную линию.

-beep
    Joe будет издавать звонок в случае неправильных команд и по достижению курсором границ ввода.

-columns nnn
    Устанавливает количество колонок на экране.

-csmode
    Продолженный режим поиска: команда поиска, следующая за первой, будет продолжать поиск заданного ранее образца, а не запрашивать новый. Это полезно для команд ^[S и ^[R, и когда joe изображает из себя emacs.

-dopadding
    Joe обычно предполагает наличие какого-либо протокола управления потоком между ним и терминалом. Если никакой протокол не используется - данная опция заставляет joe выводить на терминал дополнительные ^@ как указано в termcap-описании терминала. Дополнительные ^@ дают возможность терминалу закончить длительные терминальные команды.

-exask
    Эта опция дает возможность проверить имя файла, сохраняемого по ^KX.

-force
    Эта опция обеспечивает обязательное добавление перевода строки в конец сохраняемого файла.

-help
    Если указана эта опция - редактор будет стартовать с открытым окном подсказки.

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

-lightoff
    Если данная опция указана - отметка блока будет сниматься после любой операции над блоком.

-lines nnn
    Устанавливает количество строк экрана.

-marking
    Текст между началом блока и курсором будет подсвечиваться (используйте вместе с -lightoff и модифицированным файлом joerc для получения отметки блока в стиле "брошенного якоря").

-mid
    Если эта опция установлена и курсор перемещается за пределы экрана - окно будет скроллироваться таким образом, чтобы курсор оставался в центре. Эта опция принудительно выставляется для медленных терминалов, не имеющих команд скроллинга.

-nobackups
    Эта опция запрещает создание файлов резервных копий.

-nonotice
    Эта опция запрещает вывод информации о копирайте при запуске редактора.

-nosta
    Эта опция запрещает отображение строки состояния вверху экрана. Понадобится, если вы хотите видеть на экране только ваш текст или используете vt52.

-noxon
    Пытается выключить обработку ^S/^Q. Полезно, когда JOE изображает из себя WordStar или EMACS.

-orphan
    Когда данная опция активна, дополнительные файлы в командной строке будут помещаться в скрытых буферах, а не в отдельных окнах. Полезно, когда JOE изображает из себя EMACS.

-pg nnn
    Определяет количество строк, оставляемых на эране после PgUp/PgDn (^U/^V). Если указано значение -1 - остается пол-экрана.

-skiptop nnn
    Не использовать верхние nnn строк экрана. Полезно, когда joe используется в качестве BBS-редактора.

Каждая из этих опций может также быть определена в файле joerc. Кроме того, опции NOXON, BAUD, LINES, COLUMNS и DOPADDING могут быть определены в виде переменных среды.

Переменная среды JOETERM может быть установлена для замены обычной переменной среды TERM для определения типа вашего терминала.

Следующие опции могут быть указаны перед каждым именем файла в командной строке:

+nnn
    Курсор при старте размещается на строке с указанным номером.

-crlf
    Joe использует CR-LF в качестве завершителя строки вместо просто LF. Для редактирования файлов из MS-DOS или VMS.

-wordwrap
    Joe переносит слово на новую строку по достижению правого края.

-autoindent
    При нажатии Enter в конце строки с отступом этот отступ переносится в начало новой строки.

-overwrite
    Ввод замещает существующие символы, а не вставляется перед ними.

-lmargin nnn
    Устанавливает левую границу.

-rmargin nnn
    Устанавливает правую границу.

-tab nnn
    Устанавливает ширину табуляции.

-indentc nnn
    Устанавливает символ заполнения для ^K, и ^K. (32 - ПРОБЕЛ, 9 - TAB).

-istep nnn
    Устанавливает шаг перемещения для ^K, и ^K..

-linums
    В начале каждой строки выводится ее номер.

-rdonly
    Только читать файл.

-keymap name
    Использовать альтернативную секцию файла joerc для определения клавиатурных управляющих последовательностей.

Эти опции также могут быть определены в файле 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 включается по умолчанию).

  Запросы
Если вы нажмете TAB во время любого запроса имени файла - joe попытается по возможности дополнить вводимое вами имя. Если он не сможет этого сделать из-за того, что возможно более одного варианта дополнения - joe издаст звонок. Если вы нажмете TAB еще раз - будет предложен список дополнений. Вы сможете использовать клавиши стрелок для перемещения по этому меню и нажать ENTER или ПРОБЕЛ для выбора элемента. Если вы нажмете первую букву одного из элементов списка - он будет выбран, или, если более одного элемента имеют одинаковую первую букву - курсор будет прыгать по этим элементам. Если вы выберете поддиректорию или .. - имя директории добавится к запросу и новая директория будет загружена в меню. Вы можете нажать Backspace для возврата к предыдущей директории.

Большинство запросов ведут историю обращения к ним. Вы можете перемещаться по этим историям с помощью клавиш-стрелок вверх и вниз.

Запросы в действительности являются однострочными окнами без строки состояния, так что вы можете использовать в нем любые команды редактирования. История запроса в действительности представлена разными строками в одном и том же "файле запроса". Поэтому вы можете выполнять поиск в истории запроса с помощью обычной команды ^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 еще раз, чтобы редактор сразу начал поиск вперед, или можете ввести одну или больше из следующих опций:

b   Поиск назад, а не вперед.

i   Не различать при поиске символы верхнего и нижнего регистров. Обычно считается, что они различны.

nnn (где nnn - число) Если вы введете число - JOE найдет n-ное вхождение искомого текста. Это полезно для перехода в нужные места внутри файлов, структурированных некоторым определенным образом.

r   Замещать текст. Если вы введете опцию r, далее у вас будет запрошен замещающий текст. Каждый раз при нахождении текста у вас будет запрашиваться - желаете ли вы выполнить его замещение. Вы можете нажать: y для замещения текста и выполнения дальнейшего поиска, n - чтобы не замещать текст, но продолжать поиск, r - для замены всех последующих вхождений далее по файлу без дополнительных запросов на подтверждение, или ^C для прекращения поиска и замены.

Вы можете нажать ^L для повторения предыдущего поиска.

  Регулярные выражения

При поиске текста в качестве образца могут использоваться различные специальные символьные последовательности:

\*  Это означает ноль или более символов. Например, если вы зададите A\*B в качестве образца поиска, JOE попытается найти A со следующим далее произвольным количеством любых символов, за которыми следует B.

\?  Ровно один символ. Например, если вы укажете в качестве образца поиска A\?B, JOE найдет AXB, но не AB, и не AXXB.

\^ \$
    Это соответствует началу и концу строки. Например, если вы укажете \^test\$, то JOE будет искать строку, в которой содержится только слово test.

\< \>
    Это соответствует началу или концу слова. Например, если вы зададите \<\*is\*\>, то joe будет искать слово, содержащее подстроку is.

\[...]
    Это соотвествует одному из символов, которые заключены в квадратные скобки. Например, если вы введете в качестве образца поиска \[Tt]his, то JOE найдет и This, и this. В скобках могут указываться и диапазоны символов. Например, \[A-Z] соответствует любой заглавной латинской букве. Если первым символом в скобках является ^, то JOE будет искать символы, не указанные внутри скобок.

\c  Это работает аналогично \*, но соответствует сбалансированным выраженияс языка C. Например, если вы будете искать malloc(\c), то JOE найдет любой вызов функции malloc, даже если в нем находятся вложенные ).

\+  Будет искаться ноль или больше символов, равных следующему сразу за \+. Например, если вы укажете \[ ]\+\[ ], причем в квадратных скобках находятся ПРОБЕЛ и TAB, то JOE будет искать пробельные области.

\\  Соответствует одиночному \.

\n  Будет искаться специальный символ конкца строки.

Следующие специальные символьные последовательности могут использоваться в строке замещения:

\&  Подставляется текст образца поиска. Например, если строкой поиска было \<\*\>, что соответствует словам, и вы укажете "\&", то joe будет заключать слова в кавычки.

\0 - \9
    Это будет замещаться текстом, который соответствует N-ному \*, \?, \+, \c, \+, или \[...] в образце поиска.

\\  Используйте это, если вам необходимо поместить \ в строку замещения.

\n  Используйте это, если вам необходимо поместить символ перевода строки в строку замещения.

Несколько примеров:

Предположим, у вас имеется список адресов, по одному в строке, начинающейся со слова "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 для снятия отметки.

  Сдвиги блоков в программах
Режим автоотступа включается командой ^T I. joerc обычно настроен так, что файлы с именами, зачанчивающимися на .p, .c или .h открываются с включенным автоотступом. Если автоотступ включен и вы нажимаете Enter, курсор переместится в ту же позицию следующей строки, в которой находился первый непробельный символ исходной.

Вы можете использовать команды ^K , и ^K . для сдвига блока текста влево и вправо. to the left or right. Если вы попытаетесь выполнить эти команды, когда блок не отмечен - весь редактируемый текст будет отмечен, и при последующих вызовах ^K , и ^K . будет смещаться. Количество колонок, на которое выполняется сдвиг данными командами, может быть установлено с помощью опции ^T.

  Окна
Вы можете редактировать более одного файла одновременно, или разные части одного и того же файла. Для этого нажмите ^K O, чтобы разрезать экрак на два окна. Используйте ^K P или ^K N для перемещения между окнами. Используйте ^K E для редактирования нового файла в одном из окон. Окно закроется, когда вы сохраните файл по ^K X или отмените редактирование по ^C. Если вы прервете радактирование одного и того же файла, но редактируемого в двух окнах, закроется одно из окон закроется, но не файл.

Вы можете повторно нажать ^K O в окне, чтобы создать больше окон. Если на экране образовалось слишком много окон, но вы не хотите их закрывать - можете нажать ^K I. Это приведет к тому, что на экране будет отображаться только одно текущее окно. Повторное нажатие этой комбинации приведет к обратной попытке - разместить все спрятанные окна на экране. Если вы открыли больше окон, чем может поместиться на экране - вы можете нажать ^K N в самом верхнем или ^K P в самом нижнем окне для доступа к тем окнам, которые не влезли.

Если в командной строке вызова JOE вы указали более одного файла - каждый будет размещен в отдельном окне.

Вы можете изменить высоту окна с помощью команд ^K G и ^K T.

  Клавиатурные макросы

С помощью макросов вы можете записать последовательность нажатий клавиш и затем повторять ее по нажатию двух клавиш. Это полезно для автоматизации повторяющихся задач. Чтобы начать запись макро - нажмите ^K [ и затем число от 0 до 9. В статусной строке появится сообщение (Запись макро n...). Теперь вводите последовательность клавиш, которую желаете повторять. Вводимые команды будут действовать как обычно. Нажмите ^K ] для завершения записи макро. Нажмите ^K с последующей цифрой для повторения записанной ранее последовательности нажатий.

Например, если вы желаете поместить "**" в начало некоторых строк - можете ввести следующее:

^K [ ^A ** <стрелка вниз> ^K ]

В начале записи макро перемещаете курсор в начало строки, вставляете "**", перемещаете курсор на следующую строку и заканчиваете запись. Поскольку мы включили в макро команду перемещения курсора на следующую строку - мы сможем циклически поторять вызов макро, не переводя курсор вручную, что вам следует часто иметь в виду при записи макро.

Если вы обнаружите, что макро, которое вы записывете, само включает в себя повторяющиеся нажатия клавиш - вы можете записать макро внутри макро, только с другим номером. Вы также можете вызывать ранее записанное макро при записи нового.

  Повтор
Вы можете использовать команду повтора ^K \, чтобы повторять вызов макро или любой команды редактирования, или даже обычный символ, указанное количество раз. Нажмите ^K \, введите желаемое число повторений команды и нажмите Enter. Следующая введенная команда повторится указанное число раз.

Например, для удаления следующих 20 строк текста нажмите:

^K \ 20<Enter>^Y

  Режим прямоугольных блоков
Нажмите ^T X если хотите, чтобы по ^K B и ^K K отмечались прямоугольные, а не построчные блоки. Этот режим полезен для перемещения, копирования, удаления или сохранения колонок текста. Вы также можете фильтровать колонки текста с помощью команды ^K /, если, к примеру, пожелаете отсортировать колонку. Также можно использовать команду вставки файла ^K R.

Когда включен режим прямоугольных блоков, также может оказаться полезным включить режим замещения (^T T). В этом случае прямоугольники будут замещать существующий текст. Также команда удаления блока (^K Y) будет заполнять отмеченные прямоугольники пробелами и табуляторами вместо того, чтобы удалять их. Режим замещения также может быть полезен при выполнении команды фильтрации блока (^K /), поскольку исходная ширине выбранной колонки останется неизменной.

  Поиск тагов

Если вы редактируете большую программу на языке C со многими исходными файлами - можно использовать программу ctags для генерации файла тагов. Этот файл содержит список имен, используемых в программе и позиций в файлах, где эти имена определены. Команда ^K ; может использоваться для поиска имен (функций, предопределенных констант, и т.п.), загрузки файла, в котором определено данное имя, в текущее окно, и позиционирования курсора в точку определения. ^K ; запрашивает требуемое имя, используя слово, на котором находится курсор, в качестве умолчания. Поскольку ^K ; загружает файл определения в текущее окно - возможно, вам потребуется сначала разрезать окно с помощью команды ^K O, чтобы видеть одновременно и исходный файл, и файл определения.

  Окна шеллов
Нажмите ^K ' для выполнения командного шелла в окне JOE. Когда курсор находится в конце окна шелла (используйте для этого ^K V), все, что вы вводите - будет передаваться в шелл, а не в окно. Любой вывод шелла или вызываемых программ, выполняемых в нем, будет добавляться в окно (курсор будет перемещаться за этот вывод, если находился в конце окна шелла). Эта команда полезна для записи шелл-команд, например, вывода make, результата grep над множеством файлов, или списка файлов из сеанса FTP. Кроме того, печатаемые символы, клавиши ^C, Backspace, DEL, Enter и ^D передаются в шелл. Введите команду шелла exit для прекращения записи вывода шелла. Если в окне шелла вы нажмете ^C, когда курсор находится не в конце окна, шелл будет прерван.

Переменные Среды
Для корретной работы JOE необходимо правильно установить некоторые переменные среды. Скорость (в бодах) связи между компьютером и вашим терминалом следует правильно указывать для JOE, чтобы экран перерисовывался плавно и можно было вводить вслепую для оптимизации отложенного вывода. Для установки этого используйте команду stty nnn. Значение следует указывать настолько точно, насколько это возможно. Например, если вы подключаетесь через модем со скоростью 1200 бод - вам следует использовать для stty именно это значение. Если вы подключаетесь через модем со скоростью 14.4kбод, но терминальный сервер, к которому вы подключены, связан с компьютером на скорости 9600 бод, вам следует установить скорость 9600. Специальная скорость 38400 или extb используется для указания того, что вы используете высокоскоростное подключение, такое как консоль или эмулятор терминала в X-window. Если вы не можете использовать stty для установки реальной скорости (возможно, потому, что скорость связи модема с компьютером отличается от скорости в линии) - вы можете вместо этого записать числовое значение в переменную среды BAUD (используйте setenv BAUD 9600 для csh или BAUD=9600; export BAUD для sh).

Переменная среды TERM должна указывать на тип используемого вами терминала. Если размер (число строк/колонок) вашего терминала отличается от указанного в его описании TERMCAP или TERMINFO - вы можете установить правильное знение с помощью команды stty rows nn cols nn, или определив переменные среды LINES и COLUMNS.

Обычно JOE ожидает, что для управления потоком данных между компьютером и вашим терминалом используется протокол ^S/^Q (т.е., если компьютер посылает данные слишком быстро для вашего терминала - терминал посылает ^S для приостановки вывода и ^Q для его продолжения). Если для управления потоком используется аппаратный протокол, или если ваш терминал достаточно быстр, чтобы всегда во-время отрабатывать компьютерный вывод и вы желаете использовать ^S/^Q в качестве команд редактирования - вы можете установить переменную среды NOXON, чтобы JOE пытался принимать ^S/^Q. Если связь между компьютером и вашим терминалом не использует никакого протокола управления потоком, а ваш терминал недостаточно быстр, чтобы вовремя отрабатывать вывод компьютера - можете установить переменную среды DOPADDING, чтобы JOE замедлял вывод путем вставки символов заполнения в последовательности изменения экрана.

Имена файлов
Когда JOE ожидает от вас ввода имени файла - неважно, из командной ли строки, или по запросу редактора, вы также можете вводить:

!command
    Читать или писать данные из или в команду шелла. Например, используйте joe '!ls' для редактирования всех файлов из текущей директории, или в редакторе выполните ^K D !mail jhallen@world.std.com для отправки мне редактируемого файла.

>>filename
    Используйте это, чтобы JOE добавил редактируемый текст в конец файла "filename."

filename,START,SIZE
    Используйте это для доступа к определенной части файла или устройства. START и SIZE могут указываться в десятичном виде (напр.: 123), в восьмеричном (напр.: 0777) или шестнадцатиричном (напр.: 0xFF). Например, используйте joe /dev/fd0,508,2 для редактирования байтов 508 и 509 на первом флоппи-диске в Linux.

-   Используйте это для получения данных со стандартного ввода или для записи на стандартный вывод. Например, вы можете использовать joe в конвейере команд: quota -v | joe - | mail root, если хотите пожаловаться на ваши низкие квоты.

Файл joerc
Все опции, доступные по ^T, экран подсказки и комбинации клавиш команд редактора определяются в инициализационном файле JOE. Если вы скопируете этот файл (обычно расположенный в /etc/joe/joerc) в $HOME/.joerc, то сможете настраивать все это по своему вкусу. Синтаксис инициализационного файла достаточно понятен, и внутри него содержатся подробные инструкции.

Благодарности
JOE был написан Joseph H. Allen. Если у вас имеются отчеты об ошибках или вопросы - пишите ему по адресу jhallen@world.std.com. Larry Foard (entropy@world.std.com) и Gary Gray (ggray@world.std.com) также помогли в создании JOE. Перевод на русский язык - Юрий Калиниченко <yuk@iceb.vinnitsa.com>