如何在 Linux 中使用 Emacs 编辑器
介绍
Emacs 是最古老和最通用的文本编辑器之一。 GNU Emacs 版本最初编写于 1984 年,以其强大而丰富的编辑功能而闻名。它可以使用不同的模式进行自定义和扩展,使其能够像集成开发环境 (IDE) 一样用于 Java、C 和 Python 等编程语言。
对于那些同时使用过 Vi 和用户友好的 nano 文本编辑器的人来说,Emacs 将自己呈现为介于两者之间。它的优势和特性与 Vi 类似,而它的菜单、帮助文件和命令键与 nano 相比。
在本文中,您将学习如何在 Ubuntu 22.04 服务器上安装 Emacs 并将其用于基本的文本编辑。
先决条件
要学习本教程,您需要一个 Ubuntu 22.04 服务器,该服务器设置为具有 sudo
权限并启用防火墙的非根用户。您可以按照我们的 Ubuntu 22.04 初始服务器设置指南进行设置。
第 1 步 – 安装 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 之后,您就可以进行下一步了。
第 2 步 – 使用界面
通过在终端中发出命令 emacs
启动 Emacs:
- emacs
Emacs 以一个空的编辑缓冲区开始,等待您开始输入。当 Emacs 在没有指定文件的情况下启动时,程序会显示一条欢迎消息:

要开始一个新文件,请按 TAB
键将光标移动到链接 \Visit New File,然后按 ENTER
。您也可以按 CTRL+X
,然后 CTRL+F
创建一个新文件。终端末尾会出现提示,要求输入文件名:

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

屏幕顶部有一个菜单。菜单之后是一个很大的编辑空间。这称为主缓冲区,您可以在其中键入文本或查看文件内容。
当 Emacs 编辑磁盘上的现有文件时,该文档的副本首先加载到内存中,然后显示在主编辑窗口中。内存中的这个区域称为缓冲区。当您处理文档时,您在编辑空间中所做的所有更改都会应用到缓冲区,而磁盘上的原始文件保持不变。偶尔,Emacs 会在后台自动保存,但只有当您手动保存文档时,更改才会写入磁盘。这同样适用于新文件。在您保存之前,所有更改都在缓冲区上进行。 Emacs 中的主要编辑空间是您对缓冲区的视图。
在主缓冲区之后,屏幕底部附近会显示一段突出显示的文本。这称为状态栏 或模式行。此处显示的文本取决于 Emacs 当前所处的模式。除其他外,状态栏包括:
- <李> 当前文件的名称 <李> 当前光标位置 <李> 当前编辑模式 <李> 文件的状态(-- 对于未修改的文件,** 对于未保存更改的文件,%% 对于只读文件)
最后,在屏幕结束的状态栏之后存在一行空格。在此示例中,它显示文本 \(New File)。这个区域称为 迷你缓冲区。Emacs 是一个命令驱动的工具,迷你缓冲区是您的主要交互点。这是Emacs 提示您输入命令并显示输出。
基于文本的 Emacs 版本对待窗口的方式与基于 GUI 的版本不同。与基于 GUI 的应用程序不同,基于文本的 Emacs 窗口不会弹出,因为它们不能在终端或控制台会话中实际弹出。当 Emacs 需要启动一个新窗口时,它的主缓冲区被分成两部分,就像在浏览器中有两个框架一样。上半部分显示主缓冲区,下半部分显示新内容。 Emacs 生成新窗口的一个例子是当您访问它的帮助文件或教程时。
访问菜单
当 Emacs 启动时,它通常会占据整个屏幕。它的大部分功能都可以从位于屏幕顶部的菜单栏访问。
与基于 GUI 的程序不同,基于文本的菜单不能通过单击鼠标来下拉。事实上,您无法使用快捷键突出显示和滚动菜单。
要访问菜单,请按 F10
键。这将在主缓冲区下打开另一个窗口,并显示用于访问菜单项的键列表。迷你缓冲区将提示您输入所需的密钥。一旦你按下那个键,新窗口的内容就会改变,反映出下一级的选项。
要退出菜单,无论您处于多深,请按 ESC
键三次。这通常会关闭菜单窗口并将您带回主缓冲区。
以下是 Tools
菜单中可用的一些选项:
- 日历
- 简单的计算器
- 可编程计算器
- 搜索目录
- 加密和解密文档
- 发送和阅读电子邮件
- 使用 grep 搜索文件
- 拼写检查
- 运行shell命令和编译代码
- 版本控制
- 比较和合并文件
- 游戏
访问帮助和教程
Emacs 有一个广泛的帮助系统和教程。要访问它,您可以通过按 F10
使用菜单,然后按 RIGHT
或 LEFT
箭头键选择 Help
, 或者按CTRL+H
然后按相应的键。例如,您可以在按 CTRL+H
后输入以下键之一来查看常见问题解答、教程、新闻和其他主题:
t
进入 Emacs 教程CTRL+F
常见问题解答CTRL+P
了解已知错误和问题CTRL+R
阅读 Emacs 手册CTRL+E
查找额外的包
第 3 步 – 使用命令键
现在您已经熟悉了用户界面,可以开始熟悉 Emacs 的命令键了。打开文件时,您可以同时开始键入和发出命令。
命令功能通常涉及两个或三个键。最常见的是 CTRL
键,然后是 ALT
或 ESC
键。 CTRL
在 Emacs 环境中以缩写形式显示为 \C。在 Emacs 中的注释,如 C-x C-c
,表示您按下 CTRL+X
键同时按下,然后按 CTRL+C
。同样,C-h t
,表示同时按下 CTRL+H
,然后松开两个键和按 t
。
ALT
和 ESC
键在 Emacs 中称为 meta 键。在 Apple 机器上,使用 OPTION
键代替 ALT
键。其他键盘使用 EDIT
键。与 CTRL
键类似,Emacs 使用元键的多键功能。例如,像 M-x
这样的符号表示您同时按下 ALT
或 OPTION
和 x
。同样,您可以使用 ESC+X
来完成相同的命令。
ENTER
键在Emacs中显示为RET
,是return的缩写。 ESC
键通常显示为 E
。
ESC
键可用于退出命令或提示。例如,您可以按多次 ESC
退出特定菜单。另一种取消操作的方法是按 CTRL+G
。
保存并退出
一旦您对文档进行了一些更改或编写了一些文本,您可以通过按 CTRL+X
,然后按 CTRL+S
来保存它。迷你缓冲区将输出以下消息:
OutputWrote /home/sammy/myfile.txt
您可以通过按 CTRL+X
退出 Emacs,然后按 CTRL+C
。
如果它在退出前没有手动保存文件,您将收到此消息:
OutputSave file /home/sammy/myfile.txt? (y, n, !, ., q, C-r, C-f, d or C-h)
按 Y
保存文件。
如果您按 N
表示否,您将收到此消息:
OutputModified buffers exist; exit anyway? (yes or no)
输入 yes
退出而不保存。
导航文本
浏览长文档或帮助主题可能是一项乏味的任务。幸运的是,在 Emacs 中有多种导航文件的方法。
以下是一些常用导航功能的列表:
To perform this function | Use these keys |
---|---|
Moving to the next line | CTRL+N (N for Next) |
Moving to the previous line | CTRL+P (P for Previous) |
Moving one character forward | CTRL+F (F for Forward) |
Moving one character backward | CTRL+B (B for Backward) |
Moving one word forward | META+F (F for Forward) |
Moving one word backward | META+B (B for Backward) |
Moving to the start of a line | CTRL+A |
Moving to the end of a line | CTRL+E (E for End) |
Moving to the start of a sentence | META+A |
Moving to the end of a sentence | META+E (E for End) |
Moving one page down | CTRL+V (or PgDn) |
Moving one page up | META+V (or PgUp) |
Moving to the beginning of the file | META+< (Alt + Shift + “<”) |
Moving to the end of the file | META+> (Alt + Shift + “>”) |
请记住,META
表示您可以使用以下任意键:ALT
、ESC
、OPTION
或 编辑
。
第 4 步 – 编辑功能
如果您需要执行流行文字处理器常见的更专业的任务,例如选择或突出显示文本文件的特定部分,您可以在 Emacs 中完成。
标记文本区域
要标记文本区域,请执行以下步骤:
- <李> 将光标移动到您希望开始选择的位置。您可以使用前面描述的任何方法来移动光标。 <李> 按
CTRL+SPACEBAR
或 CTRL+@
设置标记以开始突出显示文本。迷你缓冲区将显示状态消息 Mark Activated
。 <李> 将光标移动到您希望片段结束的位置。通过使用前面描述的任何组合键。 <李> 文本将突出显示到光标现在所在的位置。 <李> 按 CTRL-SPACEBAR
或 CTRL+@
两次取消标记突出显示的文本。迷你缓冲区将显示状态消息 Mark Deactivated
。 或者,就像文字处理器一样,您可以按住 SHIFT
键并使用键盘上的 UP
或 DOWN
箭头键移动光标,以制作您的选择。
如果要选择光标当前所在的段落,请按 META+H
。此后连续按 META+h
将选择文本文件中的下一段。
如果要选择主缓冲区的所有内容(即“全选”),请按 CTRL+X
,然后按 h
。
剪切、复制和粘贴文本
类似于文字处理器,您可以复制、剪切和粘贴文本:
- <李> 要复制您选择的文本,请按
META+W
。 <李> 要剪切文本选择,请按 CTRL-W
。 <李> 要粘贴文本选择,请按 CTRL-Y
。 删除文本
使用 Backspace
和 Delete
键删除文本的方式与您期望的一样。
要快速删除整个单词,请将光标移动到单词的开头并按 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 会立即搜索它并突出显示它在主缓冲区中找到的所有匹配项。
例如,在文本文件中搜索单词 \cat 将显示主缓冲区中的每个匹配项作为突出显示的文本:

要替换文本,请按照下列步骤操作:
- <李> 按
META+%
。迷你缓冲区将提示要使用 Query replace:
搜索的文本。 <李> 输入您要替换的文本,然后按 ENTER
。 <李> 迷你缓冲区将显示 Query replace your_search_term with:
。 <李> 输入要替换 your_search_term 的词或短语,然后按 ENTER
。 <李> 每个匹配项都将突出显示,并且系统会提示您进行替换。迷你缓冲区将询问 查询将 your_search_word 替换为 your_replacement_word:(C-h 寻求帮助)
。 <李> 按 y
替换找到的当前匹配项。 <李> 按 n
跳到下一场比赛。 <李> 按 q
退出而不进行任何替换。 <李> 按 !
可以在没有任何提示的情况下进行全局替换。迷你缓冲区将输出此消息:replaced number occurrences
。 添加左对齐、右对齐和居中对齐
要使一行居中,请将光标移动到该行的开头,然后按 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
。 <李> 所选文本将根据您选择的方向对齐。 以下是分配给不同对齐设置的文本示例:

转换案例
您可以使用几个不同的命令来转换大小写。以下是一些命令键的列表:
To perform this function | Use these keys |
---|---|
Capitalizing a word after the cursor | META+C (C for capitalize) |
Converting a word to lowercase | META+L (L for lowercase) |
Converting a word to uppercase | META+U (U for uppercase) |
Converting a paragraph to uppercase | Block select, then CTRL+X CTRL+U |
Converting a paragraph to lowercase | Block select, then CTRL+X CTRL+L |
如果您要将整个段落或更多段落转换为大写或小写,您将看到一个新窗口和消息:
WindowYou have typed C-x C-l, invoking disabled command downcase-region. It is disabled because new users often find it confusing. Here’s the first part of its description: Convert the region to lowercaselower case. In programs, it wants two arguments.These arguments specify the starting and ending character numbers of the region to operate on. When used as a command, the text between point and the mark is operated on. Do you want to use this command anyway? You can now type 'y' to try it and enable it (no questions if you use it again). 'n' to cancel--don’t try the command, and it remains disabled. 'SPC' to try the command just this once, but leave it disabled. '!' to try it, and enable all disabled commands for this session only.

按上述键继续。
管理窗口
在 Emacs 中管理窗口可以帮助您更有效地处理文件。
例如,从您的主缓冲区,通过按 CTRL+h
然后按 t
切换到 Emacs 教程。您的主缓冲区窗口现在是 Emacs 教程。如果您想切换回 myfile.txt
缓冲区,请按 CTRL+X
,然后按 b
。这是切换缓冲区 命令。 Emacs 将提示您输入要切换到的缓冲区名称。开始输入缓冲区名称 myfile.txt
,然后按 ENTER
。这会将您从 Emacs 教程带到您指定的文件。
第 5 步 – 进入模式
进入主要模式
Emacs 在 UNIX 社区中被如此广泛采用的原因之一是它能够采用不同的模式。一种模式可以增强 Emacs 的功能。
根据选择的模式,Emacs 可以用作编写文本文件的文字处理器,或者它可以适应高级任务,如编写 Python、C 或 Java 代码。例如,您可以更改 Emacs 的模式以使其与版本控制系统一起工作、运行 shell 命令或阅读手册页。
有两种不同类型的 Emacs 模式。一种称为主要模式。在主要模式下,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-模式
- python模式
- java模式
- html 模式
- perl 模式
- shell脚本模式
- 文本模式
进入次要模式
与主要模式相比,次要模式 提供更具体的功能。这些功能可以绑定到特定的主要模式,或者具有系统范围的影响,而不管主要模式如何。此外,与主要模式不同的是,在任何时候都可以有多个次要模式生效。次要模式就像开关:有些是默认启用的,有些则不是。如果一个次要模式已经打开,调用它将关闭它。如果关闭,它将重新打开。
次要模式的一个示例是用于设置前面示例中使用的对齐方式的选项。
次要模式的另一个示例是 auto-fill-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 网页提供了大量信息,包括指向其他资源(如 GNU Emacs 手册)的链接。