使用 ed 增强 Linux 终端文本编辑器

这个看似简单的编辑器提供了一组易于学习和使用的控制命令,赋予用户强大的能力。
56 位读者喜欢这篇文章。

GNU ed 命令是一个行编辑器。它被认为是标准的 Unix 文本编辑器,因为它是 Unix 的第一个文本编辑器,因此在任何 POSIX 系统上都可用(并且通常仍然可用)。在某些方面,很容易看出它是第一个,因为在许多方面,它非常简陋。与大多数其他文本编辑器不同,它不会在自己的窗口或屏幕中打开,事实上,默认情况下,它甚至不会提示用户输入。另一方面,它几乎没有任何界面也可以成为一种优势。它是一个功能性编辑器,可以通过交互方式或通过脚本使用简短的指令进行控制。

安装 ed

如果您运行的是 Linux 或 BSD,您可能已经安装了 ed(Linux 上的 GNU ed 和 BSD 上的 BSD ed)。但是,某些最小环境会省略 ed,但它可能可以从您的发行版的软件仓库或端口树中获得。 MacOS 预装了 BSD ed

启动 ed

当您启动 ed 时,您似乎丢失了提示符,并且可能 ed 已停止。 它没有;它只是在等待您的指示

$ ed

缓冲区

ed 处于活动状态时,您使用所谓的缓冲区。 缓冲区是内存中的一个位置。 您不是直接编辑文件; 您只是在编辑缓冲区。 如果您在没有将更改写入磁盘上的文件的情况下退出 ed,则所有更改都将丢失,因为它们仅发生在缓冲区中。 (对于习惯于初始暂存缓冲区的经验丰富的 Emacs 用户来说,这听起来可能很熟悉。)

使用 ed 写入文本

启动 ed 后,您处于命令模式。 这意味着您可以向编辑器发出命令。 您可以使用 a 命令将文本附加到当前缓冲区,该命令以自己一行上的单个点 (.) 终止。 例如,此示例将两行(“hello world”和“hello ed”)添加到缓冲区

a
hello world
hello ed
.

在终止点之后,您返回到命令模式。

查看缓冲区

要查看缓冲区中包含的内容,您可以键入要查看的行或 ,p 以显示所有行。

1
hello world
2
hello ed
,p
hello world
hello ed

写入文件

假设您对文本感到满意,则可以使用 w 命令,后跟目标文件的名称,将缓冲区写入文件。

w example.txt
19

写入操作后的数字表示写入文件的字符数。

读取文件

您不必使用 ed 进行文本输入。 您还可以使用 r 命令将现有文件打开到缓冲区中

r myfile.txt

或者,您可以直接启动 ed,后跟要加载到缓冲区中的文件名

$ ed myfile.txt

编辑缓冲区

ed 应用程序是一个文本编辑器,因此您可以使用特殊的编辑语法影响缓冲区中的文本。 sedvim 的用户可能会发现它的某些语法很熟悉。 假设您在缓冲区中加载了一个文件

$ ed myfile.txt
,p
This is an example document.
There is some text, but not much.
There is some errors, but not much.

要将第一个句子中的单词“document”更改为“file”,请选择要定位的行 (1),然后使用 s 调用搜索功能,后跟您的搜索和替换词

1
This is an example document.
s/document/file/
1
This is an example file.

要定位不同的行,该过程本质上相同,但数字不同

3
There is some errors, but not much.
s/is/are/
s/much/many/

您可以像往常一样使用 ,p 命令查看对缓冲区所做的编辑。

This is an example file.
There is some text, but not much.
There are some errors, but not many.

当然,这些更改仅存在于缓冲区中。 如果您在 ed 之外查看该文件,您只会看到原始文本

$ cat myfile.txt
This is an example document.
There is some text, but not much.
There is some errors, but not much.

要将更改保存回文件,请使用 w 命令

w myfile.txt
258

清除缓冲区

要获取一个新缓冲区,以便您可以启动一个新文档或将一个新文档加载到一个新的环境中,请使用 c 命令。 在发出 c 以清除缓冲区后,打印命令不返回任何内容,因为缓冲区已被清空

c
,p

退出

 

要退出您的 ed 会话,请使用 q 命令。 这不会让您有机会保存缓冲区,因此请确保在使用此命令之前保存。

 

尝试 ed

ed 可以做更多的事情,学习 ed 可以让您更深入地了解 sedvim 的部分工作原理。 诚然,我并没有费心在 ed 中尝试撰写这篇文章,并且我不确定它是否是通常情况下文本输入的最佳工具。 但是,ed 是一种出色的文本编辑器,您可以通过阅读其文档轻松学习它。 在 GNU 系统上,使用 info ed 查看手册。

接下来阅读什么
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。 他曾在电影和计算行业工作,通常同时工作。

1 条评论

作为一个有趣的补充,脚本经常使用的搜索/替换命令“sed”基于“ed”。 该名称实际上代表“流编辑器”,旨在让您将 ed 的命令应用于从一个命令通过管道流向另一个命令的数据流。

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.