Диалоговая Единая Мобильная
Операционная Система
ДЕМОС 32/V 2.0

Полиэкранный редактор текстов red

Москва, 1988


1. ВВЕДЕНИЕ

2. ОБЩЕЕ ОПИСАНИЕ РЕДАКТОРА
2.1 Основные принципы редактирования.
2.2 Вызов редактора
2.3 Использование клавиатуры и ввод команд редактора
2.3.1 Отображение информации
2.3.2 Ввод информации с клавиатуры
2.3.3 Ввод команд в редактор red
2.4 Окна и редактируемые файлы
2.5 Переменные и макрокоманды
2.6 Изменение режимов работы редактора
2.7 Что делать при сбое

3. КОМАНДЫ РЕДАКТОРА red
3.1. Ввод параметров <ARG>
3.2. Восстановление экрана
3.3. Движение курсора внутри окна
3.3.1. Клавиши со стрелками
3.3.2. Команды <HOME> и <RETURN>
3.3.3. Табуляция (<tab>, <b-tab>, <set-tab>)
3.4. Редактирование внутри строки
3.4.1. Ввод текста. Режим вставки (<INSERT>)
3.4.2. Уничтожение символов (<DEL-CH> и <BACK- SPACE>)
3.4.3. Ввод нетекстовых символов (<ESCAPE>)
3.5. Перемещение по файлу
3.5.1. Запоминание места в файле
3.5.2. Подвод к строке (<GOTO>)
3.5.3. Листование файла (<+PAGE>, <-PAGE>, <+LINE>, <-LINE>)
3.5.4. Сдвиг окна вправо/влево (<RIGHT> и <LEFT>)
3.5.5. Перемещение с помощью стрелок
3.6. Контекстный поиск (<+SEARCH>, <-SEARCH>)
3.7. Чтение и запись файлов (<USE>, <SAVE>)
3.7.1. Запрет и разрешение записи в файл
3.8. Перенос, уничтожение и вставка текста
3.8.1. Команды <OPEN> и <CLOSE>
3.8.2. Копирование текста (<PICK>, <PUT>)
3.9. Работа с окнами (<M-PORT> и <CH-PORT>)
3.10. Использование макрокоманд
3.11. Переопределение клавиатуры
3.12. Выполнение команд-фильтров (команда <EXEC>)
3.12.1. Контекстная замена (rpl)
3.12.2. Примеры использования команды <EXEC>
3.12.3. Выход из редактора (<EXIT>)
3.13. Прерывание выдачи. Аварийный выход из редактора

4. ДИАГНОСТИЧЕСКИЕ СООБЩЕНИЯ

5. ПОСТАНОВКА РЕДАКТОРА red. ПОДКЛЮЧЕНИЕ НОВЫХ ТИПОВ ТЕРМИНАЛОВ
5.1. Описание терминала в базе описаний терминалов
5.2. Адресация курсора.

ПРИЛОЖЕНИЕ 1. Справочная информация по red. Краткое описание команд

ПРИЛОЖЕНИЕ 2. Изображение команд редактора при вводе макроопределения


1. ВВЕДЕНИЕ

Экранный редактор red работает под управлением операционной системы ДЕМОС и предназначен для просмотра и изменения текстовых файлов ДЕМОС в экранном режиме. Он имеет следующие особенности:

2. ОБЩЕЕ ОПИСАНИЕ РЕДАКТОРА

2.1. Основные принципы редактирования.

При работе red использует весь экран терминала. На экране выделяется несколько различных областей. Основную часть занимает "окно" отображения файла, обведенное рамкой, самая нижняя строка оставляется для ввода "параметров команд" редактора и для выдачи сообщений. В этой же строке высвечивается номер строки и имя редактируемого файла (рисунок 1).
При необходимости "окно" можно поделить на несколько меньших окон и изобразить в них разные файлы или разные части одного файла. Каждое "окно" показывает часть закреп- ленного за ним файла.
Для перемещения курсора внутри окна используются клавиши со стрелками и надписями <RETURN> (<ВК>), <HOME>, <TAB>; при наборе текста на текстовой клавиатуре он просто вводится в файл в место, указываемое курсором. Для более сложных операций служат "команды" редактора red, которые вводятся с помощью функциональной клавиатуры и, в частности, позволяют:


При этом на экране изображается текущее состояние редактируемых файлов.

Команды редактора вводятся при помощи функциональных клавиш и обозначаются в данном документе так:


<НАЗВАНИЕ КОМАНДЫ>.


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

2.2. Вызов редактора

Для редактирования файла имя , начиная со строки номер, необходимо набрать команду:


 red имя [номер]


В квадратные скобки взяты необязательные параметры, жирным шрифтом выделены команды системы, подчеркнуты параметры команды.
Редактор считает и высветит файл имя , причем курсор установится на строку номер (По умолчанию курсор устанавливается на 11-ю строку файла). После этого можно просматривать и редактировать файл. В конце работы вводится команда <EXIT>, для этого нужно нажать клавиши <Line Feed> <Del (<ПС><ЗБ> в русской нотации), и изменения будут записаны на диск.
Можно продолжить редактирование с того места, где оно было окончено последний раз. Для этого служит команда (1):

    red


В случае сбоя системы или редактора сеанс редактирования можно воспроизвести с помощью команды:

    red -


При вызове red можно также указывать "режимы" работы редактора:

 red -[-ключи][+ключи] остальные параметры


подробнее о режимах работы сказано в
разделе 4.

2.3. Использование клавиатуры и ввод команд редактора

В данном разделе описаны правила ввода команд и использования клавиатуры при работе с редактором red, а также изображение символов из файла на экране терминала. Для ввода команд редактора, как правило, используется дополнительная цифровая клавиатура, которая размещена справа от основной клавиатуры. Так, команда <+PAGE> вводится нажатием клавиши 7, а команда <ARG> - клавишей 1. Если предполагается использовать для работы с red терминал, который имеет полный набор прописных и строчных русских и латинских букв и дополнительную клавиатуру, никаких сложностей с вводом не возникает - терминал позволяет вводить все символы кода КОИ-8 и использовать дополнительную клавиатуру для ввода команд. В этом случае можно переходить к чтению следующего параграфа. Некоторые сложности возникают при работе на терминалах, не имеющих полного набора символов либо дополнительной цифровой клавиатуры.
При вызове red может оказаться, что редактору не доступны характеристики вашего тeрминала. В этом случае перед первым вызовом редактора введите команду (в интерпретаторе csh):


 setenv TERM Тип_терминала


Условно клавиатуру любого терминала можно разделить по функциям на следующие части:
  1. Клавиши, не вырабатывающие кодов (такие, как SHIFT, ROLL и т.п.). из них нас интересует только клавиша CTRL (или УС), которая вызывает при одновременном нажатии основной клавиши клавиатуры выработку управляющих кодов ("control-символы");.
  2. Основная клавиатура - содержит символы кода ASCII или КОИ-8. В зависимости от набора этих символов терминалы можно разделить на три группы:
    • Терминал может отображать только латинские (прописные и строчные) буквы и все специальные символы кода ASCII;
    • Терминал может отображать только прописные русские и латинские буквы;
    • Терминал может изображать русские и латинские строчные и прописные буквы и все специальные символы, то есть все символы кода КОИ-8 (например, терминал "Электроника-15-ИЭ-0013");
  3. Общепринятые управляющие клавиши:
    • стрелки влево, вправо, вверх, вниз;
    • RETURN (Возврат Каретки);
    • LINE FEED (Перевод Строки);
    • TAB (Табуляция);
    • HOME (Курсор в начало экрана);
  4. Дополнительная функциональная клавиатура, обычно совмещенная с цифровой (например, терминал "Электроника-15-ИЭ-0013" имеет группу клавиш с надписями 0 - 9, которые в зависимости от режима работы являются либо обычными символами '0'-'9', либо вырабатывают управляющие последовательности кодов и могут использоваться как функциональные клавиши; на терминалах серии VTA 2000 клавиши 0 - 9 вырабатывают управляющие коды при одновременном нажатии на клавишу УПР);
  5. Дополнительные управляющие клавиши, например IL, DL, IC, DC, ERASE, - на VDT-52100c или аналогичные клавиши на других терминалах. В автономном режиме они обычно редактируют текст на экране терминала.

Для работы в red достаточно использовать основную клавиатуру и общепринятые управляющие клавиши. Для упрощения ввода команд можно использовать функциональную клавиатуру либо дополнительные управляющие символы, если они есть на вашем терминале.

2.3.1. Отображение информации

Редактор рассчитан на работу с текстами, содержащими строчные и прописные русские и латинские буквы в коде КОИ-8, допускаются также символы с кодами, не имеющими графического изображения. В зависимости от возможностей терминала, некоторые символы файла могут изображаться на экране в виде двух и более символов:

  1. Символы с кодами 0 - 037 изображаются в виде пары символов: символа "забой" (светлый прямоугольник) и графического символа, код которого в "КОИ-8" равен коду исходного плюс 0100. (Это один из символов @, A-Z,[,], \ , _,^); Если на терминале нет символа "забой", высвечивается @ либо нестандартный символ, выбранный системным программистом при настройке редактора на терминал.
  2. Если терминал не имеет прописных букв, то отсутствующие символы изображаются следующим образом:
    строчные буквы - прописными буквами
    прописные буквы - \прописная буква
    \ - \\
    ~ (тильда) - \^ (\`надчерк')
    ` (обратная кавычка) - \'
    } (закр.фигурная скобка) - \)
    { (откр.фигурная скобка) - \(
    | (вертикальная черта) - \!
  3. Если терминал не имеет русских букв, то они изображаются парой символов #латинская буква, причем прописным "А"- "Я" соответствуют прописные "A"-"Q", а строчным - строчные "a"-"q" в соответствии с кодом "КОИ-8";
  4. Символы 0200 - 0277 и 0377 изображаются последовательностью:
    
          @kkk
    
    

    где kkk - трехзначный код символа, a "@" - "забой" либо соответствующий ему символ.
    Символ "Забой" (код 0177) изображается как
    
          @#
    
    

2.3.2. Ввод информации с клавиатуры

Ввод текста с клавиатуры практически не зависит от типа терминала.

  1. Специальные символы (пробел, запятая и т.д.) с кодами 040 - 077 вводятся обычным образом;
  2. Латинский регистр включается при нажатии клавиш CTRL/O (клавиша ЛАТ на терминалах "Электроника"). На латинском регистре вводятся прописные и строчные буквы (прописные в верхнем (на VTA 2000 -ЛАТ) регистре клавиатуры и строчные - в нижнем (на VTA 2000 -РУС)), специальные символы \, [, ] и другие символы кода КОИ-8 с кодами от 0100 до 0176;
  3. Русский регистр включается нажатием CTRL/N (клавиша РУС на терминалах "Электроника"). После этого вводятся в зависимости от регистра клавиатуры русские прописные или строчные буквы;
  4. Признак неграфического символа ("забой" на экране) вводится командой <ESCAPE> (CTRL/A либо 2. на дополнительной клавиатуре).

2.3.3. Ввод команд в редактор red

Для управления редактированием, просмотра файлов и других действий используются команды редактора red, которые идентифицируются командами, вводимыми с клавиатуры. Команды вводятся нажатием 1 или 2-х управляющих или функциональных клавиш. В зависимости от конкретного терминала, они могут вводиться одним из нескольких способов:

  1. Если на терминале есть дополнительная цифровая клавиатура, то любую команду можно ввести нажатием одной или двух клавиш на ней, например 1 - команда <ARG>, а 29 - команда <PUT>. При этом клавиша 2 служит для изменения смысла следующей команды (если нажать 9, то введется команда <PICK>).
  2. Если этой клавиатуры нет, то вместо Цифра нужно нажать Line FeedЦифра (на основной клавиатуре), а вместо 2Цифра - Line Feed Line Feed Цифра.
  3. Многие команды можно также вводить через control-символы, например, CTRL/T - команда <+LINE>.
  4. Наиболее употребительные команды могут также быть введены через управляющие или функциональные клавиши; их значение зависит от типа терминала. Так, клавиши PF2 и PF3 на большинстве терминалов вызывают команды <OPEN> и <CLOSE>.

Команды, управляющие движением курсора, вводятся только с управляющей клавиатуры (стрелки, RETURN, TAB, HOME).

2.4. Окна и редактируемые файлы

Редактор показывает участок редактируемого файла на экране терминала в "окне". Имя файла, который нужно редактировать первым, указывается в параметрах вызова red. Можно перейти к другому файлу, воспользовавшись командой <USE>. Кроме того, редактор автоматически подключает псевдо-файл "#", в котором запоминаются все отмеченные или исключенные строки.
"Окно" можно разделить на несколько меньших "окон" с помощью команды <M-PORT>, отобразив в каждом участок того или иного файла (рис.2). Для упрощения переключения с файла на файл любое "окно" может быть связано также с "альтернативным файлом". Команда <USE> без параметров меняет местами основной и альтернативный файлы в текущем окне. При входе в редактор альтернативным является файл /usr/lib/re.std, содержащий краткое описание редактора.
Для уничтожения окон служит команда <ARG><M-PORT>. Изменения, произошедшие в файле, повторяются одновременно во всех "окнах", связанных с ним.
Среди всех "окон" имеется "текущее", в котором находится курсор. Левые и правые символы-ограничители несут следующую информацию:


слева:



    ; -  данной строки в файле нет;



                     Пример "окон"

            .....................................

            .-----------------------------------.

            .!              !!                 !.

            .! текущее      !!   еще одно      !.

            .! "окно"       !!   "окно"        !.

            .!              !!                 !.

            .!длинная строка>!                 !.

            .!              !!                 !.

            .!              !!                 !.

            .;              !!                 !.

            .;              !!                 !.

            .-----------------------------------.

            .arg:           file: a line 10     .

            .....................................

                         Рис. 2



    ! -  строка есть в файле и "окно" начинается с 1 колонки

         файла;



    < -  "окно" начинается не с 1 колонки файла, а  сдвинуто

         по файлу вправо;



справа:



    ! -  в строке нет информации справа от окна;



    > -  строка продолжается за правую границу "окна".


Все изменения, сделанные на экране, запоминаются и при выходе из редактора по команде <EXIT> (или по команде <ARG>q<RETURN>) измененные файлы записываются в архив. При этом старые варианты файлов переименовываются путем добавления суффикса .b, и в результате также сохраняются в архиве. Имеется возможность записать файл под текущим или под новым именем в архив еще в процессе редактирования (команда <SAVE>), а также выйти из редактора без записи измененных файлов, введя <ARG>qa<RETURN>.

2.5. Переменные и макрокоманды

В процессе редактирования часто возникает необходимость временно запомнить точку редактирования, текст или набор команд и затем многократно их использовать. Для этого в редакторе red служат переменные. Имеется 26 переменных с именами от a до z (имя состоит из одной латинской буквы), в которых можно хранить следующую информацию:

и другие терминалы, похожие на 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