在 FreeDOS 上使用这款怀旧的文本编辑器

当我想以“老派”的方式编辑文本时,Edlin 用起来真是一种享受。
33 位读者喜欢这篇文章。
Old UNIX computer

Opensource.com

在 DOS 的早期,标准编辑器是一个朴素的行编辑器,名为 Edlin。Tim Paterson 为第一个版本的 DOS 编写了最初的 Edlin,当时称为 86-DOS,后来更名为 PC-DOS 和 MS-DOS。Paterson 曾评论说他本打算最终替换 Edlin,但直到十年后,MS-DOS 5 (1991) 才用全屏编辑器 Edit 取代了 Edlin。

您可能知道 FreeDOS 是一个开源的 DOS 兼容操作系统,您可以使用它来玩经典的 DOS 游戏、运行旧的商业软件或开发嵌入式系统。FreeDOS 与 MS-DOS 具有非常好的兼容性,“Base”软件包组包含那些复制 MS-DOS 行为的实用程序和程序。其中一个经典程序是可敬的 Edlin 编辑器的开源实现;Edlin 根据 GNU 通用公共许可证版本 2 分发。

Edlin 由 Gregory Pietsch 编写,是一款设计精良、可移植的编辑器。您甚至可以在 Linux 上编译 Edlin。正如 Gregory 在免费电子书 FreeDOS 23 年 中描述 Edlin 时所说的那样,顶层解析输入并调用中间层,一个名为 edlib 的库,该库调用字符串和数组处理代码来完成繁重的工作。 但除了它的技术优点外,我发现当我想以“老派”的方式编辑文本时,Edlin 用起来真是一种享受。

FreeDOS 1.3 RC4 包含 Edlin 2.18。这实际上是一个过时的版本,但您可以从 FreeDOS 文件存档 Edlin 2.19 下载 Ibiblio。您会在那里找到两个文件——edlin-2.19.zip 包含源代码,而 edlin-219exe.zip 只是 DOS 可执行文件。下载 edlin-219exe.zip 文件,并将其解压到您的 FreeDOS 系统。我已将我的副本解压到 C:\EDLIN 中。

Edlin 需要一点练习才能“上手”,所以让我们编辑一个新文件来展示 Edlin 中的一些常用操作。

演练

通过键入 EDLIN,然后键入要编辑的文件名来开始编辑文件。例如,要编辑名为 HELLO.C 的 C 编程源文件,您可以键入

C:\EDLIN> edlin hello.c

我在这里以全部小写字母键入了 FreeDOS 命令。FreeDOS 实际上是不区分大小写的,因此您可以以大写或小写字母键入命令和文件。键入 edlinEDLINEdlin 都将运行 Edlin 编辑器。同样,您可以将源文件标识为 hello.cHELLO.CHello.C

C:\EDLIN> edlin hello.c
edlin 2.19, copyright (c) 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 后,您将看到友好的 * 提示符。界面非常简洁;这里没有闪亮的“菜单”或鼠标支持。只需在 * 提示符下键入命令即可开始编辑、修改行、搜索和替换、保存您的工作或退出编辑器。

由于这是一个新文件,我们需要添加新行。我们将使用插入命令来执行此操作,方法是在 * 提示符下键入 i。Edlin 提示符更改为 :,您将在其中输入新文本。完成添加新文本后,在单独一行上键入句点 (.)。

*i
 : #include <stdio.h>
 : 
 : int
 : main()
 : {
 :   puts("Hello world");
 : }
 : .
*

要查看您目前输入的文本,请使用列表命令,方法是在 * 提示符下输入 l。Edlin 将一次显示一个屏幕的行,假设显示器上有 25 行。但对于这个简短的“Hello world”程序,源代码可以放在一个屏幕上

*l
1: #include <stdio.h>
2: 
3: int
4: main()
5: {
6:   puts("Hello world");
7:*}
*

您是否注意到第 7 行(文件中的最后一行)上的 *?这是一个特殊标记,指示您在文件中的位置。如果您在文件中插入了新文本,Edlin 会将其添加到此位置。

让我们更新 C 源文件以向操作系统返回代码。为此,我们需要在第 7 行上方添加一行。由于那是 Edlin 标记的位置,我们可以使用 i 在此行之前插入下一个文本。不要忘记在单独一行上输入 . 以停止输入新文本。

通过在之后列出文件内容,您可以看到我们将新文本插入到了正确的位置,即程序中右花括号之前。

*i
 :   return 0;
 : .
*l
1: #include <stdio.h>
2: 
3: int
4: main()
5: {
6:   puts("Hello world");
7:   return 0;
8:*}
*

但是,如果您需要编辑文件中的单行怎么办?在 * 提示符下,只需键入您要编辑的行号。Edlin 一次处理一行,因此您需要重新输入整行。在本例中,让我们更新 main() 函数定义以使用稍微不同的编程语法。它在第 4 行,因此在提示符下键入 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: }
*

当您完成所有需要进行的更改后,不要忘记保存更新后的文件。在提示符下输入 w写入文件回到磁盘,然后使用 q退出 Edlin 并返回 DOS。

*w
hello.c: 8 lines written
*q
C:\EDLIN>

快速参考指南

该演练显示了使用 Edlin 编辑文件的基本知识。但 Edlin 不仅仅是“插入、编辑和保存”。这是一个方便的速查表,显示了所有 Edlin 功能,其中text 指示文本字符串,filename 是文件的路径和名称,num 是数字(使用 . 表示当前行号,$ 表示最后一行号)。

? 显示帮助
num 编辑单行
a 在标记下方追加一行
[num]i 在标记之前插入新行
[num][,num]l 列出文件(从标记上方 11 行开始)
[num][,num]p 分页(与列表相同,但从标记处开始)
[num],[num],num,[num]c 复制行
[num],[num],numm 移动行
[num][,num][?]stext 搜索文本
[num][,num][?]rtext,text 替换文本
[num][,num]d 删除行
[num]tfilename 传输(在标记处插入新文件的内容)
[num]w[filename] 将文件写入磁盘
q 退出 Edlin
e[filename] 结束(写入并退出)

程序员会有兴趣知道他们可以使用以下特殊代码在 Edlin 中输入特殊字符

\a 警报
\b 退格
\e 转义
\f 换页
\t 水平制表符
\v 垂直制表符
\" 双引号
\' 单引号
\. 句点
\\ 反斜杠
\xXX 十六进制数
\dNNN 十进制数
\OOO 八进制数
\^C 控制字符
接下来阅读什么

FreeDOS 入门

它看起来像复古计算,但它是一个现代操作系统,您可以用来完成工作。

为什么 FreeDOS 有 16 种颜色

为什么文本只有这种有限的调色板,为什么 FreeDOS 使用这些颜色和阴影,而不是其他颜色?答案就像技术中的许多事情一样是……

photo of Jim Hall
Jim Hall 是一位开源软件倡导者和开发者,以 GNOME 中的可用性测试以及作为 FreeDOS 的创始人 + 项目协调员而闻名。

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.