Pull to refresh
0
Маклауд
Облачные серверы на базе AMD EPYC

Привет из восьмидесятых: пишем код в легендарном текстовом редакторе Edlin для DOS

Reading time5 min
Views6.5K
Original author: Jim Hall
Я использую текстовый редактор Edlin, когда мне хочется переместиться в 80-е годы. Согласен, развлечение это своеобразное, но у всех свои причуды. Кто со мной?



Когда-то стандартным текстовым редактором в DOS был Edlin. Его создал Тим Патерсон — для первой версии DOS, которая тогда называлась 86-DOS, а позже получила название PC-DOS и MS-DOS. Патерсон говорил, что хотел со временем заменить этот редактор другим. И только десять лет спустя в MS-DOS 5 (1991) вместо Edlin появился Edit, полноэкранный текстовый редактор.

Здесь я буду использовать версию Edlin для FreeDOS. Это операционная система с открытым исходным кодом. Её можно использовать для игры в классические игры DOS, запуска старого программного обеспечения или разработки встроенных систем. FreeDOS поддерживает совместимость с MS-DOS и включает утилиты и программы, созданные по образу и подобию своих аналогов из MS-DOS. 

Одна из таких программ — это open source реализация легендарного редактора Edlin, которая распространяется под лицензией GNU General Public License v2. Портированием Edlin на FreeDOS занимался Грегори Питч. У него получился GPL-лицензированный клон Edlin, который, ко всему прочему, умеет работать с длинными файлами. Он поставляется вместе с дистрибутивом FreeDOS. Клон Edlin также можно установить в MS-DOS. При желании вы даже можете скомпилировать Edlin для Linux- и Unix-систем. 

В своей книге 23 Years of FreeDOS Грегори писал, что у редактора трёхуровневая архитектура:  верхний уровень анализирует ввод пользователя и вызывает средний уровень, библиотеку edlib, которая, в свою очередь, вызывает код обработки строк и массивов для выполнения всей грязной работы. Но помимо технических достоинств, Edlin гораздо приятнее использовать, чем другие подобные продукты. На мой субъективный взгляд, конечно.

В FreeDOS 1.3 RC4 установлен Edlin 2.18. Это не самая последняя версия. Вы можете загрузить Edlin 2.19 из архива файлов FreeDOS на Ibiblio. Вы найдёте там два файла: edlin-2.19.zip содержит исходный код, а edlin-219exe.zip — это исполняемый файл DOS. Загрузите файл edlin-219exe.zip и распакуйте его в свою систему FreeDOS. Я поместил свой экземпляр редактора в C:\EDLIN.

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

Основы работы с Edlin


Чтобы открыть файл для редактирования, нужно написать команду вида edlin <имя файла>. Например, для редактирования файла hello.c, введём следующую команду:

C:\EDLIN> edlin hello.c

Обратите внимание: здесь я ввёл команду FreeDOS в нижнем регистре. Но вообще FreeDOS нечувствительна к регистру, поэтому можно писать названия команд и имена файлов хоть в в верхнем, хоть в нижнем регистре — работать всё будет одинаково. Можете проверить это: введите edlin, EDLIN и Edlin. Во всех случаях ОС будет запускать редактор Edlin. Точно так же с именем файла: FreeDOS поймёт, какой файл вы имеете в виду, если вы напишете hello.c, HELLO.C или Hello.C.

C:\EDLIN> edlin hello.c

edlin 2.19, copyright © 2003 Gregory Pietsch

This program comes with ABSOLUTELY NO WARRANTY.

It is free software, and you are welcome to redistribute it

under the terms of the GNU General Public License — either

version 2 of the license, or, at your option, any later

version.

hello.c: 0 lines read

*

Когда редактор запустится и отработает введённую команду, он переведёт нас на новую строку. В начале этой строки будет стоять символ «*» (звёздочка). Интерфейс Edlin минималистичен: у него нет «меню» или поддержки мыши. Чтобы начать редактирование, изменить отдельные строки файла, выполнить поиск и замену, сохранить свою работу или выйти из редактора, просто введите соответствующие команды после звёздочки.

В данном случае сообщение hello.c: 0 lines read ожидаемо. Это новый файл, он пустой, нам нужно добавить туда новые строки. Мы сделаем это с помощью команды insert, набрав i. Знак «*» изменится на «:» после этого можно вводить новый текст. Для форматирования текста в процессе набора можно использовать перевод строки (ENTER). Когда закончите добавлять новый текст, введите точку (.) в отдельной строке.

*i

 : #include <stdio.h>

 :

 : int

 : main()

 : {

 :   puts(«Hello world»);

 : }

 : <strong>.</strong>

*


Чтобы просмотреть введённый вами текст, используйте команду list, введя l в приглашении *. Edlin будет отображать строки по одному экрану за раз, предполагая, что на дисплее будет 23-25 строк. Но для такой короткой программы, как Hello world исходный код тем более поместится на одном экране:

*l

1: #include <stdio.h>

2:

3: int

4: main()

5: {

6:   puts(«Hello world»);

7:*}

*

Вы заметили знак «*» в строке 7, перед закрывающей фигурной скобкой? Это специальная отметка, указывающая текущую позицию для вставки следующего текста. Если вы вставите новый текст в файл, Edlin добавит его на место строки 7, сместив её ниже.

Давайте обновим исходный код так, чтобы функция main() возвращала результат. Для этого нам нужно добавить строку «return 0;», начиная с текущей позиции. Мы вновь используем команду i. Не забудьте ввести точку на отдельной строке, чтобы прекратить ввод нового текста.

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

*i

 :   return 0;

 : .

*l

1: #include <stdio.h>

2:

3: int

4: main()

5: {

6:   puts(«Hello world»);

7:   return 0;

8:*}

*

Но что, если вам нужно отредактировать отдельную строку с номером N? И тут проблем не будет: в командной строке после * просто введите номер строки, которую хотите отредактировать. Далее вам нужно будет повторно ввести всю строку с внесёнными изменениями. 

К примеру, давайте обновим сигнатуру функции main(). Она находится на 4-й строке, поэтому после * введите 4 и затем полностью введите изменённую строку.

*4

4:*main()

4: main(void)

*l

1: #include <stdio.h>

2:

3: int

4:*main(void)

5: {

6:   puts(«Hello world»);

7:   return 0;

8: }

*

После повторного чтения содержимого файла отображается обновлённая строка 4.

Когда вы внесёте все необходимые изменения, не забудьте сохранить файл. Для этого после * просто введите w.  Чтобы выйти из Edlin, введите q.

*w

hello.c: 8 lines written

*q

C:\EDLIN>

Больше возможностей Edlin


Выше описаны основные команды для редактирования файлов. Но Edlin делает больше, чем просто «вставляет, редактирует и сохраняет». Вот удобная шпаргалка, расширенные возможности Edlin. В этой таблице text обозначает обычную текстовую строку, filename — имя файла вместе с путём, а num — число. 

? Показать раздел «Помощь»
num Отредактировать строку номер num
a Добавить строку ниже текущей
[num]i Добавить строки выше текущей
[num1][,num2]l Прочитать из файла диапазон строк от номера num1 до num2. Если диапазон не указан, команда выдаст первые 23 строки файла
[num1][,num2]p Прочитать из файла диапазон строк от номера num1 до num2. Если диапазон не указан, команда выдаст все строки файла
[num1],[num2],num,[num3]c Скопировать строки с номерами num1..num2 на позицию строки с номером num. Число num3 определяет количество копий
[num1],[num2],num m Переместить строки с номерами num1..num2 на позицию строки с номером num
[num][,num][?]s text Найти строку text
[num1][,num2][?]r text1,text2 Заменить строку text1 из диапазона от num1 до num2 на строку text2
[num1][,num2]d Удалить строки из диапазона от num1 до num2
[num]t filename Начиная с заданной позиции, вставить содержимое другого файла  
[num]w[filename] Сохранить файл на диск
q Выйти из Edlin
e[filename] Сохранить и выйти


Бонус

В Edlin можно вводить специальные символы, используя соответствующие коды:

\a alert
\b backspace
\e escape
\f formfeed
\t horizontal tab
\v vertical tab
double quote
\' single quote
\. period
\\ backslash
\xXX hexadecimal number
\dNNN decimal number
\OOO octal number
\^C control character




Выделенный сервер VDS с быстрыми NVMе-дисками и посуточной оплатой у хостинга Маклауд.

Tags:
Hubs:
Total votes 25: ↑20 and ↓5+21
Comments15

Articles

Information

Website
macloud.ru
Registered
Founded
Employees
11–30 employees
Location
Россия
Representative
Mikhail