刘嵩的小站 神様は乗り越えられる試練しか与えない。

Emacs 基本操作从开始到放弃

2017-06-01

重新hack一遍tutorial,体验一下从开始到放弃。

窗格(WINDOWS)

Emacs 可以有多个窗格,每个窗格显示不同的文字。后面会介绍怎么对付多个窗格,现在我们先学会如何关掉多余的窗格。其实也很简单:

C-x 1 只保留一个窗格(也就是关掉其它所有窗格)。

也就是先按 CONTROL-x 然后再按 1。C-x 1 会保留光标所在的窗格,并将其扩大到整个屏幕,同时关掉所有其它的窗格。

把光标移到本行然后输入 C-u 0 C-l。

输入 CONTROL-h k CONTROL-f。观察当一个新窗格出现时当前窗格(用来显示CONTROL-f 命令的文档)是如何缩小的。

输入 C-x 1 关掉文档窗格。

这个命令跟先前学过的命令不太一样,因为它包含了两个字符,以 CONTROL-x 开始。有一系列命令都是以 CONTROL-x 开始的,这些命令许多都跟“窗格、文件、缓冲区【缓冲区(buffer)会在后文详细介绍】”等等诸如此类的东西有关,其中有些命令可能包含了 2 个、3 个或者 4 个字符。

文件(FILE)

想保存工作成果就要记得存盘,否则一旦退出 Emacs 你编辑的文字就会丢失。要存盘,就要在编辑前“寻找”到一个存盘文件。(这个过程通常也被称为“访问”文件。)

寻找到一个文件意味着你可以在 Emacs 里查看这个文件的内容。从许多角度看,这就等于你在直接编辑这个文件,只是你所做的修改只有在“存盘”的时候才会被写入文件。也正因为如此,你可以丢弃一个写到一半的文件而不必把这个残缺文件也保存到计算机上。在存盘的时候,Emacs 会把存盘前的文件重命名保存,以防你改完之后又想反悔。

在屏幕的下方,你应该能够看到头尾都是短线“-”的一行,行首通常是一些诸如“–:– TUTORIAL.cn”的文字,这些文字代表了你当前正在访问的文件。比如你现在正在访问的文件叫“TUTORIAL.cn”,它只是一个给你临时使用的拷贝。每当Emacs 寻找到一个文件,文件名就会出现在这个位置。

寻找文件的命令有一个特点,那就是你必须给出文件名。我们称这个命令“从终端读入了一个参数”(在这里,这个参数显然就是文件名)。在你输入这条命令之后:

C-x C-f 寻找一个文件

Emacs 会提示你输入文件名。你输入的文件名会出现在屏幕最底端的一行,这一行被称为小缓冲(minibuffer),在小缓冲里你可以使用通常的 Emacs 编辑命令来编辑文件名。

在小缓冲里输入文件名(其实输入其它东西也一样)时可以用 C-g 取消。

输入 C-x C-f,然后输入 C-g这会关掉小缓冲,同时也会取消使用小缓冲的 C-x C-f 命令。当然了,你也没有找任何文件。

结束文件名的输入。这之后 C-x C-f 命令开始工作并找到你指定的文件。小缓冲在 C-x C-f 命令结束之后也会消失。

眨眼间文件就被显示在屏幕上,你可以开始编辑了。存盘用这条命令:

C-x C-s 储存这个文件

这条命令把 Emacs 中的文字存储到文件中。第一次存盘的时候 Emacs 会将原文件重命名以备份。重命名的规则通常是在原文件名之后添加一个“~”字符。【对许多人来说,这是一个烦人的特性,关掉文件备份可以用如下命令: M-x customize-variable make-backup-files

存盘结束后,Emacs 会显示写入文件的文件名。你最好养成经常存盘的习惯,这可以减少系统崩溃和死机给你带来的损失。

输入 C-x C-s 把本快速指南存下来。你会在屏幕的下方看到一条消息:“Wrote …TUTORIAL.cn”。

注意:在某些终端下,输入 C-x C-s 会冻结屏幕【屏幕没有任何输出】,使你看不到 Emacs 的任何变化。其原因是操作系统的“流量控制”功能拦截了 C-s 并冻结了屏幕。用 C-q 可以解除屏幕冻结。要解决这个问题,请参考 Emacs 手册里的“Spontaneous Entry to Incremental Search”一节【Emacs 手册可能还没有中文翻译】,那里提供了一些有用的建议。

你不但可以寻找一个已有的文件来查看或编辑,还可以寻找一个不存在的文件。实际上这正是 Emacs 创建新文件的方法:找到不存在的新文件。只有在存盘的时候,Emacs 才会真正创建这个文件。而在这之后的一切就跟编辑一个已有文件没有区别了。

缓冲区(BUFFER)

你可以用 C-x C-f 找到并打开第二个文件,但第一个文件仍然在 Emacs 中。要切回第一个文件,一种办法是再用一次 C-x C-f。这样,你就可以在 Emacs 中同时打开多个文件。

用 C-x C-f foo 的方式建立一个名为“foo”的文件。输入一些文字,再用 C-x C-s 保存文件“foo”。最后,输入 C-x C-f TUTORIAL.cn 回到这里。

Emacs 把每个编辑中的文件都放在一个称为“缓冲区(buffer)”的地方。每寻找到一个文件,Emacs 就在其内部开辟一个缓冲区。用下面的命令可以列出当前所有的缓冲区:

C-x C-b 列出缓冲区

现在就试一下 C-x C-b

观察一下缓冲区是如何被命名的,它很可能跟与其对应的文件同名。实际上,一个 Emacs 窗格里的任何文字都是某个缓冲区的一部分。

输入 C-x 1 离开缓冲区列表。不管存在多少缓冲区,任何时候都只能有一个“当前”缓冲区,也就是你正在编辑的这个。如果你想编辑其它的缓冲区,就必须“切换”过去。上面讲过,用C-x C-f 是一种办法。不过还有一个更简单的办法,那就是用 C-x b。用这条命令,你必须输入缓冲区的名称。

输入 C-x b foo 以回到文件“foo”的缓冲区。然后输入 C-x b TUTORIAL.cn 回到这里。

大多数情况下,缓冲区与跟其对应的文件是同名的(不包括目录名),不过这也不是绝对的。用 C-x C-b 得到的缓冲区列表总是显示缓冲区名。

你在 Emacs 窗格里看到的“任何”文字都一定属于某个缓冲区。然而,缓冲区未必有对应文件:比如显示缓冲区列表的缓冲区就是这样。再比如“Messages”缓冲区也没有对应文件,这个缓冲区里存放的都是在 Emacs 底部出现的消息。

输入 C-x b Messages 瞅瞅消息缓冲区里都有什么东西。然后再输入 C-x b TUTORIAL.cn 回到这里。

如果你对某个文件做了些修改,然后切换到另一个文件,这个动作并不会帮你把前一个文件存盘。对第一个文件的修改仍然仅存在于 Emacs 中,也就是在它对应的缓冲区里。并且,对第二个文件的修改也不会影响到第一个文件。这很有用,但是也挺麻烦:因为如果你想要存储第一个文件,还需要先 C-x C-f 切换回去再用 C-x C-s 存盘。你需要一个更简便的方法,而 Emacs 已经为你准备好了:

C-x s 保存多个缓冲区,C-x s 会找出所有已被修改但尚未存盘的缓冲区,然后向你逐个询问:是否需要存盘?

插入一行文字,然后输入 C-x s。它应该会问你,是否要储存名为 TUTORIAL.cn 的缓冲区?按“y”告诉它你想存盘。

  • 多窗格(MULTIPLE WINDOWS)

Emacs 的迷人之处很多,能够在屏幕上同时显示多个窗格就是其中之一。

移动光标到这一行,然后输入 C-u 0 C-l。

现在输入 C-x 2,它会将屏幕划分成两个窗格。这两个窗格里显示的都是本篇快速指南,而光标则停留在上方的窗格里。

试试用 C-M-v 滚动下方的窗格。(如果你并没有 META 键,用 ESC C-v 也可以。)【向上滚动是 C-M-S-v,也就是同时按住 CONTROL、META 和 SHIFT 再按 v】

输入 C-x o(“o”指的是“其它(other)”),将光标转移到下方的窗格。

在下方的窗格中,用 C-v 和 M-v 来滚动。同时继续在上方的窗格里阅读这些指导。

再输入 C-x o 将光标移回到上方的窗格里。光标会回到它在上方窗格中原本所在的位置。

连续使用 C-x o 可以遍历所有窗格。每一个窗格都有它自己的光标位置,但是只有一个窗格会真正显示这个光标。【其它窗格在控制台下不会显示光标,在图形窗口下缺省显示为镂空光标。】一般所有的编辑命令都作用于这个光标所在的窗格,我们称这个窗格为“被选中的窗格”。

当你在一个窗格中编辑,但用另一个窗格作为参考的时候,C-M-v 是很有用的命令。你可以始终处于编辑窗格中,然后用 C-M-v 命令滚动另外一个窗格。【比如翻译和校对就很适合用这种方式进行。】

C-M-v 是一个 CONTROL-META 组合键。如果你有 META 键的话,可以同时按住CONTROL 和 META 键并输入 v。CONTROL 和 META 键先按哪个都可以,因为它们只是用来“修饰(modify)”你输入的字符的。

如果你并没有 META 键,你也可以用 ESC 来代替,不过这样的话就要注意按键顺序了:你必须先输入 ESC ,然后再输入 CONTROL-v。CONTROL-ESC v 是没用的,因为 ESC 本身是一个字符键,而不是一个修饰键(modifier key)。

(在上方窗格里)输入 C-x 1 关掉下方窗格。

(如果你在下方的窗格里输入 C-x 1,那么就会关掉上方的窗格。你可以把这个命令看成是“只保留一个窗格”――就是我们正在编辑的这个。)

不同的窗格可以显示不同的缓冲区。如果你在一个窗格里用 C-x C-f 打开了一个文件,另一个窗格并不会发生什么变化。任何一个窗格里都可以用来打开文件。

用下面的方法可以在一个新开窗格里打开文件:

输入 C-x 4 C-f,紧跟着输入一个文件名,再用 结束。可以看到你指定的文件出现在下方的窗格中,同时光标也跳到了那里。

输入 C-x o 回到上方的窗格,然后再用 C-x 1 关掉下方窗格。


相似文章

上一篇 Linux 目录说明

内容导航