______________________________ Деление по горизонтали До команды После команды ------------------ ------------------ ! ! ! старое ! ! ! ! окно ! !*-курсор ! !----------------! ! старое ! ! новое ! ! окно ! ! окно ! ! ! ! ! ! ! ! ! ------------------ ------------------ Рис. 4 ____________________________________________________________ ____________________________________________________________ Деление по вертикали До команды После команды ------------------ ------------------- ! *-курсор ! ! !! ! ! ! ! старое !! новое ! ! ! ! !! ! ! старое ! ! окно !! окно ! ! окно ! ! !! ! ! ! ! !! ! ! ! ! !! ! ------------------ ------------------- Рис 5. ____________________________________________________________ Для создания и уничтожения окон используются следующие команды: - создается новое окно, и в нем высвечивается файл /usr/lib/re.std; имя - Создается новое окно, и в нем высвечивается файл "имя". В том, что касается нового файла, команда полностью аналогична команде ; - уничтожить окно, созданное последним. Если один файл изображен сразу в нескольких окнах, изме- нения в нем будут высвечиваться одновременно во всех окнах. Для перехода из окна в окно служит команда: (по умолчанию `0') Нескольких окон целесообразно использовать при сравнении файлов, частичном копировании одного файла в другой, при работе с файлами диагностик об ошибках и в ряде других слу- чаев. 3.10. Использование макрокоманд Последовательность команд редактора вместе с любым текс- том, если их приходится часто повторять, может быть присво- ена "переменной" редактора red. Для записи макроопределения служит команда: d имя (имя - одна буква). Редактор выдаст приглашение на ввод: Mac: Введенный в ответ текст и команды редактора запишутся в переменную имя. Редактор отображает команды на экране в виде пары символов, их кодировка приведена в приложении 2. Признаком конца ввода является команда (клавиши ), для отмены ошибочных символов или команд используется команда (клавиша или ). Для выполнения макрокоманды достаточно ввести: $имя то есть последовательно нажать клавиши (или <ПС>), "$" и малую латинскую букву, которой именуется пере- менная. Редактор подставляет содержимое переменной вместо ввода с терминала. Выполнение макро прерывается, если при выполнении записанной в макро операции поиска не найден искомый текст. При необходимости можно переопределить какую-либо функциональную клавишу терминала как вызов опре- деленной макрокоманды. 3.11. Переопределение клавиатуры В редакторе имеется возможность изменить действие функци- ональных и управляющих клавиш терминала. При этом клавиша может обозначать как любую команду редактора, так и выполне- ние макрокоманды. Для этого служит команда: k Редактор запрашивает: Enter : Нажмите переопределяемую клавишу и затем клавишу (<Забой>). Редактор запрашивает: Enter or : Введите команду, имя макропеременной (малую латинскую букву) или признак макропеременной "$". Если введена команды редактора, то при нажатии переопределяемой клавиши будет вводиться эта команда. Если введено имя переменной, значе- нием которой должна быть макрокоманда, то клавиша будет вызывать эту макрокоманду. Если был введен символ "$", то клавиша станет признаком макропеременной вместо комбинации $ (<Перевод Строки>$). 3.12. Выполнение команд-фильтров (команда ) Такие полезные операции над текстами, как сортировка, выравнивание параграфов текста, структуризация текстов прог- рамм на "Си" и другие, выполняются командами операционной системы ДЕМОС. Редактор red позволяет использовать такие команды для переработки части файла с помощью команды . Например, для контекстной замены int на short в оче- редных 10 строках файла служит команда: 10l rpl "int" "short" После этого в очередных 10 строках произойдет замена текста int на short, которую выполнит команда ДЕМОС "rpl", на- писанная специально для red. Можно вызывать любые команды, которые могут использоваться как фильтр. Например: cb - улучшение читаемости программы на Си, sort - сортировка Команда может выполняться в одном из следующих форма- тов: <ч.п> <команда> <с.п.> либо -<ч.c.><команда> <с.п.> либо <ч.с.>l <команда> <с.п.> где <ч.п.> - число параграфов, <ч.с.> - число строк, <с.п.> - список параметров. Причем <число строк> или <список параметров> могут отсутст- вовать. Первый (необязательный) аргумент формата определяет число строк либо параграфов за текущей строкой в файле, которые будут обрабатываться командой. Параграфы - это группы непус- тых строк, разделенные одной или несколькими пустыми стро- ками. Целое неотрицательное число указывает число парагра- фов. если число отрицательно или за ним следует буква l - оно указывает число строк. Если первый аргумент опущен, то имеется в виду 1 параграф текста. Таким образом, -15 или 15l задают 15 строк текста, а 2 - 2 параграфа. Второй аргумент - имя команды операционной системы, за которым могут идти ее аргументы, разделенные пробелами. Для включения пробелов в аргумент можно использовать кавычки ". Действие состоит в том, что вызывается указанная команда операционной системы с указанными параметрами. На стандартный ввод ей подаются заданные строки. Если команда выполнилась нормально, то указанные строки в файле заменя- ются на стандартный вывод команды. Старые строки помещаются в CLOSE-буфер. 3.12.1. Контекстная замена (rpl) Программа rpl вызывается командой и требует два аргумента. Она заменяет в указанных строках все вхождения первого аргумента на второй аргумент. Если какой-либо аргу- мент содержит пробелы, он должен быть взят в кавычки. rpl распознает регулярные выражения в первом аргументе по тем же правилам, что и редактор ed в контексте поиска, с тем отли- чием, что вместо символа . используется @ для обозначения одного произвольного символа. Например, команда: 100l rpl "^ *" " " исключит все группы пробелов в начале следующих 100 строк. для обозначения самих символов $, &, @, ^, * перед ними необходимо ставить \ (обратную черту). 3.12.2. Примеры использования команды С помощью команды можно вставить в любое место файла группу файлов, набрав: 0 cat <список файлов> Если при вводе программ на языке Си в отдельных функциях не оставлять пустых строк, а сами функции разделять пустыми строками, то можно улучшить читаемость текста любой функции, подведя курсор к ее началу и набрав: cb 3.12.3. Выход из редактора () Для того, чтобы окончить работу в red, записав все изме- нения в архив, служит команда: По умолчанию это две клавиши: ,. Если нужно выйти из редактора, не записывая изменения в архив, необхо- димо набрать: a где "a" - строчная латинская буква "a". Команду можно ввести и так: q, для выхода без записи нужно набрать: qa. 3.13. Прерывание выдачи. Аварийный выход из редактора Операционная система интерпретирует символы CTRL/S, CTRL/Q (приостановить передачу, продолжить передачу), CTRL/N, CTRL/O (русский регистр, латинский регистр), а также символ "прерывание" (interrupt) - CTRL/C. Одиночное нажатие символа "прерывание" прерывает вывод на экран или операцию контекстного поиска и переводит редактор в режим ввода пара- метров. Двойное нажатие символа "прерывание" в случае, если редактор не успел перейти в режим ввода параметров, приводит к аварийному завершению работы без записи измененных файлов. В режиме приема с клавиатуры символ "прерывание" интерпрети- руется как команда . В режиме повторения прерванного сеанса нажатие символа "прерывание" прерывает повторение и переводит редактор в режим ввода с терминала. 4. ДИАГНОСТИЧЕСКИЕ СООБЩЕНИЯ Сообщения редактора высвечиваются в нижней строке экрана. Они делятся на сообщения о режимах работы и сообщения об ошибках. В зависимости от установленной версии редактора диагностики выдаются на русском или английском языке. Ниже будут приводиться оба варианта диагностики. Сообщения о режимах работы Ред:<имя> use:<имя> - идет чтение файла <имя>; Зап:<имя> save:<имя> - идет запись файла <имя>; +Поиск:<текст> -Поиск:<текст> +search:<текст> -search:<текст> - идет поиск текста <текст> вперед или назад; Выполнение. executing.. - идет выполнение внешней команды; Режим вставки insertmode - установлен режим вставки; Указание курсором cursor defined - идет указание участка текста для команд или ; Создать(y/n)? имя Create (y/n)? имя - если вы действительно хотите создать новый файл <имя>, то введите "y"; Строки указаны меткой lines defined by tag - предыдущей командой указана часть строк файла (от курсора до запомненной в переменной метки), которая будет передана очередной команде как параметр; Прямоугольник указан меткой square defined by tag - предыдущей командой указана часть файла (от курсора до запомненной в переменной метки), которая будет пере- дана очередной команде как параметр; Часть строки указана меткой columns defined by tag - предыдущей командой указана часть строки (от курсора до метки, присвоенной переменной), которая будет пере- дана очередной команде как параметр. Сообщения об ошибках : Аргумент должен быть числом argument must be numeric - аргумент команды должен быть числовым; Аргумент должен быть положительным argument must be positive - аргумент должен быть положительным; Буфер вставок пуст nothing in the pick buffer - введена команда , но ни разу не выполнялась команда ; Close буфер пуст nothing in the close buffer - введена команда , но ни разу не выполнялась команда ; А что искать? nothing to search for - не задан образ для контекстного поиска; Текст не найден search key not found - образ для поиска не найден; Здесь нельзя создать окно can't put a window there - при создании нового "окна" курсор должен быть в первой строке "окна" или на первой колонке; Не могу создать столько can't make any more ports - превышено допустимое число "окон" (10); Слишком много файлов too many files... - превышено максимально допустимое число файлов (10); Вы не можете изменить этот файл you can't modify this file - файл нельзя изменять, так как запись в него запре- щена. Имеется еще несколько редких диагностик, но они, как пра- вило, самоочевидны. 5. ПОСТАНОВКА РЕДАКТОРА red. ПОДКЛЮЧЕНИЕ НОВЫХ ТИПОВ ТЕРМИ- НАЛОВ Редактор red ничего не знает о терминалах, на которых он работает. Необходимую для работы информацию он получает от операционной системы. Операционная система знает тип терми- нала и устанавливает его в переменную TERM интерпретатора SHELL или CSH. Свойства терминалов описаны в файле /etc/termcap. Терми- налы характеризуются набором функциональных возможностей, кодами команд и способом выполнения различных операций. Список терминалов, описание которых уже занесено в систему, приведен в начале файла "/etc/termcap". Элементы файла termcap состоят из символьных полей, раз- деленных символом ":"(двоеточие). Первый элемент указывает имена, под которыми терминал известен в системе. имена раз- делены символом (вертикальная черта). Как правило, последнее имя является полным названием терминала, а предыдущие имена - его сокращениями, которые используются, в частности, в файле /etc/ttytype. Подробную информацию можно найти в сле- дующих разделах оперативной документации по ОС ДЕМОС: environment(5) tset(1) ttys(5) ttytype(5) termcap(5) Ниже повторяется описание формата описания терминалов termcap. 5.1. Описание терминала в базе описаний терминалов Описание каждого типа терминалов в файле /etc/termcap состоит из ряда полей, разделенных символом ":". Если описа- ние переносится на новую строку, то в конце предыдущей ста- вится ":\", и новая строка начинается с символа ":". Все характеристики имеют двухсимвольные коды. Характеристика может иметь одну из трех форм записи: :<имя>: - характеристика описывает наличие или отсутствие какой-либо возможности (логический тип); :<имя>#<число>: - это численная характеристика (например, размер экрана); :<имя>=<задержка><строка>: - значением является строка символов, причем <задержка> может отсутствовать. В последнем случае за "=" следует необязательное число, которое указывает длительность задержки при выполнении команды в миллисекундах. затем следует строка символов в закодированной форме. Элементы строки могут представляются в одной из четырех форм: 1) \<символ> - обозначает один из следующих символов, не представимых графически: \r - код 015 (return); \n - код 012 (line feed); \t - код 011 (tab); \b - код 010 (backspace); \f - код 014; 2) \nnn, где "nnn" -восьмеричные цифры - символ с кодом "nnn"; 3) ^<буква> - управляющий символ CTRL+<буква>, например, "^C" обозначает символ "003"; 4) <любой символ>, кроме ":", "\", "^", обозначает сам себя. Символ "пусто" кодируется как \200. Таблица 1. Основные характеристики терминалов ---------------------------------------- имя тип обя- только значение | хар зат. для red характеристики | ---------------------------------------| Группа 1. Описывает размеры экрана терминала. co чис + - число колонок в строке | li чис + - число строк на экране | ---------------------------------------| Группа 2. Описывает способ управления курсором на экране. am лог - - терминал имеет автома- | тический перевод строк | bs лог - - код 010 вызывает возврат| на 1 позицию назад | rt стр - - возврат на начало строки| bc стр - - код "курсор назад", | если не 010 | cm стр - - адресация курсора * | cl стр + - очистка экрана | do стр * - курсор вниз | up стр * - курсор вверх | nd стр * - курсор вправо | ho стр * - курсор в начало экрана | ---------------------------------------| Группа 3. Описывает инициализацию дисплея и дополнительные его характеристики is стр - - инициализация терминала | fs стр - + конец работы в редакторе| возврат в начальное | состояние | cu стр - + код "светлый квадрат" | (как правило, \177.) | nb лог - + нет звукового сигнала | ---------------------------------------| Группа 4. Возможности терминала по отображению символов. UC лог - - терминал имеет только | прописные буквы | LC лог - - терминал имеет прописные| строчные буквы | CY лог - + терминал имеет русские и| латинские буквы | ---------------------------------------| Группа 5. Дополнительные редактирующие возможности терминала; al стр - - вставка пустой строки | dl стр - - исключение строки | ic стр - - вставить символ | dc стр - - исключить символ | cd стр - - очистить экран от курсор| до конца | ce стр - - очистка конца строки | sr стр - - прокрутить текст вниз | sf стр - - прокрутить текст вверх | ns лог - - нет сдвижки текста | (нет roll) | cs стр - - изменение области про- | крутки текста* | ---------------------------------------| Группа 6. Коды, вырабатываемые основными управляющими клавишами. kd стр + - код клавиши стрелка вниз| ku стр + - -- // -- стрелка вверх | kl стр + - -- // -- стрелка влево | kr стр + - -- // -- стрелка вправо| kh стр + - -- // -- "home" | ---------------------------------------| Группа 7. коды клавиш, используемых для выполнения команд редактора: kN - - команда <-PAGE> | kP - - команда <+PAGE> | kB - - команда | kF - - команда <+LINE> | kR - - команда <-LINE> | ---------------------------------------| Группа 8. Коды, вырабатываемые функциональными клавишами PF1-5 Трактуются они так: | k1 стр - - команда | k2 стр - - команда | k3 стр - - команда | k4 стр - - команда | k5 стр - - команда | ---------------------------------------| Группа 9. Коды, вырабатываемые дополнительной функциональной кла- f. стр - + Коды, вырабатываемые | f- стр - + дополнительной функцио-| f0 стр - + нальной клавиатурой. | f1 | .. ... . . | f9 стр - + | ---------------------------------------| Группа 10. tc=<имя> означает, что остальные ха-| рактеристики совпадают с| характеристиками терминала | <имя> | <имя>@ отмена характеристики | <имя> | hR стр - + Имя файла с кратким | описанием команд | (выдается пользователю)| ---------------------------------------| Группа 11 Описывает работу с псевдографическими символами. Gs стр - + Включение псевдографи- | ческого набора символов| Ge стр - + Выключение псевдографи-| ки | Gt стр - + Набор символов псевдо- | графики | ---------------------------------------- В таблице 1 приведены основные характеристики, используе- мые редактором red. Полное описание возможных характеристик имеется в документации по операционной системе. Характеристики разбиты на 11 групп. Группа 2. Описывает способ управления курсором на экране. Самый сложный элемент группы - характеристика "cm". Если у терминала нет возможности прямой адресации курсора на экране, то для работы red необходимы характеристики, помеченные символом "*" в графе "обязательный", в про- тивном случае редактор может обойтись и без них. Харак- теристика "am" означает, что при достижении конца строки курсор автоматически переходит на начало следую- щей строки. Группа 3. Описывает инициализацию дисплея и дополнительные его характеристики. "cu" - это код символа, используемого редактором для маркировки положения курсора в "окне". если он не указан, используется символ "@". Рекоменду- ется указывать "cu=\177", если только терминал умеет отображать этот код как светлый квадрат. Группа 4. Возможности терминала по отображению символов. если "UC", то терминал должен работать в режиме "lcase"; Эти характеристики использует система, а не редактор, для установки флагов терминала. Группа 5. Дополнительные редактирующие возможности терминала; характеристика "cs" аналогична "cm" по работе с пара- метрами - номерами верхней и нижней строки области сдвига текста. Группа 6. Коды, вырабатываемые основными управляющими клавишами. Группа 7. Коды, вырабатываемые функциональными клавишами, которые предполагается использовать в соответствии с указанной трактовкой. Группа 8. Коды, вырабатываемые функциональными клавишами PF1 - PF5 или клавишами, их заменяющими. Группа 9. Коды, вырабатываемые дополнительной функциональной кла- виатурой с надписями "0"-"9", "-", ".". Группа 10. Позволяет описывать один терминал через другой, если они похожи. например: vt340:cm@:UC:KI:LC@:nb:tc=vdt52100c Группа 11 Описывает работу с псевдографическими символами, кото- рые используются для рисования рамок. Gs включает режим вывода псевдографических символов, Ge его выключает. Строка Gt описывает кодирование псевдографических сим- волов в режиме псевдографики: каждый символ строки соответствует одному символу псевдографики в следующем порядке: - горизонтальная черта; - большой закрашенный квадрат; - вертикальная черта; - левый нижний угол; - нижнее "T"; - правый нижний угол; - левое "T"; - пересечение двух линий; - правое "T"; - верхний левый угол; - верхнее "T"; - верхний правый угол; - стрелка вниз; - стрелка вверх; - стрелка влево; - стрелка вправо; если в строке задано меньше символов, не заданные сим- волы заменяются на соответствующие им обычные символы КОИ-8. 5.2. Адресация курсора. Способ адресации курсора для данного терминала описыва- ется характеристикой "cm" строчного типа. Кроме символов, которые просто передаются на терминал, в строке могут встре- чаться специальные последовательности вида %X, которые при выводе заменяются на номер колонки или номер строки по пра- вилам, определяемым символом X (аналогично работает формат в printf). Если рассматривать строку "cm" как формат вывода, то параметрами функции вывода являются номер строки и пози- ции, на которые должен быть установлен курсор. Коды типа "%" имеют следующий смысл: %d - то же, что и для программы "printf", причем нумера- ция колонок и столбцов начинается с 0; %2 - эквивалентно %2d; %3 - эквивалентно %3d; %. - эквивалентно %c; %+x - сложить код символа "x" с соответствующим значением (номером строки или колонки), затем выдать ее по "%."; %r - обратный порядок номеров строки и позиции. вывод не производится; %i - номера строки и колонки отсчитывать с 1 (вместо 0); %% - дает один символ "%". Например, для терминала "VDT-52100" адресация курсора описывается следующей строкой: cm=3^a%.%. Терминалы, которые используют коды вида "%.", должны иметь характеристики "bs" (или "bc") и "up", то есть иметь возможность перемещать курсор назад на 1 позицию и вверх на одну строку. Это необходимо, так как редактор не выдает при адресации курсора символы \t, \n, ^D и \r: система может изменить или уничтожить эти символы. В данном разделе очень кратко были изложены правила опи- сания терминала в файле /etc/termcap. Обычно при появлении нового терминала бывает целесообразно для его описания использовать описание какого-либо другого терминала либо использовать краткое описание с параметром "tc=...". Однако скорее всего все ваши терминалы уже имеются в /etc/termcap, что избавит от необходимости разбираться в не очень простых правилах описания терминалов. ПРИЛОЖЕНИЕ 1. Справочная информация по red Редактор red предназначен для редактирования и просмотра файлов в экранном режиме. Он позволяет просматривать на экране терминала один или несколько файлов, редактировать файлы с использованием управляющих клавиш терминала и команд редактора, переносить информацию из файла в файл и проводить другие операции редактирования. Редактор вызывается с помощью команды red в одном из сле- дующих форматов: red [-ключи] имя_файла [номер_строки] Начать редактирование файла "имя_файла", установив окно на строку номер_строки; если номер не указан, высвечи- вается начало файла. red [-ключи] Продолжить редактирование с того состояния, в котором был завершен предыдущий сеанс работы с данного терми- нала. red [-ключи] - Повторить сеанс редактирования файлов после сбоя сис- темы или редактора. red [-ключи] -r файл_протокол Повторить сеанс редактирования, считав протокол из ука- занного файла. Ввод команд осуществляется с помощью функциональных кла- виш терминала. На большинстве терминалов для этого исполь- зуется дополнительная цифровая клавиатура, расположенная справа для основной. Особое значение имеет клавиша `2', которая изменяет значение следующей клавиши. Если дополни- тельная цифровая клавиатура отсутствует или не имеет режима генерации управляющих кодов, используется клавиша <перевод строки> (), например вместо `1' вводят `1', а вместо `2'`4' - `4'. Краткое описание команд В описании приведены: краткое название команды, полное название команды, ввод с клавиатуры (через "," перечислены возможные варианты ввода, запись ^C означает CTRL+C): - ВВОД АРГУМЕНТА: `1', <Пробел> Начало ввода аргумента. Аргументом может быть строка символов или указание области на экране терминала (область определяется начальным и конечным положениями курсора и представляет собой либо прямоугольник на экране, если начальная и конечная колонки не совпадают, либо несколько строк, если начальная и конечная колонки совпадают). Ввод аргумента завершается вводом команды, к которой этот аргумент относится. - ТАБУЛЯЦИЯ: - ТАБУЛЯЦИЯ НАЗАД: `.', ^B передвинуть курсор на следующую (предыдущую) позицию табуляции. - ПЕРЕЙТИ НА: `4' Без аргумента - переход на начало файла. Аргумент - номер строки; пустой аргумент - конец файла. - СДВИГ ВЛЕВО: `2'<курсор влево> - СДВИГ ВПРАВО: `2'<курсор вправо> Сдвиг экрана влево/вправо. <+PAGE> - ЛИСТ ВПЕРЕД: `7', <-PAGE> - ЛИСТ НАЗАД: `2'`7', Возможный аргумент - число страниц, на которые экран перемещается по текущему файлу. <+LINE> - СТРОКА ВПЕРЕД: , ^T <-LINE> - СТРОКА НАЗАД: , ^W Аргумент - число строк; пустой аргумент - вывести теку- щую строку в верхнюю (нижнюю) строку окна (перемещением окна по файлу). Клавиши и (над- писи могут быть и иными) обозначены в описании терми- нала в системе как "kF" и "kR". <+SEARCH> - ПОИСК ВПЕРЕД: `3', ^R <-SEARCH> - ПОИСК НАЗАД: `2'`3', ^E Аргумент - текст, который нужно найти в файле. - РЕЖИМ ВСТАВКИ: `5', Включает/выключает режим вставки; - ИСКЛЮЧИТЬ СИМВОЛ: `6', ^U - ИСКЛЮЧИТЬ КОНЕЦ СТРОКИ: `1'`6' - РАЗДВИНУТЬ: `8', Вставить пустую строку; аргумент - число строк либо область на экране, в которую нужно вставить пробелы. - УБРАТЬ: `2'`8', Убрать строки либо область на экране. Убранная инфор- мация попадает в буфер убранных строк. - ВЗЯТЬ: `9', ^F Запомнить строки либо область на экране. - ПОЛОЖИТЬ: `2'`9', ^G Взятая ранее информация помещается в текущее место на экране. Команда с пустым аргументом используется, чтобы вставить информацию из буфера убранных строк. - РАЗРЕЗАТЬ СТРОКУ НА ДВЕ Отрабатывается по команде с пустым аргументом. (`1'). - СКЛЕИТЬ СТРОКИ Отрабатывается по команде с пустым аргументом. (`1'). - ЗАПИСЬ: `2' `-', ^V Аргумент - имя файла (если не совпадает со старым). - РЕДАКТИРОВАТЬ: `-', ^D Команда без аргумента переходит к альтернативному файлу (по умолчанию - файл подсказок). - СОЗДАТЬ ОКНО: `2'`4' Аргумент - имя файла, который будет высвечиваться в новом окне. Курсор должен быть либо в крайней левой позиции экрана либо на верхней строке экрана. Команда с пустым аргументом выполняет отмену последнего заве- денного окна. - СМЕНИТЬ ОКНО: `0' сменить текущее окно (если открыто более чем одно окно). - ВЫПОЛНИТЬ: `2'`0', ^P Аргумент: "[число[l] ] команда [аргументы]". "команда" выполняется как фильтр над текстом в очередных "число" абзацах (если указана буква l, то строках) файла. Абзац - группа непустых строк файла, разделенная одной или несколькими пустыми строками. - ВЫХОД: <Перевод строки><Забой> Аргумент "a" блокирует запись измененных файлов. Команда может также вводиться как <АРГ>q[a]<Возврат каретки>. - Запомнить в переменную: <АРГ>>И<Команда> Где И - имя макропеременной (одна буква), <Команда> - либо <Возврат каретки> (тогда запоминается текущее место в файле), либо (запоминается буфер вставки), либо (запоминается буфер убранных строк). Макро затем можно использовать в командах , , а также в командах, аргументом которых может быть область на экране (в этом случае вводится область от текущего положения курсора до запомненной метки), указав в качестве аргумента "$И". - ВВОД МАКРО: <АРГ>d И<ВК> Концом ввода служит команда <ВЫХОД>. - ВЫПОЛНЕНИЕ МАКРО: <ПС>$И - ПЕРЕОПРЕДЕЛЕНИЕ КЛАВИШИ: <АРГ>k<ВК> При этом, если в ответ на запрос переопределяемой команды введено имя макро (одна буква), при нажатии этой клавиши выполняется данное макро. - ПРИЗНАК НЕТЕКСТОВОГО СИМВОЛА: `2'`0', ^A По этой команде вводится специальный символ и следующий управляющий символ вводится в файл, а не трактуется редактором как команда. Далее приведена кодировка команд для наиболее распростра- ненных терминалов. Если на вашем терминале обозначения на управляющей клавиатуре не совпадают с ними, необходимо уточ- нить кодирование команд редактора у системных программистов. На схемах клавиатуры сверху написано название команды, кото- рая исполняется по данной клавише. Посередине - надпись на клавише. Снизу написано название команды, которая исполня- ется, если предварительно нажать клавишу `2'. ____________________________________________________________ Команды для Электроника-15-ИЭ-0013 управляющая клавиатура цифровая клавиатура --------------------------- ---------------------------- | | & | USE | | +PAGE | OPEN | PICK | | i~~ | I | V_| | | -7- | -8- | -9- | | | +LINE | SAVE | | -PAGE | CLOSE | PUT | --------------------------- ---------------------------- | | HOME | | | GOTO | INSERT | DCHAR | | <-- | & | --> | | -4- | -5- | -6- | | LEFT | | RIGHT | | M-PORT | CH-TAB | | --------------------------- ---------------------------- | BSPACE | I | | | ARG | "УСТ" | +SEARC | | <-I | V | I-> | | -1- | -2- | -3- | | | -LINE | | | | "ОТМ" | -SEARC | --------------------------- | ESCAPE | B-TAB | | OPEN | INSERT | CLOSE | | -0 - | -,- | | = | .. | = | | CH-PORT | EXEC | --------------------------- ---------------------------- EXIT -"ПС""ЗБ" TAB - "ГТ" Рис 6 ____________________________________________________________ ____________________________________________________________   Команды для VDT52100 и VT-340 -------------------- ------------------ | | | | | | | "d l" | "i l" | |"return"|"erase"| -------------------- ------------------ ||| | "d c" | "i c" | -------------------- | | | "h o m e" | -------------------- Ввод остальных команд: <+PAGE> - `8' <+LINE> - ^T <-PAGE> - `8' <-LINE> - ^W - <СтрелкаВлево> - <СтрелкаВправо> - `4' <+SEARCH> - ^R - `4' - ^F - `0' - ^G - ^A - ^P - `5' - ^B - ^U <-SEARCH> - ^E - `-' - ^D Рис. 7 ____________________________________________________________ ____________________________________________________________   Команды для ВТА 2000.3 При нажатии на клавиши 0-9, ".","," необходимо одновременно нажать клавишу "УПР". ------------------------------------- | ARG | B-SPACE| HOME | / | | *** | ***00 | & | *** | | *00 | | +---- | / | ------------------------------------- | +PAGE | OPEN | PICK | & | | -7- | -8- | -9- | I | | -PAGE | CLOSE | PUT | +LINE | ------------------------------------- | GOTO | INSERT | DCHAR | I | | -4- | -5- | -6- | V | | M-PORT | CH-TAB | | -LINE | ------------------------------------- | ARG | "уст" | +SEARC | | | -1- | -2- | -3- | --> | | | "отм" | -SEARC | RIGHT | ------------------------------------- | ESCAPE | B-TAB | | | -0 - | -,- | <-- | | CH-PORT | EXEC | LEFT | ------------------------------------- Рис. 8 ____________________________________________________________ ____________________________________________________________   Команды для ВТА 2000.1 При нажатии на клавиши 0-9, ".","," необходимо одновременно нажать клавишу "УПР". ------------------------------------------ | ARG | | |INSERT |B-SPACE| |"чистка | ***** | **::: | ***> | <*** | | экрана"| ***:: | | | | ------------------------------------------ | HOME | | | & | OPEN | | & | | | I | * | | +---- | | | +LINE | V | ------------------------------------------ | +PAGE | OPEN | PICK | I | CLOSE | | -7- | -8- | -9- | V | & | | -PAGE | CLOSE | PUT | -LINE | * | ------------------------------------------ | GOTO |INSERT | DCHAR | | | | -4- | -5- | -6- | ---> | | | M-PORT |CH-TAB | | RIGHT | | ------------------------------------------ | ARG |"уст" |+SEARC | | | | -1- | -2- | -3- | <--- | | | |"отм" |-SEARC | LEFT | | ------------------------------------------ | ESCAPE | B-TAB | | | | -0 - | -,- | | | | CH-PORT | EXEC | | | ------------------------------------------ Рис. 9 ____________________________________________________________ ____________________________________________________________   МЕРА-7958,VDT-STATION,VDT-52129 и другие терминалы, похожие на DEC/VT-52 ---------------------------------- | ARG | OPEN | CLOSE | & | | pf1 | pf2 | pf3 | | | | | | | +LINE | ---------------------------------- | +PAGE | OPEN | PICK | I | | -7- | -8- | -9- | V | | -PAGE | CLOSE | PUT | -LINE | ---------------------------------- | GOTO |INSERT | DCHAR | | | -4- | -5- | -6- | ---> | | M-PORT |CH-TAB | | RIGHT | ---------------------------------- | ARG |"уст" |+SEARC | | | -1- | -2- | -3- | <--- | | |"отм" |-SEARC | LEFT | ---------------------------------- | ESCAPE | B-TAB | USE | | -0 - | -,- | enter | | CH-PORT | EXEC | SAVE | ----------------------------------- Рис. 10 ____________________________________________________________ ПРИЛОЖЕНИЕ 2. Изображение команд редактора при вводе макро- определения lt ^F tab ^] rt ^E escape ^@ up ^A +line ^T dn ^B -line ^W rn ^C +page ^N home ^D -page ^Q tab ^G goto ^O b-tab ^H left ^S right ^Y ch-port ^M +search ^R del-ch ^U -search ^X b-space нет open ^K arg ^_ close ^^ insert ^\ pick ^I save ^V put ^Z use ^L m-port ^J exec ^P