作为一个新用户,您可能想要启动 Emacs 只是为了随便看看并试用一下。一旦您进入 Emacs 并想要退出,您可能不知道该怎么做。所以如果您以前从未使用过 Emacs,现在就试一下。在您的 shell 提示符下,输入 emacs
并按回车键。Emacs 应该会启动。如果没启动,那可能是它没有安装,或者不在您的路径中。
一旦您看到了 Emacs,您需要知道如何退出。离开 Emacs 的组合键是 C-x C-c
。C-x
表示按住 Ctrl
键并按下 x
键。在这种情况下,您还需要按住 Ctrl
键并按下 c
键来完成任务。
Emacs 中使用的组合键起初可能会让您觉得奇怪、陌生,甚至不舒服——尤其是如果您是 vi
用户。与 vi
不同,Emacs 没有用于编辑文本和发出命令的单独模式。
总结一下:emacs
将启动 Emacs。C-x C-c
将退出 Emacs。
当 Emacs 启动时,它将占用整个 X 窗口(或者如果您在控制台上而不是在 X 窗口系统 中运行,则占用整个屏幕)。您将在顶部看到一个菜单栏,屏幕的主要部分有一些文本,底部有几行。
它看起来会像这个 ASCII 示意图
+----------------------------------------------------------------------+ |Buffers Files Tools Edit Search Mule Help | | | |Welcome to GNU Emacs, one component of a Linux-based GNU system. | | | | | | | | ... | | | |---1:---F1 *scratch* (Lisp Interaction)--L1--All-------------| |For information about the GNU Project and its goals, type C-h C-p. | +----------------------------------------------------------------------+
注意: Emacs 通常会填满整个屏幕/窗口。我缩小了上面的示例以节省空间。当您第一次启动 Emacs 时,您还会看到欢迎信息。我也省略了欢迎信息,并用 ``...
'' 代替。欢迎信息只是标识您正在使用的 Emacs 的确切版本,并引导您使用在线帮助和相关项目。
Emacs 界面的最顶行是菜单。如果您正在运行 X,您会认出它们是传统的下拉菜单,您可以使用鼠标访问它们。否则,您需要使用键盘快捷键(此处未介绍)来访问菜单。
在 Emacs 界面的最后两行中,最上面的一行本质上是一个状态栏。它包含有关您正在使用的缓冲区、Emacs 处于哪种模式以及各种其他信息。现在,只需意识到它在那里即可。
最底行称为小缓冲区。它通过我们刚刚讨论的状态栏与主缓冲区分隔开。您可以将小缓冲区视为 Emacs 的“命令行”。您给 Emacs 的命令会出现在这里,并且您所做事情的响应状态消息也会在这里打印出来。
您会发现我所说的状态栏通常在 Emacs 相关文档中被称为模式行。Emacs 在这里显示有关您可能正在使用的当前模式以及当前日期和时间、行号、文件大小以及您可能想看到的几乎任何其他信息。
本节介绍您在使用和阅读 Emacs 相关内容时会遇到的大多数基本 Emacs 术语。
与某些编辑器不同,当您在 Emacs 中打开一个文件时,它不会在您使用它的整个过程中保持“打开”状态。相反,Emacs 将文件读入内存中的缓冲区。在您编辑缓冲区和处理数据时,磁盘上的任何内容都不会更改。只有当您实际保存缓冲区时,磁盘上的文件才会更新。这种方法有优点和缺点,但重要的是您要理解它是这样工作的。
因此,您将在 Emacs 文档、模式、包等中看到术语“缓冲区”。只需意识到缓冲区意味着“当前在内存中的文件副本”。哦,值得指出的是,缓冲区不必总是指磁盘上的特定文件。通常,Emacs 会创建缓冲区作为您运行命令的结果。这样的缓冲区可能包含命令的结果、要从中选择的选择列表等等。
在 Emacs 术语中,您经常会听到或看到对点的引用。一般来说,点就是光标。当您刚开始使用 Emacs 时,点和光标之间的实际区别可能并不重要。但如果您好奇,可以这样想。光标是点的可视化表示。光标始终“位于”当前缓冲区中的特定字符位置。另一方面,点位于缓冲区中字符之间的空间中。因此,您可能会说,如果光标位于单词“the”中的字母“h”上,则点位于“t”和“h”之间。
像许多现代编辑器一样,Emacs 允许对当前缓冲区的一部分执行操作(缩进、拼写检查、重新格式化、剪切、复制、粘贴...)。您可以使用键盘或鼠标高亮显示(或“标记”)一块文本,然后仅对选定的文本块执行操作。在 Emacs 中,该文本块称为区域。
好的,这对于任何曾经使用过 GUI 界面的人来说都会有点令人困惑。只需记住 Emacs 是在 GUI 界面和窗口管理器流行之前开发的。
Emacs 中的窗口是屏幕上显示缓冲区的区域。当 Emacs 首次启动时,您的屏幕上有一个窗口。一些 Emacs 功能(例如帮助和文档)通常会在您的 Emacs 屏幕中[临时]打开额外的窗口。
Emacs 窗口与 GUI 意义上的 X 窗口无关。您可以打开额外的 X 窗口来显示 Emacs 缓冲区,例如并排比较两个文件。这些新的 X 窗口在 Emacs 术语中被称为框架。继续阅读。
在 Emacs 中,框架是一个单独的 X 窗口,其中显示 Emacs 缓冲区。但两者都是同一 Emacs 会话的一部分。这种行为有点(但不太像)类似于您在 Netscape Navigator 中按 Alt+N 时发生的情况。
本节介绍 Emacs 的键盘操作基础知识。像每个强大的编辑器一样,您可以使用 Emacs 完成的所有操作都只需按几下键。
如果您是 vi
用户,那么使用 k, j, l, h
键来向上移动一行、向下移动一行、向前移动一个字符和向后移动一个字符的概念可能需要一些时间才能适应。事实上,您可能需要花费几个小时甚至几周的练习才能舒适地使用 vi
中提供的各种组合键来浏览文件。
Emacs 也没有什么不同。有不同的组合键和命令需要学习。就像 vi
一样,您只需要掌握基础知识就可以完成大量工作。然后,随着时间的推移,您可以慢慢扩展您的知识并找到更快的方法来做事。
正如您很快就会了解到的,Emacs 大量使用多键组合。因为它不是像 vi
这样的模式编辑器,所以您不必在尝试移动光标或执行命令之前考虑处于“命令模式”或“编辑模式”。相反,您只需按下正确的组合键,Emacs 就会按照指示执行(通常如此)。
Emacs 最常用的键通常在文档中缩写为 C
(表示 Control 或 Ctrl)和 M
(表示 Meta)。虽然大多数现代 PC 键盘都有一到多个标有 Ctrl
的键,但很少有标有 Meta
的键。您需要将 Meta 键在脑海中替换为 Esc
或 Alt
。在大多数标准配置中,Esc 和 Alt 的作用基本相同。
因此,当您在任何 Emacs 相关文档中看到对 C-x f
的引用时,它表示“按下 control-x 然后 f”。如果您看到对 M-x shell
之类的引用,则表示“按下 alt-x 并输入单词 shell”。
对于初学者来说,一个非常有用的命令是 M-x apropos
或 C-h a
。apropos 将在 Emacs 在线文档中搜索所有函数,并搜索您键入的正则表达式。这是发现所有与框架相关的命令的好方法。只需 C-h a
然后 frame
即可。
现在您已经知道所有这些花哨的缩写意味着什么,这里列出了在缓冲区中移动的最常用组合键
Keystrokes Action ----------------------------------- C-p Up one line C-n Down one line C-f Forward one character C-b Backward one character C-a Beginning of line C-e End of line C-v Down one page M-v Up one page M-f Forward one word M-b Backward one word M-< Beginning of buffer M-> End of buffer C-g Quit current operation -----------------------------------
而且,正如您可能期望的那样,光标键(或方向键)通常可以像您期望的那样工作。您的 退格键
可能不行。那是另一个故事了。:-(
好的,现在您知道如何在缓冲区中移动了,那么打开和保存文件呢?搜索呢?这里有一些基本命令。
在我们直接跳到这些命令之前,我需要简要指出它是如何工作的。
Emacs 中所有“命令组合键”(那些 M-x something
或 C-something
)实际上只是 Emacs 函数的快捷方式。您可以通过键入 M-x 函数名
并按 Enter
键来调用任何这些函数。您也可以使用该函数的键盘快捷键(如果有)。
例如,将缓冲区保存到磁盘的 Emacs 函数称为 save-buffer
。默认情况下,它也绑定到 C-x C-s
。因此,您可以使用快捷键来保存当前缓冲区,也可以键入 M-x save-buffer
并获得完全相同的结果。
所有最常用的函数默认都有键盘快捷键。下面列出了一些。
Keystrokes Function Description ------------------------------------------------------------------- C-x C-s save-buffer Save the current buffer to disk C-x u undo Undo the last operation C-x C-f find-file Open a file from disk C-s isearch-forward Search forward for a string C-r isearch-backward Search backward for a string replace-string Search & replace for a string replace-regexp Search & replace using regexp C-h t help-with-tutorial Use the interactive tutorial C-h f describe-function Display help for a function C-h v describe-variable Display help for a variable C-h x describe-key Display what a key sequence does C-h a apropos Search help for string/regexp C-h F view-emacs-FAQ Display the Emacs FAQ C-h i info Read the Emacs documentation C-x r m bookmark-set Set a bookmark. Useful in searches C-x r b bookmark-jump Jump to a bookmark. -------------------------------------------------------------------
当您尝试其中许多功能时,您会注意到许多功能会提示您输入。它们总是在小缓冲区中执行此操作。这类似于使用 vi
中的 :
命令或您在您最喜欢的 Unix shell 中使用的大多数命令。
Emacs 实际上有数百个内置函数可用。上面的列表只是一个很小的样本,代表了我经常使用的那些函数。有关可用函数的更完整列表以及有关我上面提到的函数的更完整文档,请参阅在线帮助。
像许多流行的 Unix shell(bash、csh、tcsh...)一样,Emacs 通过 Tab
键提供命令补全。事实上,bash 中的命令补全是以 Emacs 中的命令补全为模型的,所以如果您在 bash 中使用该功能,您会感到宾至如归。
例如,尝试 M-x search
然后按 Tab
键。Emacs 将附加一个连字符,以表明有几种可能的补全,但它们都以连字符作为下一个字符。再次按 Tab
键,Emacs 将显示一个可能的匹配列表供您选择。请注意,它在一个新窗口中执行此操作。它暂时将您的显示分成两个窗口:一个窗口包含您正在编辑的缓冲区,另一个窗口包含“search-”的可能补全列表。您可以按 C-g
退出选择过程并关闭新窗口。
Emacs 自带一个在线教程,它将引导您了解每个人都应该知道的基本编辑功能和函数。它还解释了如何在 Emacs 中使用其他帮助功能。
如果您计划认真学习 Emacs,我强烈建议您花一些时间学习教程。如上表所示,您可以通过 C-h t
进入教程。该教程是自导式的,旨在帮助刚开始入门 Emacs 的人。
如果您在 X 中运行 Emacs,您将看到菜单栏最右边的菜单标记为“帮助”。当您探索“帮助”菜单时,请注意某些项目具有键盘快捷键,这些快捷键直接列在菜单中。
最后,要查看 Emacs 提供的文档量,您应该尝试 M-x info
或 C-h i
,这将启动 Info,Emacs 文档浏览器。