Я использую текстовый редактор 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 <имя файла>. Например, для редактирования файла 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). Когда закончите добавлять новый текст, введите точку (.) в отдельной строке.
Чтобы просмотреть введённый вами текст, используйте команду list, введя l в приглашении *. Edlin будет отображать строки по одному экрану за раз, предполагая, что на дисплее будет 23-25 строк. Но для такой короткой программы, как Hello world исходный код тем более поместится на одном экране:
Вы заметили знак «*» в строке 7, перед закрывающей фигурной скобкой? Это специальная отметка, указывающая текущую позицию для вставки следующего текста. Если вы вставите новый текст в файл, Edlin добавит его на место строки 7, сместив её ниже.
Давайте обновим исходный код так, чтобы функция main() возвращала результат. Для этого нам нужно добавить строку «return 0;», начиная с текущей позиции. Мы вновь используем команду i. Не забудьте ввести точку на отдельной строке, чтобы прекратить ввод нового текста.
После повторного чтения содержимого файла вы увидите, что вставили новый текст в правильное место, а закрывающая фигурная скобка переместилась на строку 8.
Но что, если вам нужно отредактировать отдельную строку с номером N? И тут проблем не будет: в командной строке после * просто введите номер строки, которую хотите отредактировать. Далее вам нужно будет повторно ввести всю строку с внесёнными изменениями.
К примеру, давайте обновим сигнатуру функции main(). Она находится на 4-й строке, поэтому после * введите 4 и затем полностью введите изменённую строку.
После повторного чтения содержимого файла отображается обновлённая строка 4.
Когда вы внесёте все необходимые изменения, не забудьте сохранить файл. Для этого после * просто введите w. Чтобы выйти из Edlin, введите q.
Выше описаны основные команды для редактирования файлов. Но Edlin делает больше, чем просто «вставляет, редактирует и сохраняет». Вот удобная шпаргалка, расширенные возможности Edlin. В этой таблице text обозначает обычную текстовую строку, filename — имя файла вместе с путём, а num — число.
Бонус
В Edlin можно вводить специальные символы, используя соответствующие коды:
Выделенный сервер VDS с быстрыми NVMе-дисками и посуточной оплатой у хостинга Маклауд.
Когда-то стандартным текстовым редактором в 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е-дисками и посуточной оплатой у хостинга Маклауд.
VitalKoshalew
Не был он никаким «легендарным». Никто его не использовал, даже не знал о нём особо никто. Это просто лишний файл на загрузочной дискете, который первым делом удалялся, чтобы сэкономить место. Роль встроенного базового редактора выполняла команда "COPY CON filename", а для всего остального был Norton Commander и его клоны.
czz
Edlin появился на несколько лет раньше NC.
Bellerogrim
Да, но это не отменяет сущности edlin — боли и унижения.