Emacs编辑器:Linux系统下的高效文本编辑指南
简介
Emacs 是最古老且功能最强大的文本编辑器之一。GNU Emacs 版本最初于1984年编写,并以其强大且丰富的编辑功能而闻名。它可以通过不同的模式进行定制和扩展,使其可以像集成开发环境(IDE)一样用于编程语言,如 Java、C 和 Python。
对于那些既使用过 Vi 又使用过用户友好型 Nano 文本编辑器的人来说,Emacs 可以看作是两者之间的一种选择。它的优势和功能类似于 Vi,而其菜单、帮助文件和命令键则类似于 Nano。
在本文中,你将学习如何在 Ubuntu 22.04 服务器上安装 Emacs,并将其用于基本文本编辑。
先决条件
为了跟随本教程,您需要一个设置了 sudo 特权和启用了防火墙的非 root 用户的 Ubuntu 22.04 服务器。您可以按照我们的《使用 Ubuntu 22.04 初期服务器设置指南》进行设置。
第一步 – 安装 Emacs
首先,检查您的系统上是否已经安装了 Emacs。
- emacs
如果程序已安装,编辑器将会启动并显示默认的欢迎信息。如果没有安装,则会收到以下输出:
OutputCommand 'emacs' not found, but can be installed with:
sudo apt install e3 # version 1:2.82+dfsg-2
sudo apt install emacs-gtk # version 1:27.1+1-3ubuntu5
sudo apt install emacs-lucid # version 1:27.1+1-3ubuntu5
sudo apt install emacs-nox # version 1:27.1+1-3ubuntu5
sudo apt install jove # version 4.17.3.6-2
See 'snap info emacs' for additional versions.
安装 Emacs,请使用以下命令:
- sudo apt install emacs
安装了 Emacs 后,你就可以继续进行下一步。
第二步 – 使用界面
在终端中输入命令“emacs”来启动 Emacs。
- emacs
Emacs 以一个空白的编辑缓冲区开始,并等待您开始输入。当您启动 Emacs 时,如果没有指定文件,程序将显示一个欢迎消息。

要开始一个新文件,将光标移到“访问新文件”链接上,按下 TAB 键然后按下 ENTER。你也可以按下 CTRL+X,然后按下 CTRL+F 来新建一个文件。在你的终端末尾会出现一个提示,要求输入文件名。

输入一个文件名开始进行文本编辑。在以下示例中,使用了 myfile.txt。您可以随意命名这个文件。输入文件名后,按下回车键继续。
一个空文件将准备好进行文本输入。

屏幕顶端有一个菜单。菜单下方是一个大的编辑空间。这被称为主缓冲区,您可以在此输入文本或查看文件内容。
当 Emacs 编辑磁盘上的现有文件时,该文档的副本首先被加载到内存中,然后在主编辑窗口中显示出来。这个内存区域被称为缓冲区。当您在文档中工作时,您所做的所有更改都将应用到缓冲区,而磁盘上的原始文件保持不变。偶尔,Emacs 会在后台自动保存,但只有当您手动保存文档时,更改才会写入磁盘。对于新文件也是如此。在保存之前,所有更改都是在缓冲区上进行的。Emacs 中的主编辑空间是您对缓冲区的视图。
在主缓冲区之后,屏幕底部会显示一栏突出的文字。这被称为状态栏或模式栏。这里显示的文字取决于 Emacs 当前所处的模式。除其他内容外,状态栏还包括:
- 当前文件名
- 当前光标位置
- 当前编辑模式
- 文件的状态(– 表示未修改文件,** 表示有未保存更改的文件,%% 表示只读文件)
最后,在状态栏结束的地方之后存在一行空间。在这个例子中,它显示了文本“(新文件)”。这个区域被称为迷你缓冲区。Emacs 是一个命令驱动的工具,迷你缓冲区是你的主要交互点。在这里,Emacs 会提示你输入命令,并显示输出结果。
Emacs 的文本版本和其图形用户界面(GUI)版本对待窗口的方式不同。与 GUI 应用程序不同,文本版本的 Emacs 窗口不会弹出,因为它们在终端或控制台会话中无法实现物理弹出。当 Emacs 需要启动一个新窗口时,它的主缓冲区会被分成两部分,就像在浏览器中有两个框架一样。上半部分显示主缓冲区的内容,下半部分显示新的内容。例如,当你访问 Emacs 的帮助文件或教程时,Emacs 会生成一个新窗口。
访问菜单
Emacs 启动时通常会占用整个屏幕。位于屏幕顶部的菜单栏提供大部分功能的访问方式。
与基于图形用户界面的程序不同,文本菜单不能通过鼠标点击来下拉。事实上,您也不能使用快捷键来高亮和滚动浏览菜单。
要访问菜单,请按下 F10 键。这将在主缓冲区下方打开一个新窗口,并显示一系列用于访问菜单项的键。迷你缓冲区会提示你输入所需的键。一旦你按下该键,新窗口的内容将改变,显示下一层的选项。
无论你在菜单的深度中有多深,只需按下 ESC 键三次即可退出菜单。这通常会关闭菜单窗口并带你回到主缓冲区。
这里有一些从“工具”菜单中可用的选项:
- 日历
- 简单计算器
- 可编程计算器
- 搜索目录
- 加密和解密文档
- 发送和读取电子邮件
- 使用 grep 搜索文件
- 拼写检查
- 运行 shell 命令和编译代码
- 版本控制
- 比较和合并文件
- 游戏
访问帮助与教程
Emacs 拥有一个包含了很多帮助和教程的系统。要访问它,你可以通过按下 F10 键,然后使用右箭头或左箭头来选择菜单中的“帮助”,或者按下 CTRL+H,然后再按一个相应的键。例如,在按下 CTRL+H 后,你可以输入以下任意一个键来查看常见问题、教程、新闻以及其他主题:
- t 进入 Emacs 教程
- CTRL+F 查看常见问题 (FAQ)
- CTRL+P 了解已知错误和问题
- CTRL+R 阅读 Emacs 手册
- CTRL+E 查找额外软件包
第三步 – 使用命令键
现在你熟悉了用户界面,你可以开始熟悉 Emacs 的命令键了。当你打开一个文件时,你可以同时开始输入和发出命令。
命令功能通常涉及两个或三个按键。最常见的是 CTRL 键,其次是 ALT 键或 ESC 键。在 Emacs 环境中,CTRL 以简写形式表示为“C”。类似于 Emacs 内的 C-x C-c 的注释意味着您同时按下 CTRL + X 键,然后再按下 CTRL + C 键。同样地,C-h t 表示同时按下 CTRL + H 键,然后释放两个键再按 t 键。
在 Emacs 中,ALT 和 ESC 键被称为元键。在苹果机器上,使用 OPTION 键代替 ALT 键。其他键盘使用 EDIT 键。与 CTRL 键类似,Emacs 使用元键进行多键功能。例如,M-x 这样的符号意味着你同时按下 ALT 或 OPTION 和 x 键。同样,你也可以使用 ESC+X 来完成相同的命令。
在 Emacs 中,ENTER 键被表示为 RET,缩写为回车。ESC 键通常被表示为 E。
按下 ESC 键可以退出命令或提示。例如,你可以多次按 ESC 键来退出特定的菜单。另一种取消操作的方法是按下 CTRL+G 键。
保存并退出
当您对文档进行了一些更改或编写了一些文字后,您可以按下 CTRL + X,然后按下 CTRL + S 进行保存。迷你缓冲区将输出以下消息:
OutputWrote /home/sammy/myfile.txt
你可以通过按下 CTRL+X,然后再按下 CTRL+C 来退出 Emacs。
如果在退出之前没有手动保存文件,你将收到此消息。
输出保存文件 /home/sammy/myfile.txt? (y, n, !, ., q, C-r, C-f, d 或 C-h)
按下 Y
键保存文件。
如果你按下 N
表示不同意,你将收到以下消息:
输出存在未保存的缓冲区;确定要退出吗? (yes 或 no)
输入“yes”以不保存退出。
导航文本
在 Emacs 中,浏览长篇文档或帮助主题可能是一项繁琐的任务。幸运的是,Emacs 提供了多种浏览文件的方式。
以下是一些常见的导航功能列表:
功能 | 按键 |
---|---|
移动到下一行 | CTRL+N (N 代表 Next) |
移动到上一行 | CTRL+P (P 代表 Previous) |
向前移动一个字符 | CTRL+F (F 代表 Forward) |
向后移动一个字符 | CTRL+B (B 代表 Backward) |
向前移动一个单词 | META+F (F 代表 Forward) |
向后移动一个单词 | META+B (B 代表 Backward) |
移动到行首 | CTRL+A |
移动到行尾 | CTRL+E (E 代表 End) |
移动到句首 | META+A |
移动到句尾 | META+E (E 代表 End) |
向下翻页 | CTRL+V (或 PgDn) |
向上翻页 | META+V (或 PgUp) |
移动到文件开头 | META+< (Alt + Shift + “<”) |
移动到文件末尾 | META+> (Alt + Shift + “>”) |
请记住,META
键可以使用以下任意一个键:ALT
、ESC
、OPTION
或 EDIT
。
步骤 4 – 编辑功能
如果您需要执行更多在流行文字处理软件中常见的专门任务,比如选择或突出显示特定的文本文件部分,您可以在 Emacs 中完成。
标记文本区域
按照以下步骤标记一个文本区域:
- 将光标移动到您希望选择开始的位置。您可以使用前面描述的任何方法来移动光标。
- 按下
CTRL+SPACEBAR
或CTRL+@
来设置标记以开始文本高亮。迷你缓冲区将显示“Mark Activated”(标记已激活)状态消息。 - 将光标移动到您希望区域结束的位置。通过使用前面描述的任何按键组合。
- 文本将高亮显示到光标当前所在的位置。
- 再次按下
CTRL+SPACEBAR
或CTRL+@
以取消标记高亮文本。迷你缓冲区将显示“Mark Deactivated”(标记已取消激活)状态消息。
或者,就像一个文字处理软件那样,你可以按住 SHIFT
键,并使用键盘上的上下箭头键来移动光标,以进行选择。
如果你想选择光标当前所在的段落,请按下 META+H
键。之后连续按下 META+H
键将选择文本文件中的下一段落。
如果您想选择主缓冲区的所有内容(即“全选”),请按 Ctrl+X
然后按 h
。
剪切、复制和粘贴文本
类似于文字处理器,你可以复制、剪切和粘贴文本。
- 要复制您选择的文本,请按下
META+W
。 - 要剪切文本选择,请按下
CTRL-W
。 - 要粘贴文本选择,请按下
CTRL-Y
。
删除文本
使用退格键和删除键删除文本的方式与您预期的一样。
想要快速删除整个词汇,只需要将光标移至词汇开头,然后按下 META+D
。若想删除多个词汇,按住 META
键并连续按下 D
。词汇将会逐个被删除。
要删除整行文本,将光标定位到您要删除的位置,然后按下 Ctrl+K
。这样会删除整行文本,直到行尾为止。
按下 META+K
可以删除一句话。请注意,如果句号后没有两个空格,Emacs 将删除整行或更多内容。句号后的两个空格是 Emacs 确定句子是否跨越多行的标志。
撤销和重做
按下 CTRL+X
然后按 u
可以撤销上一次操作。另一种替代的按键组合是 CTRL+_
(这里的按键是 CTRL
, SHIFT
和 -
来进行下划线操作)。
要重新做你上次的撤销操作,请按下 CTRL+G
,接着按下 CTRL+下划线键
。
搜索和替换文本
在 Emacs 中有两个搜索方向:向前和向后。在向前搜索中,将从当前光标位置向前搜索您指定的单词。而对于向后搜索,则相反。
- 按下
CTRL+S
进行向前搜索。然后在迷你缓冲区提示符中输入您要搜索的文本。 - 按下
CTRL+R
进行向后搜索。
当你输入搜索词后,Emacs 会立即搜索并在主缓冲区中突显所有匹配项。
例如,在文本文件中搜索“猫”这个词将会将主缓冲区中的每个出现都显示为突出显示的文字。

更换文本时,请按照以下步骤进行:
- 按下
META+%
。迷你缓冲区将提示“Query replace:”(查询替换:)以供搜索文本。 - 输入您要替换的文本并按下
ENTER
。 - 迷你缓冲区将显示“Query replace your_search_term with:”(查询替换 your_search_term 为:)。
- 输入您要替换
your_search_term
的单词或短语,然后按下ENTER
。 - 每个匹配项都将被高亮显示,并且您将收到替换提示。迷你缓冲区将询问“Query replacing your_search_word with your_replacement_word: (C-h for help)”(查询替换 your_search_word 为 your_replacement_word: (C-h 获取帮助))。
- 按下
y
替换当前找到的匹配项。 - 按下
n
跳过到下一个匹配项。 - 按下
q
退出而不进行任何替换。 - 按下
!
进行全局替换而不进行任何提示。迷你缓冲区将输出此消息:“replaced number occurrences.”(已替换 number 处)。
加入左对齐、右对齐和居中对齐
要使一行居中,将光标移动到该行开头处,然后按下 META+O
,再按下 META+S
。
为了证明所选择的文本区域,请按照以下步骤进行:
- 高亮显示您希望对齐的文本。
- 按下
META+X
。迷你缓冲区将等待响应。 - 输入
set-justification-
并按下TAB
键。 - 您将看到以下补全选项:
set-justification-center
、set-justification-left
、set-justification-right
、set-justification-none
和set-justification-full
。 - 通过选择
set-justification-right
或您选择的任何一个选项来完成对齐命令,然后按下ENTER
。 - 选定的文本将按照您选择的方向进行对齐。
以下是分别针对不同对齐设置指定的文本示例:

转换大小写
您可以使用几个不同的命令来转换大小写。以下是一些命令按键的列表:
要执行的功能 | 使用的按键 |
---|---|
将光标后的单词首字母大写 | META+C (C 代表 capitalize) |
将单词转换为小写 | META+L (L 代表 lowercase) |
将单词转换为大写 | META+U (U 代表 uppercase) |
将段落转换为大写 | 块选择,然后 CTRL+X CTRL+U |
将段落转换为小写 | 块选择,然后 CTRL+X CTRL+L |
如果你要将一个完整的段落或更多内容转换为大写或小写,会出现一个新窗口和提示信息。
窗口您已键入 C-x C-l,调用了被禁用的命令 downcase-region。它被禁用是因为新用户经常觉得它令人困惑。这是其描述的第一部分:将区域转换为小写。在程序中,它需要两个参数。这些参数指定要操作区域的起始和结束字符编号。当作为命令使用时,操作的是光标和标记之间的文本。您是否仍要使用此命令?您现在可以键入 'y' 来尝试并启用它(如果再次使用则不会提问)。'n' 取消——不尝试该命令,并且它仍然被禁用。'SPC' 仅本次尝试该命令,但保持禁用。'!' 尝试它,并仅在本会话中启用所有被禁用的命令。

按下所提到的按键继续操作。
管理窗口
在Emacs中管理窗口可以帮助您更高效地处理文件。
例如,从您的主缓冲区中,通过按下 CTRL+h
然后 t
,可以切换到Emacs教程。您的主缓冲区窗口现在是Emacs教程。如果您想切换回 myfile.txt
缓冲区,按下 CTRL+X
,然后 b
。这是切换缓冲区的命令。Emacs会要求您输入要切换的缓冲区名称。开始输入缓冲区名称 myfile.txt
,然后按 ENTER
。这将使您从Emacs教程转到您指定的文件。
第五步 – 进入模式
进入一个主模式
由于Emacs具有能够假设不同模式的能力,这也是它在UNIX社区被广泛采用的原因之一。一个模式可以增强Emacs的功能。
根据所选择的模式,Emacs可以用作编写文本文件的文字处理器,也可以适用于高级任务,例如编写Python、C或Java代码。例如,您可以更改Emacs的模式,使其能够与版本控制系统配合使用、运行Shell命令或阅读man页面。
Emacs有两种不同类型的模式。一种被称为主模式(major mode)。在主模式中,Emacs可以作为编程或脚本语言的集成开发环境(IDE)使用。在这种模式下,程序提供了特殊的功能,如语法高亮、缩进和格式化、语言特定的菜单选项,或与调试器和编译器的自动接口。
为了演示,您可以使用Emacs在Python中编写一个“Hello World”应用程序。
在您的终端和根目录中,输入以下命令:
- cd ~
- emacs hello.py
Emacs能够识别文件扩展名并自动以Python模式启动。在主缓冲区中,输入以下Python代码:
print "hello world!\n"
现在关键词会以彩色语法高亮显示。还要注意迷你缓冲区上方的状态行显示您当前所处的模式。主菜单也有一个专门针对Python的独立条目。

使用 CTRL+X CTRL+S
保存缓冲区。
要在Emacs中更改主模式,请按下 META+X
。迷你缓冲区将等待您的回应。然后,您可以输入不同的模式。以下是一些主模式的例子:
- c-mode
- python-mode
- java-mode
- html-mode
- perl-mode
- shell-script-mode
- text-mode
进入一个次要模式
与主要模式相比,次要模式提供更具体的功能。这些功能可以与特定的主要模式相关联,或者与主要模式无关地在整个系统中产生影响。此外,不同于主要模式,可以同时启用多个次要模式。次要模式就像开关:有些默认开启,有些则未开启。如果一个次要模式已经开启,再次调用它将关闭它。如果它未开启,调用后将重新开启。
一个次要模式的例子是在前面的例子中使用的设置对齐的选项。
另一个次要模式的例子是自动填充模式。要在您的Emacs编辑器中进入此模式,按下 META+X
键,然后输入 auto-fill-mode
。
当文本长度超过70个字符时,这种模式会使得文本换行并换到下一行。请记住,当你启用一个次要模式时,它就像一个切换开关。再次调用相同的命令将会禁用换行。
以下是一些次要模式的例子:
-
auto-save-mode(自动保存模式): 此模式用于切换自动保存功能,它会在后台周期性地保存主缓冲区的内容。
-
line-number-mode(行号模式): 此模式用于切换状态栏中当前行号的显示。
-
linum-mode(行号显示模式): 此模式用于切换窗口左侧边缘的行号显示。
-
column-number-mode(列号模式): 此模式用于在状态栏中显示光标的当前列位置。
-
overwrite-mode(覆盖模式): 此模式类似于按下键盘上的“INS”键。启用后,当您输入时,它会覆盖光标右侧的文本。
-
menu-bar-mode(菜单栏模式): 此模式可以切换主菜单的显示或隐藏。
结论
在本教程中,您学习了Emacs中的各种命令、编辑功能和模式。
为了进一步了解Emacs编辑器,GNU Emacs官方网页提供了丰富的信息,包括指向Emacs Wiki等其他资源的链接。您还可以查阅GNU Emacs手册。