引言
Emacs是最古老且功能最全面的文本编辑器之一。GNU Emacs版本最初于1984年编写,以其强大而丰富的编辑功能而闻名。它可以通过不同的“模式”进行定制和扩展,使其能够像集成开发环境(IDE)一样用于Java、C和Python等编程语言。
对于那些既使用过Vi又使用过用户友好的nano文本编辑器的人来说,Emacs呈现出介于两者之间的特性。它的优势和功能类似于Vi,而其菜单、帮助文件和命令键与nano相似。
前提条件
要完成本教程,你需要:
需要一个已设置的Ubuntu服务器,具有非root用户,具有sudo
权限,并启用了防火墙以阻止非必要的端口。
设置完成后,以的非root用户身份登录并进行第一步。
建议使用至少有以下配置的服务器:
4 核心的 CPU,4GB 的内存
选择服务器提供商
为了本教程的演示,我将以一个具体的云服务提供商为例,展示如何进行操作。选择哪个提供商根据个人偏好和需求来决定。
雨云注册链接:https://www.rainyun.com/NTE2NDM3_?s=blog
以下步骤仅供参考,请根据实际需求选择配置。注册5折优惠码:NTE2NDM3
购买云服务器
本示例中,我们选择了香港作为服务器区域。
点击 云产品 → 云服务器 → 立即购买
选择操作系统
在创建服务器实例时,选择 Ubuntu 作为操作系统。
连接到服务器
使用 X-shell 或偏好的 SSH 客户端,通过远程用户名和密码连接到服务器。成功连接后,将看到特定的欢迎信息,表明已成功登录。
第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在没有指定文件的情况下启动时,程序会显示一个欢迎消息
要开始一个新文件,将光标移动到“Visit New File”链接上,按TAB
键,然后按ENTER
。你也可以按CTRL+X
,然后CTRL+F
来创建一个新文件。终端末尾会出现一个提示,要求输入文件名
输入一个文件名开始文本编辑。以下示例中使用了myfile.txt
。你可以给这个文件起任何你喜欢的名字。输入文件名后,按ENTER
继续。
一个空文件将准备好进行文本输入:
在屏幕顶部有一个菜单。菜单后面是一个大的编辑空间。这被称为_main buffer_,你在这里输入文本或查看文件的内容。
当Emacs编辑磁盘上的现有文件时,该文件的副本首先加载到内存中,然后显示在主编辑窗口中。这个内存区域被称为_buffer_。当你在文档中工作时,你在编辑空间中所做的所有更改都应用于缓冲区,而磁盘上的原始文件保持不变。偶尔,Emacs会在后台自动保存,但只有当你手动保存文档时,更改才会写入磁盘。新文件也是如此。所有更改都在缓冲区中进行,直到你保存它。Emacs中的主要编辑空间是你查看缓冲区的视图。
在主缓冲区之后,屏幕底部附近显示了一条高亮的文本栏。这被称为_status bar_或_mode line_。这里显示的文本取决于Emacs当前处于什么模式。状态栏包括:
- 当前文件的名称
- 当前光标位置
- 当前编辑模式
- 文件的状态(–表示未修改的文件,**表示有未保存更改的文件,%%表示只读文件)
最后,在状态栏之后,屏幕结束的地方有一行空间。在这个例子中,它显示的是文本“(New File)”。这个区域被称为_mini buffer_。Emacs是一个命令驱动的工具,mini buffer是你主要的交互点。这是Emacs提示你输入命令和显示输出的地方。
基于文本的Emacs与基于GUI的版本在处理窗口方面有所不同。与基于GUI的应用程序不同,基于文本的Emacs窗口不能在终端或控制台会话中物理弹出。当Emacs需要启动一个新窗口时,其主缓冲区被分成两部分,就像在浏览器中有两个框架一样。顶部显示主缓冲区,底部显示新内容。Emacs生成新窗口的一个例子是当你访问其帮助文件或教程时。
当Emacs启动时,它通常占据整个屏幕。它的大多数功能都可以从屏幕顶部的菜单栏访问。
与基于GUI的程序不同,基于文本的菜单不能通过鼠标点击来下拉。事实上,你不能使用快捷键突出显示并滚动菜单。
要访问菜单,按F10
键。这将在主缓冲区下打开另一个窗口,并显示一个键列表以访问菜单项。mini buffer将提示你输入所需的键。一旦你按下该键,新窗口的内容将改变,反映下一级选项。
要退出菜单,无论你深入到哪个级别,按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
键。在Emacs环境中,CTRL
以简写形式显示为“C”。Emacs中的注释,如C-x C-c
,意味着你同时按下CTRL+X
键,然后按CTRL+C
。类似地,C-h t
,意味着按CTRL+H
一起,然后释放两个键并按t
。
ALT
和ESC
键在Emacs中被称为_meta_键。在苹果机器上,而不是ALT
,使用OPTION
键。其他键盘使用EDIT
键。类似于CTRL
键,Emacs使用多键功能与meta键。例如,一个符号M-x
意味着你同时按下ALT
或OPTION
和x
。同样,你可以使用ESC+X
来完成相同的命令。
ENTER
键在Emacs中显示为RET
,这是返回的缩写。ESC
键通常显示为E
。
ESC
键可以用来退出命令或提示。例如,你可以按多次ESC
键退出特定菜单。取消操作的另一种方法是按CTRL+G
。
保存和退出
一旦你对文档进行了一些更改或写了一些文本,你可以通过按CTRL+X
,然后CTRL+S
来保存它。mini buffer将输出以下消息:
OutputWrote /home/sammy/myfile.txt
你可以通过按CTRL+X
,然后CTRL+C
来退出Emacs。
如果你在退出前没有手动保存文件,你将收到此消息:
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 中有多种方式可以浏览文件。
以下是一些常见导航功能的列表:
执行此功能 | 使用这些键 |
---|---|
移至下一行 | CTRL+N (N 代表下一步) |
移至上一行 | CTRL+P (P 代表 Previous) |
向前移动一个字符 | CTRL+F (F 代表前进) |
向后移动一个字符 | CTRL+B (B 代表向后) |
向前移动一个字 | META+F (F 代表前进) |
向后移动一个单词 | META+B (B 代表向后) |
移至行首 | CTRL+A |
移至行尾 | CTRL+E (E 代表结束) |
移至句首 | META+A |
移至句末 | META+E (E 代表结束) |
向下移动一页 | CTRL+V (或 PgDn) |
向上移动一页 | META+V (或 PgUp) |
移至文件开头 | META+< (Alt + Shift + “<”) |
移至文件末尾 | META+> (Alt + Shift + “>”) |
请记住,这META
意味着您可以使用以下任意键:ALT
、ESC
、OPTION
或EDIT
。
第4步 - 编辑功能
如果你需要执行更专业的任务,常见于流行的文字处理软件,比如选择或高亮显示文本文件的特定部分,你可以在Emacs中这样做。
标记文本区域
要标记一个文本区域,请按照以下步骤操作:
- 将光标移动到你希望选择开始的位置。你可以使用前面描述的任何方法移动光标。
- 按
CTRL+SPACEBAR
或CTRL+@
设置一个标记,开始你的文本高亮。mini buffer将显示一个状态消息Mark Activated
。 - 将光标移动到你希望区域结束的位置。使用前面描述的任何键组合。
- 文本将被高亮显示到光标当前位置。
- 按
CTRL-SPACEBAR
或CTRL+@
两次取消标记高亮文本。mini buffer将显示一个状态消息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
进行向前搜索。然后在mini-buffer提示中输入你正在搜索的文本。 - 按
CTRL+R
进行向后搜索。
输入搜索词后,Emacs将搜索它并突出显示在主缓冲区中找到的任何匹配项。
例如,在文本文件中搜索单词“cat”将显示主缓冲区中每个出现的地方作为高亮文本:
要替换文本,请按照以下步骤操作:
- 按
META+%
。mini buffer将提示你输入要搜索的文本Query replace:
。 - 输入你正在替换的文本并按
ENTER
。 - mini buffer将显示
Query replace your_search_term with:
。 - 输入你想要替换your_search_term的单词或短语并按
ENTER
。 - 每个匹配项将被突出显示,你将被提示进行替换。mini buffer将询问
Query replacing your_search_word with your_replacement_word: (C-h for help)
。 - 按
y
替换当前找到的匹配项。 - 按
n
跳过下一个匹配项。 - 按
q
退出而不进行任何替换。 - 按
!
进行全局替换,无需任何提示。mini buffer将输出此消息:replaced number occurrences
。
添加左、右和居中对齐
要居中一行,将光标移动到该行的开头,然后按META+O
,接着META+S
。
要对选定的文本区域进行对齐,请执行以下操作:
- 突出显示你想要对齐的文本。
- 按
META+X
。mini buffer将等待响应。 - 输入
set-justifiction-
并按TAB
键。 - 你将获得以下完成选项:
set-justification-center
、set-justification-left
、set-justification-right
、set-justification-none
和set-justification-full
。 - 完成对齐命令,选择
set-justification-right
或你的选择之一,然后按ENTER
。 - 选定的文本将根据你选择的方向进行对齐。
以下是分配给不同对齐设置的文本示例:
转换大小写
你可以使用几个不同的命令来转换大小写。以下是一些命令键的列表:
执行此功能 | 使用这些键 |
---|---|
将光标后的单词大写 | META+C (C代表大写) |
将单词转换为小写 | META+L (L代表小写) |
将单词转换为大写 | META+U (U代表大写) |
将段落转换为大写 | 块选择,然后CTRL+X CTRL+U |
将段落转换为小写 | 块选择,然后CTRL+X CTRL+L |
如果你要将整个段落或更多转换为大写或小写,你将获得一个新窗口和消息:
Window
You 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
。这是_switch buffer_命令。Emacs将提示你输入要切换的缓冲区名称。开始输入缓冲区名称myfile.txt
,然后按ENTER
。这将带你从Emacs教程到你指定的文件。
第5步 - 进入模式
进入主要模式
Emacs在UNIX社区被广泛采用的原因之一是其能够承担不同的模式。模式可以增强Emacs的功能。
根据选择的模式,Emacs可以被用作编写文本文件的文字处理软件,或者它可以被适应用于编写Python、
C或Java代码等高级任务。例如,你可以将Emacs的模式更改为使其适用于版本控制系统、运行shell命令或阅读man页面。
有两种不同类型的Emacs模式。一种叫做_major mode_。在主要模式下,Emacs可以被用作编程或脚本语言的集成开发环境(IDE)。在此模式下,程序提供专业功能,如颜色语法高亮、缩进和格式化、特定于语言的菜单选项,或自动与调试器和编译器接口。
为了演示,你可以使用Emacs编写一个“Hello World”应用程序。
在终端中并位于根目录下,输入以下命令:
cd ~
emacs hello.py
Emacs识别文件扩展名,并将启动Python模式。在主缓冲区中,输入以下Python代码:
print "hello world!\\n"
关键字现在用颜色语法高亮显示。还会注意到状态栏上方的mini buffer显示了你当前所在的模式。主菜单还有一个专门针对Python的条目:
使用CTRL+X
CTRL+S
保存缓冲区。
要从Emacs内部更改主要模式,请按META+X
。mini buffer将等待你的响应。然后你可以输入不同的模式。以下是一些主要模式的例子:
- c-mode
- python-mode
- java-mode
- html-mode
- perl-mode
- shell-script-mode
- text-mode
进入次要模式
与主要模式相比,_minor modes_提供更具体的功能。这些功能可以与特定的主要模式相关联,或者无论主要模式如何,都可以对系统范围产生影响。此外,与主要模式不同,可以同时启用多个次要模式。次要模式就像开关:有些默认启用,有些则没有。如果次要模式已经打开,调用它将关闭它。如果它关闭了,它将被切换回来。
设置对齐的选项就是次要模式的一个例子。
另一个次要模式的例子是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编辑器中的各种命令、编辑功能和模式。