Производственно-внедренческий кооператив
"И Н Т Е Р Ф Е Й С"
Диалоговая Единая Мобильная
Операционная Система
Демос/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 позицию. По умолчанию - клавиша
`6';
- 16 -
17
<B-SPACE>
- отменяет предыдущий символ; в режиме вставки строка
уплотняется. Действует и при вводе параметров. По
умолчанию - клавиши `DEL' или `BackSpace'.
3.4.3. Ввод нетекстовых символов (<ESCAPE>)
Нетекстовыми (неграфическими) являются символы с кодами
0-037, 0177-0277,, 0377. Для их ввода в файл служит специ-
альный "ESCAPE"-символ, который преобразует следующий за ним
символ в нетекстовый.
Для ввода символа с кодом 0-037 необходимо:
- ввести команду <ESCAPE> (по умолчанию CTRL/A);
- ввести соответствующий "CTRL"-символ либо пропис-
ную латинскую букву, либо восьмеричный код сим-
вола и затем CTRL/L.
На экране появится пара символов: светлый квадратик (либо
символ его заменяющий) и текстовый символ. При записи в файл
эта пара заменится на один символ с кодом <символ>&037, где
"&"- "поразрядное логическое умножение", то есть букве "A"
соответствует код 01 и так далее.
Для ввода символов с кодами 0200-0277 и 0377:
- введите <ESCAPE> (CTRL/A);
- введите трехзначный код символа.
Символ <Забой> (0177) вводится как <ESCAPE>#.
3.5. Перемещение по файлу
3.5.1. Запоминание места в файле
<ARG>>имя<RETURN>
Текущее положение курсора запоминается в переменной
"имя". Затем эта переменная может быть использована в
командах <OPEN>, <CLOSE>, <PICK>, <GOTO>.
3.5.2. Подвод к строке (<GOTO>)
В редакторе строки текста считаются пронумерованными под-
ряд, начиная с 1. Для подвода к нужной строке служит
команда <GOTO> (по умолчанию клавиша `4').
<GOTO>
- подвод к началу файла;
- 17 -
18
<ARG><GOTO>
- подвод к концу файла;
<ARG>N<GOTO>
- подвод к строке номер "N" (N - целое число);
<ARG>$имя<GOTO>
- подвод к месту в файле, запомненному под именем "имя"
("имя" - одна латинская буква);
Номер текущей строки выдается на нижней строке экрана.
3.5.3. Листование файла (<+PAGE>, <-PAGE>, <+LINE>, <-
LINE>)
Страницей считается часть файла, умещающаяся в текущем
окне на экране.
<+PAGE>
- перемещает окно на 1 страницу вниз по файлу; по
умолчанию клавиша `7';
<-PAGE>
- перемещает окно на 1 страницу вверх; по умолчанию
клавиши `2'`7';
<ARG>N<-PAGE>
перемещает окно вниз (вверх) на N страниц.
Для перемещения окна с точностью до строки служат команды
<+/-LINE>; (CTRL/T/CTRL/W):
<ARG>N<+LINE>
- вперед на N строк;
<ARG>N<-LINE>
- назад на N строк;
<+LINE>
- вперед на 1 строку, если терминал поддерживает аппа-
ратный сдвиг текста на экране, или на 8 строк в про-
тивном случае;
<-LINE>
- назад на 1 строку (8, если нет аппаратного сдвига) ;
<ARG><+LINE>
- Сдвинуть "окно" вниз так, чтобы текущая строка стала
первой на экране;
<ARG><+LINE>
- Сдвинуть "окно" вверх так, чтобы текущая строка стала
последней на экране;
- 18 -
19
3.5.4. Сдвиг окна вправо/влево (<RIGHT> и <LEFT>)
<RIGHT>
- сдвинуть "окно" вправо на 30 колонок; по умолчанию
`2'<стрелка вправо>.
<LEFT>
сдвинуть "окно" влево на 30 колонок; по умолчанию
`2'<стрелка влево>.
<ARG>N<RIGHT>
- сдвинуть "окно" вправо на N колонок;
<ARG>N<LEFT>
- сдвинуть "окно" влево на N колонок;
Команда <RIGHT> выполняется автоматически, если при
наборе текста курсор достиг правую границу экрана. По
команде <RETURN> окно автоматически устанавливается на 1-ю
колонку файла.
3.5.5. Перемещение с помощью стрелок
Окно можно двигать по файлу с помощью клавиш со стрел-
ками: если не установлен ключ f (по умолчанию) и курсор
"упирается" в границу окна, при очередном нажатии на клавишу
движения курсора окно сдвинется в нужную сторону.
3.6. Контекстный поиск (<+SEARCH>, <-SEARCH>)
Команды <+/-SEARCH> (по умолчанию `3' и `2'`3') вызывают
поиск заданного образа в файле соответственно вперед или
назад от текущего места. Для указания текста, который нужно
найти, служат команды:
<ARG>текст<+SEARCH>
<ARG>текст<-SEARCH>
производится поиск указанного текста в файле вперед
(назад) от текущего положения в файле. Если текст най-
ден, это место в файле высвечивается на экране и курсор
устанавливается на начало найденного текста, иначе
выдается предупредительное сообщение:
"search key not found"
"Текст не найден"
Для продолжения поиска данного образа достаточно ввести
одну из команд:
<+SEARCH> или <-SEARCH>
- 19 -
20
3.7. Чтение и запись файлов (<USE>, <SAVE>)
Команда <USE> (CTRL/D, или `-') служит для переключения
редактора с файла на файл. Для перехода к редактированию
нового файла служит команда:
<ARG>имя<USE>
начать редактировать файл имя.
При этом возможны следующие случаи:
1) Файл существует, доступен и не входит в число фай-
лов, которые уже редактировались в данном сеансе
работы. В этом случае редактор подключает его и
высвечивает в текущем "окне", а ранее редактировав-
шийся файл становится "альтернативным";
2) Файл уже редактировался в данном сеансе работы
(хотя, возможно, и не показывается ни в одном окне
на экране терминала). В этом случае файл отобража-
ется на экране со всеми уже внесенными изменениями.
Отметим, что редактор не читает файл из архива
заново. Текущий файл становится "альтернативным";
3) Файл не существует. Редактор просит подтвердить
необходимость создания нового файла:
"Create (y/n)?"
("Создать(y/n)?")
в случае положительного ответа создается новый
файл.
Команда <USE> без параметров переключает редактор на аль-
тернативный файл. В частности, в начале сеанса он может
использоваться для получения справочной информации из файла
/usr/lib/re.std
<SAVE>
- запись текущего файла в архив (`2'`-' или CTRL/V по
умолчанию). При этом исходный вариант файла переиме-
новывается в "старое имя.b". После выполнения <SAVE>
без параметров для повторения сеанса в случае сбоя
необходимо восстановить исходное состояние файла из
файла имя.b, поскольку изменилось исходное состояние
редактируемых файлов.
<ARG>имя<SAVE>
Происходит запись текущего файла в файл "имя".
Команда <SAVE> автоматически выполняется для всех изме-
ненных в процессе работы файлов при выходе из редактора по
- 20 -
21
команде <EXIT>.
3.7.1. Запрет и разрешение записи в файл
<ARG>+w<RETURN>
- запретить изменение текущего файла;
<ARG>-w<RETURN>
- разрешить изменение (и запись, если она разрешена)
редактируемого файла.
3.8. Перенос, уничтожение и вставка текста
3.8.1. Команды <OPEN> и <CLOSE>
Команда <OPEN> (раздвинуть) позволяет вставить пробелы
между колонками, строками или в середину группы строк.
<OPEN>
- перед текущей строкой вставляется пустая строка; по
умолчанию `8' или PF2.
<ARG>n<OPEN>
- перед текущей строкой вставляется "n" пустых строк
(где "n"-целое положительное число);
<ARG><OPEN>
- текущая строка делится на две части, начиная с теку-
щей колонки;
<ARG>указание_курсором<OPEN>
<ARG>$имя<OPEN>
- в отмеченное курсором (или курсором и точкой, запом-
ненной в "имя") место вставляются пробелы (или пустые
строки, если отмечена группа строк целиком). Правила
указания части файла с помощью курсора подробно при-
ведены в описании команды <ARG>.
Команда <CLOSE> действует противоположно команде <OPEN>,
убирая из файла соответствующую часть текста:
<CLOSE>
- уничтожить текущую строку; по умолчанию `2'`8' или
PF3.
<ARG>n<CLOSE>
- уничтожить "n" строк, начиная с текущей;
<ARG><CLOSE>
- склеить текущую строку со следующей, причем следующая
строка приклеивается начиная с текущей колонки;
- 21 -
22
<ARG>указание_курсором<CLOSE>
<ARG>$имя<CLOSE>
- уничтожается указанный кусок текста либо группа строк
целиком. Правила указания с помощью курсора приве-
дены в разделе <ARG>.
Текст, удаленный с помощью команды <CLOSE>, попадает в
конец псевдо-файла "#" и может быть вставлен обратно (либо в
другое место) с помощью команды:
<ARG><PUT>
- текст, убранный последней командой <CLOSE>, вставля-
ется в текущее место файла.
Псевдо-файл "#" можно просмотреть, введя команду:
<ARG>#<USE>
Для возврата в прежний файл служит команда <USE>.
<ARG>>имя<CLOSE>
- текст, убранный последней командой <CLOSE>, запомина-
ется в переменной "имя".
3.8.2. Копирование текста (<PICK>, <PUT>)
Для копирования текста используются две команды. Команда
<PICK> (выбрать) позволяет записать в буфер вставок кусок
текста, который затем может быть вставлен в произвольное
место по команде <PUT>. Выбранный текст попадает в конец
псевдо-файла "#" и может быть просмотрен (<ARG>#<USE>) или
выбран заново:
<PICK>
- выбрать для вставки текущую строку; по умолчанию вво-
дится клавишей `9'.
<ARG>n<PICK>
- выбрать n строк, начиная с текущей;
<ARG>указание_курсором<PICK>
<ARG>$имя<PICK>
- выбрать указанный курсором участок файла (смотри опи-
сание <ARG>).
Выбранный текст заносится в так называемый "PICK"-буфер
(буфер вставки);
<ARG>>имя<PICK>
- запомнить выбранный последней командой <PICK> текст в
переменной "имя".
- 22 -
23
Для вставки текста в файл используются команды:
<PUT>
- (по умолчанию `2'`9'): выбранный ранее текст вставля-
ется в текущее место файла. При этом, если была выб-
рана группа строк целиком, происходит вставка строк,
иначе текст вставляется в середину имеющихся строк
(которые для этого раздвигаются);
<ARG><PUT>
- работает аналогично <PUT>, но вместо "PICK"-буфера
используется "CLOSE"-буфер, в котором запоминается
текст, исключенный из файла последней командой
<CLOSE>;
<ARG>$имя<PUT>
- текст из переменной "имя" ("имя" - одна буква) встав-
ляется в файл и становится текущим буфером вставки.
3.9. Работа с окнами (<M-PORT> и <CH-PORT>)
На экране терминала можно создавать новые "окна" и унич-
тожать старые. Для этого служит команда <M-PORT> (создать
"окно", клавиши `2'`4'). Новое "окно" создается в уже имею-
щемся путем деления его на две части. Если курсор находится
в первой строке "окна", то оно делится по вертикали. Если
курсор стоит в первой колонке окна, то деление происходит по
горизонтали. В остальных случаях выдается сообщение об
ошибке. Примеры приведены на рисунках 4 и 5.
____________________________________________________________
Деление по горизонтали
До команды После команды
------------------ ------------------
! ! ! старое !
! ! ! окно !
!*-курсор ! !----------------!
! старое ! ! новое !
! окно ! ! окно !
! ! ! !
! ! ! !
------------------ ------------------
Рис. 4
____________________________________________________________
- 23 -
24
____________________________________________________________
Деление по вертикали
До команды После команды
------------------ -------------------
! *-курсор ! ! !! !
! ! ! старое !! новое !
! ! ! !! !
! старое ! ! окно !! окно !
! окно ! ! !! !
! ! ! !! !
! ! ! !! !
------------------ -------------------
Рис 5.
____________________________________________________________
Максимальное число окон на экране равно 10.
Для создания и уничтожения окон используются следующие
команды:
<M-PORT>
- создается новое окно, и в нем высвечивается файл
/usr/lib/re.std;
<ARG>имя<M-PORT>
- Создается новое окно, и в нем высвечивается файл
"имя". В том, что касается нового файла, команда
полностью аналогична команде <USE>;
<ARG><M-PORT>
- уничтожить окно, созданное последним.
Если один файл изображен сразу в нескольких окнах, изме-
нения в нем будут высвечиваться одновременно во всех окнах.
Для перехода из окна в окно служит команда:
<CH-PORT>
(по умолчанию `0')
Нескольких окон целесообразно использовать при сравнении
файлов, частичном копировании одного файла в другой, при
работе с файлами диагностик об ошибках и в ряде других слу-
чаев.
- 24 -
25
3.10. Использование макрокоманд
Последовательность команд редактора вместе с любым текс-
том, если их приходится часто повторять, может быть присво-
ена "переменной" редактора red. Для записи макроопределения
служит команда:
<ARG>d имя<RETURN>
(имя - одна буква). Редактор выдаст приглашение на ввод:
Mac:
Введенный в ответ текст и команды редактора запишутся в
переменную имя. Редактор отображает команды на экране в
виде пары символов, их кодировка приведена в приложении 2.
Признаком конца ввода является команда <EXIT> (клавиши
<LineFeed><Del>), для отмены ошибочных символов или команд
используется команда <B-SPACE> (клавиша <Del> или <Back-
Space>).
Для выполнения макрокоманды достаточно ввести:
<LineFeed>$имя
то есть последовательно нажать клавиши <LineFeed> (или
<ПС>), "$" и малую латинскую букву, которой именуется пере-
менная. Редактор подставляет содержимое переменной вместо
ввода с терминала. Выполнение макро прерывается, если при
выполнении записанной в макро операции поиска не найден
искомый текст. При необходимости можно переопределить
какую-либо функциональную клавишу терминала как вызов опре-
деленной макрокоманды.
3.11. Переопределение клавиатуры
В редакторе имеется возможность изменить действие функци-
ональных и управляющих клавиш терминала. При этом клавиша
может обозначать как любую команду редактора, так и выполне-
ние макрокоманды. Для этого служит команда:
<ARG>k<RETURN>
Редактор запрашивает:
Enter <new key>:
- 25 -
26
Нажмите переопределяемую клавишу и затем клавишу <Del>
(<Забой>).
Редактор запрашивает:
Enter <command> or <macro name>:
Введите команду, имя макропеременной (малую латинскую
букву) или признак макропеременной "$". Если введена команды
редактора, то при нажатии переопределяемой клавиши будет
вводиться эта команда. Если введено имя переменной, значе-
нием которой должна быть макрокоманда, то клавиша будет
вызывать эту макрокоманду. Если был введен символ "$", то
клавиша станет признаком макропеременной вместо комбинации
<Line Feed>$ (<Перевод Строки>$).
3.12. Выполнение команд-фильтров (команда <EXEC>)
Такие полезные операции над текстами, как сортировка,
выравнивание параграфов текста, структуризация текстов прог-
рамм на "Си" и другие, выполняются командами операционной
системы ДЕМОС. Редактор red позволяет использовать такие
команды для переработки части файла с помощью команды
<EXEC>. Например, для контекстной замены int на short в оче-
редных 10 строках файла служит команда:
<ARG>10l rpl "int" "short"<EXEC>
После этого в очередных 10 строках произойдет замена текста
int на short, которую выполнит команда ДЕМОС "rpl", на-
писанная специально для red. Можно вызывать любые команды,
которые могут использоваться как фильтр. Например:
cb - улучшение читаемости программы на Си,
sort - сортировка
Команда <EXEC> может выполняться в одном из следующих форма-
тов:
<ARG><ч.п> <команда> <с.п.><EXEC>
либо
<ARG>-<ч.c.><команда> <с.п.><EXEC>
либо
<ARG><ч.с.>l <команда> <с.п.><EXEC>
где <ч.п.> - число параграфов,
<ч.с.> - число строк,
<с.п.> - список параметров.
- 26 -
27
Причем <число строк> или <список параметров> могут отсутст-
вовать.
Первый (необязательный) аргумент формата определяет число
строк либо параграфов за текущей строкой в файле, которые
будут обрабатываться командой. Параграфы - это группы непус-
тых строк, разделенные одной или несколькими пустыми стро-
ками. Целое неотрицательное число указывает число парагра-
фов. если число отрицательно или за ним следует буква l -
оно указывает число строк. Если первый аргумент опущен, то
имеется в виду 1 параграф текста. Таким образом, -15 или 15l
задают 15 строк текста, а 2 - 2 параграфа.
Второй аргумент - имя команды операционной системы, за
которым могут идти ее аргументы, разделенные пробелами. Для
включения пробелов в аргумент можно использовать кавычки ".
Действие <EXEC> состоит в том, что вызывается указанная
команда операционной системы с указанными параметрами. На
стандартный ввод ей подаются заданные строки. Если команда
выполнилась нормально, то указанные строки в файле заменя-
ются на стандартный вывод команды. Старые строки помещаются
в CLOSE-буфер.
3.12.1. Контекстная замена (rpl)
Программа rpl вызывается командой <EXEC> и требует два
аргумента. Она заменяет в указанных строках все вхождения
первого аргумента на второй аргумент. Если какой-либо аргу-
мент содержит пробелы, он должен быть взят в кавычки. rpl
распознает регулярные выражения в первом аргументе по тем же
правилам, что и редактор ed в контексте поиска, с тем отли-
чием, что вместо символа . используется @ для обозначения
одного произвольного символа.
Например, команда:
<ARG>100l rpl "^ *" " "<EXEC>
исключит все группы пробелов в начале следующих 100 строк.
для обозначения самих символов $, &, @, ^, * перед ними
необходимо ставить \ (обратную черту).
3.12.2. Примеры использования команды <EXEC>
С помощью команды <EXEC> можно вставить в любое место
файла группу файлов, набрав:
<ARG>0 cat <список файлов><EXEC>
- 27 -
28
Если при вводе программ на языке Си в отдельных функциях
не оставлять пустых строк, а сами функции разделять пустыми
строками, то можно улучшить читаемость текста любой функции,
подведя курсор к ее началу и набрав:
<ARG>cb<EXEC>
3.12.3. Выход из редактора (<EXIT>)
Для того, чтобы окончить работу в red, записав все изме-
нения в архив, служит команда:
<EXIT>
По умолчанию это две клавиши: <LineFeed>,<Del>. Если нужно
выйти из редактора, не записывая изменения в архив, необхо-
димо набрать:
<ARG>a<EXIT>
где "a" - строчная латинская буква "a".
Команду <EXIT> можно ввести и так: <ARG>q<RETURN>, для
выхода без записи нужно набрать: <ARG>qa<RETURN>.
3.13. Прерывание выдачи. Аварийный выход из редактора
Операционная система интерпретирует символы CTRL/S,
CTRL/Q (приостановить передачу, продолжить передачу),
CTRL/N, CTRL/O (русский регистр, латинский регистр), а также
символ "прерывание" (interrupt) - CTRL/C. Одиночное нажатие
символа "прерывание" прерывает вывод на экран или операцию
контекстного поиска и переводит редактор в режим ввода пара-
метров. Двойное нажатие символа "прерывание" в случае, если
редактор не успел перейти в режим ввода параметров, приводит
к аварийному завершению работы без записи измененных файлов.
В режиме приема с клавиатуры символ "прерывание" интерпрети-
руется как команда <ARG>. В режиме повторения прерванного
сеанса нажатие символа "прерывание" прерывает повторение и
- 28 -
29
переводит редактор в режим ввода с терминала.
4. ДИАГНОСТИЧЕСКИЕ СООБЩЕНИЯ
Сообщения редактора высвечиваются в нижней строке экрана.
Они делятся на сообщения о режимах работы и сообщения об
ошибках. В зависимости от установленной версии редактора
диагностики выдаются на русском или английском языке. Ниже
будут приводиться оба варианта диагностики.
Сообщения о режимах работы
Ред:<имя>
use:<имя>
- идет чтение файла <имя>;
Зап:<имя>
save:<имя>
- идет запись файла <имя>;
+Поиск:<текст>
-Поиск:<текст>
+search:<текст>
-search:<текст>
- идет поиск текста <текст> вперед или назад;
Выполнение.
executing..
- идет выполнение внешней команды;
Режим вставки
insertmode
- установлен режим вставки;
Указание курсором
cursor defined
- идет указание участка текста для команд <PICK> или
<CLOSE>;
Создать(y/n)? имя
Create (y/n)? имя
- если вы действительно хотите создать новый файл
<имя>, то введите "y";
Строки указаны меткой
lines defined by tag
- предыдущей командой указана часть строк файла (от
курсора до запомненной в переменной метки), которая
будет передана очередной команде как параметр;
Прямоугольник указан меткой
square defined by tag
- предыдущей командой указана часть файла (от курсора
- 29 -
30
до запомненной в переменной метки), которая будет пере-
дана очередной команде как параметр;
Часть строки указана меткой
columns defined by tag
- предыдущей командой указана часть строки (от курсора
до метки, присвоенной переменной), которая будет пере-
дана очередной команде как параметр.
Сообщения об ошибках :
Аргумент должен быть числом
argument must be numeric
- аргумент команды должен быть числовым;
Аргумент должен быть положительным
argument must be positive
- аргумент должен быть положительным;
Буфер вставок пуст
nothing in the pick buffer
- введена команда <PUT>, но ни разу не выполнялась
команда <PICK>;
Close буфер пуст
nothing in the close buffer
- введена команда <ARG><PUT>, но ни разу не выполнялась
команда <CLOSE>;
А что искать?
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
- файл нельзя изменять, так как запись в него
- 30 -
31
запрещена.
Имеется еще несколько редких диагностик, но они, как пра-
вило, самоочевидны.
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
состоит из ряда полей, разделенных символом ":". Если описа-
ние переносится на новую строку, то в конце предыдущей ста-
вится ":\", и новая строка начинается с символа ":".
Все характеристики имеют двухсимвольные коды.
Характеристика может иметь одну из трех форм записи:
:<имя>:
- характеристика описывает наличие или отсутствие
какой-либо возможности (логический тип);
- 31 -
32
:<имя>#<число>:
- это численная характеристика (например, размер
экрана);
:<имя>=<задержка><строка>:
- значением является строка символов, причем <задержка>
может отсутствовать.
В последнем случае за "=" следует необязательное число,
которое указывает длительность задержки при выполнении
команды в миллисекундах. затем следует строка символов в
закодированной форме. Элементы строки могут представляются в
одной из четырех форм:
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. Основные характеристики терминалов
--------------------------------------------
| n имя тип обя- только значение |
| хар зат. для red характеристики |
|------------------------------------------|
| 1 co чис + - число колонок в строке |
| li чис + - число строк на экране |
|------------------------------------------|
- 32 -
33
Продолжение таб. 1
--------------------------------------------
| n имя тип обя- только значение |
| хар зат. для red характеристики |
|------------------------------------------|
| 2 am лог - - терминал имеет автома- |
| тический перевод строк |
|------------------------------------------|
| 3 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 стр - - изменение области про- |
| крутки текста* |
|------------------------------------------|
- 33 -
34
Продолжение таб. 1
--------------------------------------------
| n имя тип обя- только значение |
| хар зат. для red характеристики |
|------------------------------------------|
| 6 kd стр + - код клавиши стрелка вниз|
| ku стр + - -- // -- стрелка вверх |
| kl стр + - -- // -- стрелка влево |
| kr стр + - -- // -- стрелка вправо|
| kh стр + - -- // -- "home" |
|------------------------------------------|
| 7 коды клавиш, используе-|
| мых для выполнения |
| команд редактора: |
| kN - - команда <-PAGE> |
| kP - - команда <+PAGE> |
| kB - - команда <B-TAB> |
| kF - - команда <+LINE> |
| kR - - команда <-LINE> |
|------------------------------------------|
| 8 Коды, вырабатываемые |
| функциональными клави- |
| шами PF1 - PF5 |
| Трактуются они так: |
| k1 стр - - команда <ARG> |
| k2 стр - - команда <OPEN> |
| k3 стр - - команда <CLOSE> |
| k4 стр - - команда <INSERT> |
| k5 стр - - команда <DCHAR> |
|------------------------------------------|
| 9 f. стр - + Коды, вырабатываемые |
| f- стр - + дополнительной функцио-|
| f0 стр - + нальной клавиатурой. |
| f1 |
| .. ... . . |
| f9 стр - + |
|------------------------------------------|
|10 tc=<имя> означает, что остальные ха-|
| рактеристики совпадают с|
| характеристиками терминала |
| <имя> |
| <имя>@ отмена характеристики |
| <имя> |
| hR стр - + Имя файла с кратким |
| описанием команд |
| (выдается пользователю)|
|------------------------------------------|
- 34 -
35
Продолжение таб. 1
--------------------------------------------
| n имя тип обя- только значение |
| хар зат. для red характеристики |
|------------------------------------------|
|11 Gs стр - + Включение псевдографи- |
| ческого набора символов|
| Ge стр - + Выключение псевдографи-|
| ки |
| Gt стр - + Набор символов псевдо- |
| графики |
--------------------------------------------
В таблице 1 приведены основные характеристики, используе-
мые редактором red. Полное описание возможных характеристик
имеется в документации по операционной системе.
Характеристики разбиты на 11 групп.
Группа 1.
Описывает размеры экрана терминала;
Группа 2.
Описывает способ управления курсором на экране. Самый
сложный элемент группы - характеристика "cm". Если у
терминала нет возможности прямой адресации курсора на
экране, то для работы red необходимы характеристики,
помеченные символом "*" в графе "обязательный", в про-
тивном случае редактор может обойтись и без них. Харак-
теристика "am" означает, что при достижении конца
строки курсор автоматически переходит на начало следую-
щей строки;
Группа 3.
Описывает инициализацию дисплея и дополнительные его
характеристики. "cu" - это код символа, используемого
редактором для маркировки положения курсора в "окне".
если он не указан, используется символ "@". Рекоменду-
ется указывать "cu=\177", если только терминал умеет
отображать этот код как светлый квадрат;
Группа 4.
Возможности терминала по отображению символов. если
"UC", то терминал должен работать в режиме "lcase"; Эти
характеристики использует система, а не редактор, для
установки флагов терминала.
Группа 5.
Дополнительные редактирующие возможности терминала;
характеристика "cs" аналогична "cm" по работе с
- 35 -
36
параметрами - номерами верхней и нижней строки области
сдвига текста.
Группа 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";
- верхний правый угол;
- стрелка вниз;
- стрелка вверх;
- стрелка влево;
- стрелка вправо;
если в строке задано меньше символов, не заданные
- 36 -
37
символы заменяются на соответствующие им обычные сим-
волы КОИ-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. Обычно при появлении
нового терминала бывает целесообразно для его описания
использовать описание какого-либо другого терминала либо
- 37 -
38
использовать краткое описание с параметром "tc=...". Однако
скорее всего все ваши терминалы уже имеются в /etc/termcap,
что избавит от необходимости разбираться в не очень простых
правилах описания терминалов.
- 38 -
39
ПРИЛОЖЕНИЕ 1. Справочная информация по red
Редактор red предназначен для редактирования и просмотра
файлов в экранном режиме. Он позволяет просматривать на
экране терминала один или несколько файлов, редактировать
файлы с использованием управляющих клавиш терминала и команд
редактора, переносить информацию из файла в файл и проводить
другие операции редактирования.
Редактор вызывается с помощью команды red в одном из сле-
дующих форматов:
red [-ключи] имя_файла [номер_строки]
Начать редактирование файла "имя_файла", установив окно
на строку номер_строки; если номер не указан, высвечи-
вается начало файла.
red [-ключи]
Продолжить редактирование с того состояния, в котором
был завершен предыдущий сеанс работы с данного терми-
нала.
red [-ключи] -
Повторить сеанс редактирования файлов после сбоя сис-
темы или редактора.
red [-ключи] -r файл_протокол
Повторить сеанс редактирования, считав протокол из ука-
занного файла.
Ввод команд осуществляется с помощью функциональных кла-
виш терминала. На большинстве терминалов для этого исполь-
зуется дополнительная цифровая клавиатура, расположенная
справа для основной. Особое значение имеет клавиша `2',
которая изменяет значение следующей клавиши. Если дополни-
тельная цифровая клавиатура отсутствует или не имеет режима
генерации управляющих кодов, используется клавиша <перевод
строки> (<LineFeed>), например вместо `1' вводят
<LineFeed>`1', а вместо `2'`4' - <LineFeed><LineFeed>`4'.
Краткое описание команд
В описании приведены: краткое название команды, полное
название команды, ввод с клавиатуры (через "," перечислены
возможные варианты ввода, запись ^C означает CTRL+C):
<ARG> - ВВОД АРГУМЕНТА: `1', <LineFeed><Пробел>
Начало ввода аргумента. Аргументом может быть строка
символов или указание области на экране терминала
(область определяется начальным и конечным положениями
курсора и представляет собой либо прямоугольник на
экране, если начальная и конечная колонки не совпадают,
либо несколько строк, если начальная и конечная колонки
- 39 -
40
совпадают). Ввод аргумента завершается вводом команды,
к которой этот аргумент относится.
<TAB> - ТАБУЛЯЦИЯ: <TAB>
<B-TAB> - ТАБУЛЯЦИЯ НАЗАД: `.', ^B
передвинуть курсор на следующую (предыдущую) позицию
табуляции.
<GOTO> - ПЕРЕЙТИ НА: `4'
Без аргумента - переход на начало файла. Аргумент -
номер строки; пустой аргумент - конец файла.
<LEFT> - СДВИГ ВЛЕВО: `2'<курсор влево>
<RIGHT> - СДВИГ ВПРАВО: `2'<курсор вправо>
Сдвиг экрана влево/вправо.
<+PAGE> - ЛИСТ ВПЕРЕД: `7', <NextScr>
<-PAGE> - ЛИСТ НАЗАД: `2'`7', <PrevScr>
Возможный аргумент - число страниц, на которые экран
перемещается по текущему файлу.
<+LINE> - СТРОКА ВПЕРЕД: <Forward>, ^T
<-LINE> - СТРОКА НАЗАД: <Backward>, ^W
Аргумент - число строк; пустой аргумент - вывести теку-
щую строку в верхнюю (нижнюю) строку окна (перемещением
окна по файлу). Клавиши <Forward> и <Backward> (над-
писи могут быть и иными) обозначены в описании терми-
нала в системе как "kF" и "kR".
<+SEARCH> - ПОИСК ВПЕРЕД: `3', ^R
<-SEARCH> - ПОИСК НАЗАД: `2'`3', ^E
Аргумент - текст, который нужно найти в файле.
<INSERT> - РЕЖИМ ВСТАВКИ: `5', <PF4>
Включает/выключает режим вставки;
<D-CHAR> - ИСКЛЮЧИТЬ СИМВОЛ: `6', ^U
<TRUNC> - ИСКЛЮЧИТЬ КОНЕЦ СТРОКИ: `1'`6'
<OPEN> - РАЗДВИНУТЬ: `8', <PF2>
Вставить пустую строку; аргумент - число строк либо
область на экране, в которую нужно вставить пробелы.
<CLOSE> - УБРАТЬ: `2'`8', <PF3>
Убрать строки либо область на экране. Убранная инфор-
мация попадает в буфер убранных строк.
<GET> - ВЗЯТЬ: `9', ^F
Запомнить строки либо область на экране.
<PUT> - ПОЛОЖИТЬ: `2'`9', ^G
Взятая ранее информация помещается в текущее место на
- 40 -
41
экране. Команда с пустым аргументом используется,
чтобы вставить информацию из буфера убранных строк.
<SPLIT> - РАЗРЕЗАТЬ СТРОКУ НА ДВЕ
Отрабатывается по команде <OPEN> с пустым аргументом.
(`1'<PF2>).
<JOIN> - СКЛЕИТЬ СТРОКИ
Отрабатывается по команде <CLOSE> с пустым аргументом.
(`1'<PF3>).
<SAVE> - ЗАПИСЬ: `2' `-', ^V
Аргумент - имя файла (если не совпадает со старым).
<USE> - РЕДАКТИРОВАТЬ: `-', ^D
Команда без аргумента переходит к альтернативному файлу
(по умолчанию - файл подсказок).
<M-PORT> - СОЗДАТЬ ОКНО: `2'`4'
Аргумент - имя файла, который будет высвечиваться в
новом окне. Курсор должен быть либо в крайней левой
позиции экрана либо на верхней строке экрана. Команда
с пустым аргументом выполняет отмену последнего заве-
денного окна.
<CH-PORT> - СМЕНИТЬ ОКНО: `0'
сменить текущее окно (если открыто более чем одно
окно).
<EXEC> - ВЫПОЛНИТЬ: `2'`0', ^P
Аргумент: "[число[l] ] команда [аргументы]". "команда"
выполняется как фильтр над текстом в очередных "число"
абзацах (если указана буква l, то строках) файла.
Абзац - группа непустых строк файла, разделенная одной
или несколькими пустыми строками.
<EXIT> - ВЫХОД: <Перевод строки><Забой>
Аргумент "a" блокирует запись измененных файлов.
Команда может также вводиться как <АРГ>q[a]<Возврат
каретки>.
- Запомнить в переменную: <АРГ>>И<Команда>
Где И - имя макропеременной (одна буква), <Команда> -
либо <Возврат каретки> (тогда запоминается текущее
место в файле), либо <GET> (запоминается буфер
вставки), либо <CLOSE> (запоминается буфер убранных
строк). Макро затем можно использовать в командах
<GOTO>, <PUT>, а также в командах, аргументом которых
может быть область на экране (в этом случае вводится
область от текущего положения курсора до запомненной
метки), указав в качестве аргумента "$И".
- 41 -
42
- ВВОД МАКРО: <АРГ>d И<ВК>
Концом ввода служит команда <ВЫХОД>.
- ВЫПОЛНЕНИЕ МАКРО: <ПС>$И
- ПЕРЕОПРЕДЕЛЕНИЕ КЛАВИШИ: <АРГ>k<ВК>
При этом, если в ответ на запрос переопределяемой
команды введено имя макро (одна буква), при нажатии
этой клавиши выполняется данное макро.
<ESCAPE> - ПРИЗНАК НЕТЕКСТОВОГО СИМВОЛА: `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
____________________________________________________________
- 42 -
43
____________________________________________________________
Команды для VDT52100 и VT-340
-------------------- ------------------
| <CLOSE> | <OPEN> | | | <ARG> |
| "d l" | "i l" | |"return"|"erase"|
-------------------- ------------------
|<B-SPACE>|<INSERT>|
| "d c" | "i c" |
--------------------
| <HOME> |
| "h o m e" |
--------------------
Ввод остальных команд:
<+PAGE> - <LF>`8' <+LINE> - ^T
<-PAGE> - <LF><LF>`8' <-LINE> - ^W
<LEFT> - <LF><СтрелкаВлево>
<RIGHT> - <LF><СтрелкаВправо>
<GOTO> - <LF>`4' <+SEARCH> - ^R
<M-PORT> - <LF><LF>`4' <PICK> - ^F
<CH-PORT> - <LF>`0' <PUT> - ^G
<ESCAPE> - ^A <EXEC> - ^P
<CH-TAB> - <LF><LF>`5' <B-TAB> - ^B
<DEL-CH> - ^U <-SEARCH> - ^E
<SAVE> - <LF><LF>`-' <USE> - ^D
Рис. 7
____________________________________________________________
- 43 -
44
____________________________________________________________
Команды для ВТА 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
____________________________________________________________
- 44 -
45
____________________________________________________________
Команды для ВТА 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
____________________________________________________________
- 45 -
46
____________________________________________________________
МЕРА-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 ch-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
- 46 -
47
СОДЕРЖАНИЕ
АННОТАЦИЯ ......................................... 2
1. ВВЕДЕНИЕ .......................................... 3
2. ОБЩЕЕ ОПИСАНИЕ РЕДАКТОРА .......................... 3
2.1. Основные принципы редактирования. ............... 3
2.2. Вызов редактора ................................. 5
2.3. Использование клавиатуры и ввод команд редак-
тора ............................................ 5
2.3.1. Отображение информации ........................ 7
2.3.2. Ввод информации с клавиатуры .................. 8
2.3.3. Ввод команд в редактор red ................... 8
2.4. Окна и редактируемые файлы ...................... 9
2.5. Переменные и макрокоманды ....................... 10
2.6. Изменение режимов работы редактора .............. 11
2.7. Что делать при сбое ............................. 12
3. КОМАНДЫ РЕДАКТОРА red ............................. 13
3.1. Ввод параметров <ARG> ........................... 13
3.2. Восстановление экрана ........................... 14
3.3. Движение курсора внутри окна .................... 14
3.3.1. Клавиши со стрелкамми ......................... 14
3.3.2. Команды <HOME> и <RETURN> ..................... 15
3.3.3. Табуляция (<tab>, <b-tab>, <set-tab>) ......... 16
3.4. Редактирование внутри строки .................... 16
3.4.1. Ввод текста. Режим вставки (<INSERT>) ......... 16
3.4.2. Уничтожение символов (<DEL-CH> и <BACK-
SPACE>) ....................................... 16
3.4.3. Ввод нетекстовых символов (<ESCAPE>) .......... 17
3.5. Перемещение по файлу ............................ 17
3.5.1. Запоминание места в файле ..................... 17
3.5.2. Подвод к строке (<GOTO>) ...................... 17
3.5.3. Листование файла (<+PAGE>, <-PAGE>, <+LINE>,
<-LINE>) ...................................... 18
3.5.4. Сдвиг окна вправо/влево (<RIGHT> и <LEFT>) .... 19
3.5.5. Перемещение с помощью стрелок ................. 19
3.6. Контекстный поиск (<+SEARCH>, <-SEARCH>) ....... 19
3.7. Чтение и запись файлов (<USE>, <SAVE>) .......... 20
3.7.1. Запрет и разрешение записи в файл ............. 21
3.8. Перенос, уничтожение и вставка текста ........... 21
3.8.1. Команды <OPEN> и <CLOSE> ...................... 21
3.8.2. Копирование текста (<PICK>, <PUT>) ............ 22
3.9. Работа с окнами (<M-PORT> и <CH-PORT>) .......... 23
3.10. Использование макрокоманд ....................... 25
3.11. Переопределение клавиатуры ...................... 25
3.12. Выполнение команд-фильтров (команда <EXEC>) ... 26
3.12.1. Контекстная замена (rpl) .................. 27
3.12.2. Примеры использования команды <EXEC> .... 27
3.12.3. Выход из редактора (<EXIT>) .................. 28
- 47 -
48
3.13. Прерывание выдачи. Аварийный выход из редактора
................................................ 28
4. ДИАГНОСТИЧЕСКИЕ СООБЩЕНИЯ ........................ 29
5. ПОСТАНОВКА РЕДАКТОРА red. ПОДКЛЮЧЕНИЕ НОВЫХ ТИПОВ
ТЕРМИНАЛОВ ........................................ 31
5.1. Описание терминала в базе описаний терминалов ... 31
5.2. Адресация курсора. .............................. 37
ПРИЛОЖЕНИЕ 1. Справочная информация по red ........ 39
Краткое описание команд ........................... 39
ПРИЛОЖЕНИЕ 2. Изображение команд редактора при
вводе макроопределения ............................ 46
- 48 -
Популярность: 2, Last-modified: Tue, 30 Jun 1998 04:29:08 GmT