如何在 Linux 中使用 Emacs 编辑器

介绍

Emacs是最古老和最多功能的文本编辑器之一。GNU Emacs版本最初写于1984年,以其强大而丰富的编辑功能而闻名。它可以用不同的 modes 进行定制和扩展,允许它作为一个集成开发环境(IDE)用于 Java、C 和 Python 等编程语言。

对于那些已经使用了Vi和用户友好的纳米文本编辑器的人来说,Emacs将自己呈现为一个中间。其优势和功能类似于Vi,而其菜单,帮助文件和命令键与nano进行比较。

在本文中,您将学习如何在Ubuntu 22.04 服务器上安装 Emacs,并将其用于基本的文本编辑。

前提条件

要遵循本教程,你需要一个 Ubuntu 22.04 服务器,安装一个非root 用户,具有sudo权限和启用防火墙。

步骤1:安装 Emacs

首先,检查您的系统是否已经安装了 Emacs:

1emacs

如果安装了该程序,编辑器将以默认的欢迎消息开始,否则您将收到以下输出:

1[secondary_label Output]
2Command 'emacs' not found, but can be installed with:
3sudo apt install e3           # version 1:2.82+dfsg-2
4sudo apt install emacs-gtk    # version 1:27.1+1-3ubuntu5
5sudo apt install emacs-lucid  # version 1:27.1+1-3ubuntu5
6sudo apt install emacs-nox    # version 1:27.1+1-3ubuntu5
7sudo apt install jove         # version 4.17.3.6-2
8See 'snap info emacs' for additional versions.

要安装 Emacs,请使用以下命令:

1sudo apt install emacs

在您的机器上安装 Emacs 后,您已经准备好进入下一步。

步骤 2 - 使用界面

通过在您的终端发出emacs命令来启动 Emacs:

1emacs

Emacs 以空的编辑缓冲器开始,并等待您开始键入。

Emacs welcome message

要启动新文件,请按TAB按下Visit New File链接,然后按ENTER。您还可以按CTRL+X,然后按CTRL+F创建新文件。

A prompt appears at the bottom of the Emacs window asking for a file name.

输入一个文件名以开始文本编辑. 在下面的例子中,使用了myfile.txt。你可以随心所欲命名此文件。一旦输入了文件名,请按ENTER来继续。

一个空的文件将为文本输入做好准备:

Empty file appears after entering a file name.

在屏幕的顶部有一个菜单. 菜单之后,有一个大的编辑空间. 这被称为 _main 缓冲器,您可以输入文本或查看文件的内容。

当 Emacs 编辑磁盘上的现有文件时,该文档的副本首先被加载到内存中,然后显示在主要编辑窗口中。内存中的这个区域称为 buffer. 当您通过文档工作时,您在编辑空间中所做的所有更改都适用于缓冲器,而磁盘上的原始文件保持不变。

主缓冲器后,屏幕底部会显示一个突出的文本栏,称为 status barmode line. 此处显示的文本取决于 Emacs 目前处于哪种模式。

*当前文件的名称

  • 当前路由器位置
  • 当前编辑模式
  • 文件的状态(-- 对于未修改的文件, ** 对于未保存的更改的文件和 %% 对于只读的文件)

最后,在屏幕结束的状态栏后,有一个单一的空间行。在本示例中,它显示了文本(新文件)。这个区域被称为 _mini 缓冲器。Emacs 是一个命令驱动的工具,而 mini 缓冲器是您的主要交互点。

Emacs 基于文本的版本与其基于 GUI 的版本不同,与基于 GUI 的应用程序不同,基于文本的 Emacs 窗口不会出现,因为它们在终端或控制台会话中无法物理地这样做。当 Emacs 需要启动新窗口时,其主要缓冲器被分为两部分,例如在浏览器中有两个框架。上半部分显示主缓冲器,而下半部分显示新内容。

访问菜单

当 Emacs 启动时,它通常会占用整个屏幕,其大部分功能都可以从位于屏幕顶部的菜单栏访问。

与基于GUI的程序不同,基于文本的菜单不能通过鼠标点击落下,事实上,您不能用快捷键突出并滚动菜单。

若要访问菜单,请按F10键,在主缓冲器下打开另一个窗口,并显示一个键列表,以便访问菜单项目。小缓冲器将提示您输入所需的键。

要退出菜单,无论你有多深,请按ESC键三次,这通常会关闭菜单窗口并将你带回主缓冲器。

以下是从工具菜单中提供的一些选项:

  • 日历
  • 简单的计算器
  • 可编程的计算器
  • 搜索目录
  • 加密和解密文档
  • 发送和阅读电子邮件
  • 使用 grep 搜索文件
  • 拼写检查
  • 运行壳命令和编译代码
  • 版本控制
  • 比较和合并文件
  • 游戏

获取帮助 & 教程

Emacs 拥有广泛的帮助系统和教程,您可以使用菜单按F10,然后按箭头键来选择帮助,然后按CTRL+H按相应的键,例如,您可以在按CTRL+H后输入以下键之一,查看常见问题、教程、新闻和其他主题:

  • t 要输入 Emacs 教程
  • CTRL+F 需要一个 FAQ
  • CTRL+P 要了解已知的错误和问题
  • CTRL+R 要阅读 Emacs 手册
  • CTRL+E 要找到额外的包

步骤 3 - 使用命令键

现在你已经熟悉了用户界面,你可以开始熟悉Emacs的命令键,当你打开一个文件时,你可以同时开始键入和发出命令。

命令函数通常涉及两个或三个键。最常见的是CTRL键,然后是ALTESC键。CTRL在Emacs环境中以简短的形式显示为C。在Emacs中的注释如C-x C-c,意味着你将CTRL+X键按在一起,然后按CTRL+C。类似地,C-h t意味着按CTRL+H,然后释放两个键并按t

ALTESC 键在 Emacs 中被称为 meta 键。在 Apple 机器上,使用ALT代替OPTION键。 其他键盘使用EDIT键。 类似于CTRL键,Emacs 使用与 meta 键的多键函数。 例如,像M-x这样的符号意味着您将ALTOPTIONx按在一起。

ENTER键在Emacs中显示为RET,即返回的缩写,而ESC键通常显示为E

可以使用ESC键来退出命令或提示,例如,您可以多次按ESC来退出特定菜单,另一种取消操作的方法是按CTRL+G

节省和放弃

一旦你对文档做了一些更改或写了一些文本,你可以通过按CTRL+X来保存它,然后是CTRL+S

1[secondary_label Output]
2Wrote /home/sammy/myfile.txt

您可以通过按CTRL+X来退出 Emacs,然后按CTRL+C

如果它在退出之前没有手动保存文件,则会收到此消息:

1[secondary_label Output]
2Save file /home/sammy/myfile.txt? (y, n, !, ., q, C-r, C-f, d or C-h)

Y来保存文件。

如果您按N,您将收到以下消息:

1[secondary_label Output]
2Modified buffers exist; exit anyway? (yes or no)

输入以退出而不储蓄。

导航文本

导航长的文档或帮助主题可能是一项艰巨的任务. 幸运的是,在 Emacs 中,导航文件的方法有很多。

以下是一些常见的导航功能的列表:

若要执行此函数, 使用这些键

Moving to the next line

请记住,META意味着您可以使用以下任何键:ALT,ESC,OPTIONEDIT

步骤4:编辑功能

如果您需要执行与流行的文本处理器共同的更专门的任务,例如选择或突出文本文件的特定部分,您可以在 Emacs 中完成此操作。

标记文本区域

要选择一个文本区域,请执行以下步骤:

  • 将路由器移动到您希望选择开始的位置. 您可以使用上述任何方法移动路由器。
  • CTRL+SPACEBARCTRL+@来设置标记,以便开始突出文本。 迷你缓冲器将显示启用标记的状态信息。
  • 将路由器移动到您希望该区域结束的位置。 使用之前描述的任何关键组合。
  • 文本将突出到您的路由器现在所在的位置。

或者,就像一个单词处理器一样,你可以拿起SHIFT键,然后用键盘上的UPDOWN箭头键移动指针,以便进行选择。

如果你想选择你的方程式当前位置的段落,请按META+H

如果要选择主缓冲器的所有内容(即选择所有内容),请按CTRL+X,然后按h

剪切、复制和粘贴文本

类似于单词处理器,您可以复制、切割和粘贴文本:

  • 若要复制您选择的文本,请按META+W
  • 若要切断文本选择,请按CTRL-W
  • 若要粘贴文本选择,请按CTRL-Y

删除文本

使用后置删除键来删除文本的工作方式是您希望的。

要快速删除一个完整的单词,移动指针到一个单词的开始,然后按META+D

若要删除整个行,请将指针放在您想要的位置,然后按CTRL+K

若要删除一个句子,请按META+K。请注意,如果在完全停止之后没有两个空格,Emacs 会删除一个或多个整行。

反复和反复

您可以通过按CTRL+X然后按u来取消最后的操作,另一种密钥组合是CTRL+_(在这里按下密钥将是CTRL,SHIFT-来执行低分)。

要恢复最后的取消,请按CTRL+G,然后按CTRL+_

搜索和替换文本

Emacs 中有两种搜索方向:向前和向后. 在向前搜索中,您指定的单词将从当前标记位置向前搜索。

  • 按「CTRL+S」進行前進搜尋,然後輸入您正在搜尋的文本到小型缓存提示.
  • 按「CTRL+R」進行後方搜尋。

在您输入搜索术语后,Emacs 会搜索它并突出显示它在主缓冲器中发现的任何匹配。

例如,在文本文件中搜索一词将以突出文本形式显示主缓冲器中的每个发生:

The word 'cat' is highlighted after inputting the search term 'cat' in a forward search in the mini-buffer.

若要更换文本,请按照以下步骤:

  • META+%. 迷你缓冲器会提示要用 Query 替换: 搜索的文本。
  • 输入你正在替换的文本并按 ENTER.
  • 迷你缓冲器会显示 Query 用: 替换 your_search_term.
  • 输入你想要用你的_search_term 替换的单词或短语。
  • ENTER.
  • 每场比赛都将被突出,你将收到一个提示来替换。 迷你缓冲器会要求 `Query 用你的_search_word 替换你的_placement_word: (C-h 以帮助

添加左、右和中心对齐

要将一行中心化,将方针移动到该行的开始,然后按META+O,然后按META+S

若要证明一个选定的文本区域,请执行以下操作:

  • 突出您想要证明的文本。
  • META+X。小缓冲器将等待响应。
  • 输入set-justification-noneset-justification-full并按TAB键。
  • 您将收到以下完成选项:set-justification-center,set-justification-left,set-justification-right,set-justification-noneset-justification-full

以下是分配给不同解释设置的文本的示例:

An example of selecting the text in Emacs. The first section reveals that the text is selected. The second section reveals text justified to the right. The next section is justified to the left. The last section reveals a centered justification of the text.

转换案例

您可以使用几种不同的命令转换容器. 以下是某些命令密钥的列表:

要执行此函数, 使用这些键

将一个词转换为 lowercase

如果您正在将一个完整的段落或更多段落转换为上文或下文,您将收到一个新的窗口和消息:

1[secondary_label Window]
2You 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.

A message inside your Emacs instance after pressing the <code>CTRL+X</code> and <code>CTRL+L</code> keys to convert a paragraph to lowercase.

继续按上上面提到的键。

管理 Windows

在 Emacs 中管理窗口可以帮助您更有效地处理文件。

例如,从主缓冲器切换到 Emacs 教程,然后按CTRL+h,然后按t。 您的主要缓冲器窗口现在是 Emacs 教程。 如果您想重新切换到myfile.txt缓冲器,请按CTRL+X,然后按b。 这是 switch buffer 命令。 Emacs 将提示您切换缓冲器名称。 开始键入缓冲器名称,‘myfile.txt’,然后按ENTER

步骤5 - 进入模式

进入一个主要的时尚

Emacs 在 UNIX 社群中被广泛采用的原因之一是因为它可以采用不同的模式,一个模式可以增强 Emacs 的功能。

根据所选择的模式,Emacs 可以用作文本文件编写的文本处理器,也可以用于编写 Python、C 或 Java 代码等高级任务,例如,您可以更改 Emacs 模式以使其与版本控制系统工作,运行壳命令或阅读 man 页面。

Emacs 模式有两种不同的类型,其中一种叫做 _major 模式。在主要模式中,Emacs 可以作为一个集成开发环境(IDE)来编程或编写脚本语言。在这种模式下,该程序提供专门的功能,如颜色语法突出,插入和格式化,语言特定的菜单选项,或与调试器和编译器的自动接口。

为了演示,你可以使用Emacs在Python中写一个Hello World应用程序。

在您的终端和根目录中,输入以下命令:

1cd ~
2emacs hello.py

Emacs 会识别文件扩展并在 Python 模式下启动,然后在主缓冲器中输入以下 Python 代码:

1print "hello world!\n"

关键字现在以色彩语法突出表示。 另外,请注意,小缓冲器上方的状态行显示了您目前处于的模式。

Inside the Emacs main buffer, the edited Python code has color syntax-highlighting and reveals that it is in Python mode in the status line. The main menu includes a 'Python' selection.

将缓冲器保存为CTRL+X``CTRL+S

要在 Emacs 中更改主模式,请按META+X。小缓冲器将等待您的响应,然后您可以输入不同的模式。

  • c 模式
  • Python 模式
  • java 模式
  • HTML 模式
  • Perl 模式
  • shell-script 模式
  • 文本模式

进入小型模式

与主要模式相比, minor modes 提供更具体的功能. 这些功能可以绑定到特定的主要模式,或具有全系统效应,而不论主要模式。 此外,与主要模式不同,随时可能有多个较小的模式有效。 较小的模式就像开关:有些是默认启用,有些不是。

一个小模式的例子是以前的示例中使用的设置理由的选项。

另一个小模式的例子是自动填充模式。要在 Emacs 编辑器中输入此模式,请按META+X键,然后输入自动填充模式

此模式允许一行文本在其长度超过 70 个字符时打破并包裹到下一行。 请记住,当您调用小型模式时,它非常像一个转换开关。

以下是一些更小的模式的例子:

  • 自动保存模式:此功能将自动保存属性转移,该属性会定期将主缓冲器的内容保存在场景后面。
  • line-number-mode:此功能将当前行号显示在状态栏中。
  • linum-mode:将行号显示在窗口的左边。
  • column-number-mode: 显示状态栏中的路标的当前位置。
  • overwrite-mode: 这就像在键盘上按下‘INS’键。

结论

在本教程中,您了解了 Emacs 中的各种命令、编辑功能和模式。

为了进一步了解 Emacs 编辑器,GNU Emacs 网页包含大量信息,包括其他资源的链接,如 Emacs Wiki

Published At
Categories with 技术
comments powered by Disqus