在 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 时所说的那样,顶层解析输入并调用中间层,一个名为
但除了它的技术优点外,我发现当我想以“老派”的方式编辑文本时,Edlin 用起来真是一种享受。edlib
的库,该库调用字符串和数组处理代码来完成繁重的工作。
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 实际上是不区分大小写的,因此您可以以大写或小写字母键入命令和文件。键入 edlin
或 EDLIN
或 Edlin
都将运行 Edlin 编辑器。同样,您可以将源文件标识为 hello.c
或 HELLO.C
或 Hello.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][? ]s text |
搜索文本 |
[num][, num][? ]r text, text |
替换文本 |
[num][, num]d |
删除行 |
[num]t filename |
传输(在标记处插入新文件的内容) |
[num]w [filename] |
将文件写入磁盘 |
q |
退出 Edlin |
e [filename] |
结束(写入并退出) |
程序员会有兴趣知道他们可以使用以下特殊代码在 Edlin 中输入特殊字符
\a |
警报 |
\b |
退格 |
\e |
转义 |
\f |
换页 |
\t |
水平制表符 |
\v |
垂直制表符 |
\" |
双引号 |
\' |
单引号 |
\. |
句点 |
\\ |
反斜杠 |
\x XX |
十六进制数 |
\d NNN |
十进制数 |
\ OOO |
八进制数 |
\^ C |
控制字符 |
评论已关闭。