Производственно-внедренческий кооператив

"И Н Т Е Р Ф Е Й С"





Диалоговая Единая Мобильная

Операционная Система

Демос/P 2.1






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

red

(руководство программиста)




Москва

1988




2


АННОТАЦИЯ
Описан полиэкранный диалоговый редактор текстов red (версия
3.3). Приведена инструкция по работе в редакторе, а также
правила описания терминалов новых типов для подключения их к
red.


















2



3


1. ВВЕДЕНИЕ

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

- для ввода команд широко используется функциональная
клавиатура и управляющие клавиши терминала;

- возможна работа с несколькими файлами одновременно;

- возможно образование на экране терминала нескольких
"окон" и одновременный просмотр нескольких файлов;

- возможно автоматическое восстановление редакций после
сбоя ЭВМ;

- редактор динамически настраивается на терминал;

- имеются макропеременные для хранения фрагментов текста,
наборов команд редактора и т.п.;

- имеется возможность переопределения функциональной кла-
виатуры и введения новых функциональных клавиш;

- возможно использование "внешних" команд, то есть команд
операционной системы ДЕМОС.

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

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

При работе red использует весь экран терминала. На экране
выделяется несколько различных областей. Основную часть
занимает "окно" отображения файла, обведенное рамкой, самая
нижняя строка оставляется для ввода "параметров команд"
редактора и для выдачи сообщений. В этой же строке высвечи-
вается номер строки и имя редактируемого файла (рисунок 1).


При необходимости "окно" можно поделить на несколько
меньших окон и изобразить в них разные файлы или разные
части одного файла. Каждое "окно" показывает часть закреп-
ленного за ним файла.

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



- 3 -



4



____________________________________________________________


Экран тeрминала

............................................
. ---------------------------------------- .
. : : .
. : : .
. : : .
. : <окно> : .
. : : .
. : : .
. : : .
. : : .
. : : .
. ---------------------------------------- .
. Арг:<параметры> Файл:a Стр: 10 .
............................................

Рис. 1

____________________________________________________________


- двигать "окно" вверх, вниз, вправо, влево по файлу;

- уничтожать, вставлять или перемещать фрагменты текста
как внутри одного файла, так и между разными файлами;

- переключать "окна" с файла на файл, записывать файлы в
архив, создавать новые "окна";

- осуществлять поиск строк по контексту.

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

Команды редактора вводятся при помощи функциональных кла-
виш и обозначаются в данном документе так:
<НАЗВАНИЕ КОМАНДЫ>.

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



- 4 -



5


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

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

red имя [номер]

В квадратные скобки [] взяты необязательные параметры,
жирным шрифтом выделены команды системы, подчеркнуты пара-
метры команды.

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

Можно продолжить редактирование с того места, где оно
было окончено последний раз. Для этого служит команда (1):

red


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

red -

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

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

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

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

В данном разделе описаны правила ввода команд и использо-
вания клавиатуры при работе с редактором red, а также изоб-
ражение символов из файла на экране терминала. Для ввода
команд редактора, как правило, используется дополнительная
цифровая клавиатура, которая размещена справа от основной
клавиатуры. Так, команда <+PAGE> вводится нажатием клавиши
____________________
1) При вызове red может оказаться, что редактору не дос-
тупны характеристики вашего тeрминала. В этом случае перед
первым вызовом редактора введите команду (в интерпретаторе
csh):
setenv TERM Тип_терминала




- 5 -



6


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

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

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', либо вырабатывают управляющие


- 6 -



7


последовательности кодов и могут использоваться как
функциональные клавиши; на терминалах серии 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


- 7 -



8


где 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 Цифра.



- 8 -



9


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>. Изме-
нения, произошедшие в файле, повторяются одновременно во
всех "окнах", связанных с ним.

Среди всех "окон" имеется "текущее", в котором находится
курсор. Левые и правые символы-ограничители несут следующую
информацию:

слева:

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

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

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

справа:

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



- 9 -



10



____________________________________________________________


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

.....................................
.-----------------------------------.
.! !! !.
.! текущее !! еще одно !.
.! "окно" !! "окно" !.
.! !! !.
.!длинная строка>! !.
.! !! !.
.! !! !.
.; !! !.
.; !! !.
.-----------------------------------.
.arg: file: a line 10 .
.....................................

Рис. 2

____________________________________________________________


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

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

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

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

- запоминать положение курсора в файле и затем использо-
вать его для возврата в нужную точку либо для указания
одной из границ области файла в командах <CLOSE>,
<OPEN>, <PICK>;




- 10 -



11


- запоминать текст для использования его в команде
<PICK>;

- запоминать последовательность команд и текста, то есть
макрокоманду.

Вызов переменной обозначается как имя, а запись в нее -
>имя,

где имя - латинская малая буква. В некоторых командах
переменная обозначается без символов $ или >.

2.6. Изменение режимов работы редактора

Режимы работы редактора red определяется несколькими клю-
чами, каждый из которых идентифицируется буквой латинского
алфавита и может быть включен или выключен. Ключи устанавли-
ваются по умолчанию (в зависимости от возможностей терминала
и переменных окружения SHELL) и могут быть изменены пользо-
вателем. Включенные ключи означают следующее:

e - на терминале нет русских букв;

l - на терминале нет строчных букв;

t - при записи строк заменять начальные пробелы табуляци-
ями;

w - разрешено изменение текущего файла;

i - режим вставки;

s - разрешено пользоваться аппаратными функциями сдвига
текста на экране;

f - запрет сдвига экрана при достижении курсором его гра-
ницы при вводе;

a - специальный режим АВТОСДВИГ, при котором по команде
<RETURN> курсор устанавливается не на 1-ю колонку
экрана, а на ту колонку, с которой был начат ввод
текста последний раз (эта колонка указывается в ниж-
ней строке окна специальным курсором).

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

1) При вызове редактора:

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

Ключи, указанные после -, сбрасываются, после + - уста-
навливаются, например:


- 11 -



12


red --t a.mx


2) Через переменную sh или csh REDKEYS в форме:

setenv REDKEYS [-ключи][+ключи]

(для csh);

3) Командой редактора:

<ARG>[-ключи][+ключи]<RETURN>


По умолчанию устанавливается ключ t, ключи l, s и e уста-
навливаются в зависимости от возможностей терминала.

Ключ w используется для запрета или разрешения записи в
текущий файл. Его имеет смысл использовать для редактирова-
ния закрытых на запись файлов в случае, если запись в спра-
вочник разрешена. Следует учитывать, что при отмене ключа w
отменяется также автоматическая запись данного файла при
выходе из редактора.

2.7. Что делать при сбое

Редактор red обеспечивает двойную защиту от потери
информации. Во первых, при записи файла старое содержимое
сохраняется под именем старое_имя.b. Во вторых, редактор при
работе ведет протокол работы в файле /tmp/rettnn.name, где
nn - два последних символа имени терминала, а name - иденти-
фикатор пользователя. Если произойдет сбой машины либо
редактора, можно повторить сеанс командой:

red -


Произойдет повторение всего сеанса работы, за исключением
одного - двух последних введенных с терминала символов,
после чего управление передастся на клавиатуру и вы сможете
продолжить редактирование. В случае, если сбой произошел в
момент записи файла или в процессе редактирования использо-
вался команда <SAVE> без параметров, перед повторением
сеанса необходимо восстановить исходное состояние редактиру-
емых файлов, скопировав их при необходимости из файлов с
суффиксом .b.





- 12 -



13


3. КОМАНДЫ РЕДАКТОРА red

Команды red идентифицируются командными последователь-
ностями и могут быть введены как с параметрами, так и без
параметров:

<КОМАНДА>
<ARG>параметры<КОМАНДА>


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

3.1. Ввод параметров <ARG>

В случае команды с параметрами сначала вводится команда
<ARG>, затем параметры и затем соответствующая команда.
Так, например, для подвода к 100 строке необходимо:

1) ввести команду <ARG> (например, нажав клавишу `1');

2) набрать параметр (в данном случае число 100);

3) ввести команду <GOTO> (например, нажав `4').

Сокращенно это записывается так:

<ARG>100<GOTO>


Параметры бывают трех типов:

1) Произвольный текст (например, имя файла или строка для
поиска);

2) Числовой (например, номер строки);

3) Указатель части файла. Этот параметр встречается в
командах, которые запоминают, раздвигают или уничтожают
текст. Для указания участка на экране необходимо:

- подвести курсор на начало указываемого участка;

- ввести команду <ARG>;

- клавишами со стрелками подвести курсор к концу
области. При этом выдается сообщение:

* * * указание курсором * * *


- ввести команду (например, <PICK>).



- 13 -



14


Для движения курсора можно использовать клавиши со
стрелками, <RETURN>, <TAB>, <BACK-TAB>. Область, указан-
ная курсором, зависит от начального и конечного положе-
ний курсора:

- Если начальная колонка совпадает с конечной, то
команда действует на строки между начальной и
конечной строками включительно;

- Если начальная строка совпадает с конечной, то
команда действует на участок этой строки.

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

Если нужно указать участок файла, который не умещается на
экране, то его начало (или конец) запоминают в какой-либо
переменной (устанавливают курсор и вводят
<ARG>>имя<RETURN>), подводят курсор к концу (или к началу
соответственно) указываемого участка и вводят команда:
<ARG>$имя<RETURN> Результат равносилен указанию курсором
участка файла от точки, запомненной в переменной "имя" до
текущего положения курсора. В командах <OPEN>, <CLOSE>,
<PICK> можно сразу вводить соответствующую команду без
<RETURN>.

При вводе параметров выдается приглашение "arg:", для
отмены неверно набранных символов служит <DEL> (<ЗБ>).

3.2. Восстановление экрана

При случайном нарушении изображения на экране терминала
его можно восстановить, нажав:

CTRL/L
или
<ARG>r<RETURN>


3.3. Движение курсора внутри окна

3.3.1. Клавиши со стрелкамми

При нажатии на соответствующую клавишу курсор перемеща-
ется на одну позицию:

<стрелка вверх> - вверх;

<стрелка вниз> - вниз;

<стрелка вправо> - вправо;



- 14 -



15



________________________________________________________

Пример указания области

..................................
. окно .
. нач.положение .
. 1*************** .
. **область******* .
. **действия****** .
. ****************2 .
. кон. .
. положение .
..................................

..................................
. окно .
. нач.положение .
.*****1**************************.
.*******область****на всю********.
.*******действия****ширину*******.
.*****2**************************.
. кон. .
. положение .
..................................

..................................
. окно .
. нач.положение .
. 1***************2 .
. кон. .
. положение .
..................................

(символ 1 входит в область, 2 - нет)
Рис. 3
________________________________________________________


<стрелка влево> - влево.

На границе "окна" происходит автоматический сдвиг окна по
файлу, если только не установлен ключ "f".

3.3.2. Команды <HOME> и <RETURN>

<HOME>
- курсор переходит в левый верхний угол окна видения;

<RETURN>
- курсор переходит на начало следующей строки. Если
строка была последней, "окно" перемещается вниз по


- 15 -



16


файлу. Если оно начиналось не с 1 колонки файла, оно
сдвинется на первую колонку;

<ARG>команда<RETURN>
- ввод директивы редактора ;

3.3.3. Табуляция (<tab>, <b-tab>, <set-tab>)

<TAB>
- Табуляция. Курсор перемещается на очередную позицию
табуляции. По умолчанию это - 9, 13, 25, 33, 31, 49,
57, 65 и 73 колонки;

<B-TAB>
- табуляция назад. Полностью аналогично <TAB>, но кур-
сор движется назад. По умолчанию - клавиша `.';

<SET-TAB>
- устанавливает новую позицию табуляции в текущей
колонке. По умолчанию вводится нажатием на 2 клавиши
- `2'`5';

<ARG><SET-TAB>
- снимает позицию табуляции в текущей колонке;

3.4. Редактирование внутри строки

3.4.1. Ввод текста. Режим вставки (<INSERT>)

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

Для вставки символов служит режим вставки "INSERT". В
этом режиме при наборе символов строка раздвигается. Для
включения и выключения режима служит команда:

<INSERT>
- включить/выключить режим вставки. По умолчанию это -
клавиша `5';

3.4.2. Уничтожение символов (<DEL-CH> и <BACKSPACE>)

Для уничтожения символов внутри строки служат две
команды:

<DEL-CH>
- уничтожается текущий символ, правая часть строки
сдвигается влево на 1 позицию. По умолчанию - клавиша