...

среда, 30 июня 2021 г.

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

Я использую текстовый редактор 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 — число. 

Бонус

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



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

Adblock test (Why?)

Комментариев нет:

Отправить комментарий