1、【Linux 】Emacs 教程中文版 Emacs 的命令通常 包括控制键( 就是上面标有 Ctrl 或Ctl 的那个)或者是 META 键(上面标有 EDIT 或 ALT)。为了方便起见我们将用下面的缩写来代替这些键的全称: C- 意思是当敲入字符 时同时按住控制键,因此,C-f 表 示:按住控制键并且按 f 。 M- 表示当键入 时按住 META或 ALT 或 EDIT 键。如果没有 META 或 ALT 或EDIT 键,则用 ESC键代替。 表示 ESC键 注意:退出 Emacs,按 C-x C-c(两个字符 )。在文本左边区域的“”符号表示让你试着使用一个命令。比如: 现在键入 C-v
2、(观看下一屏)移动到下一屏。(就象前面说的,按 v 的同时也按住控制键)。从现在开始,每当你读完一屏的时候都可以用它来翻屏。 注意在翻屏后会保留上屏的最后一行;这是为你继续阅读文本提供某些连贯性。 你所需要知道的第一件事是如何把光标从一个地方移动到另一个地方。你已经知道了如何向前翻一屏-用 C-v。要向后翻一屏,键入 M-v。 试着键入 M-v 和 C-v 几次。 * 摘要(SUMMA RY) - 下面几个命令对整屏观看时有用: C-v 向前翻一整屏。 M-v 向后翻一整屏。 C-l 清除屏幕并重新显示所有的文本,然后把光标移动到屏幕的中央。 (注意是 Control-L,而不是 Contro
3、l-1)。 寻找光标,并且注意它在文本里的位置。然后键入 C-l。再寻找光标你会注意到光标现在会出现在同样的文本附近。* 基本光标控制(BASIC CURSOR CONTROL) - 整屏整屏的移动是很有用的,可是如何把光标移动到屏幕上文本里的一个指定的地方呢? 有好几个方法可以实现。最基本的方法是用命令 C-p,C-b,C-f ,和 C-n。这些命令每个都使光标在屏幕上往特定的方向移动一行或者一列。下面是一个图表显示了这四个命令和它们所移动的方向: 上一行,C-p : : 向前,C-b 当前光标的位置 向后,C-f : : 下一行,C-n 用 C-n 或 C-p 把光标移动到图表中间。然后键
4、入 C-l 会看到整个图表出现在屏幕的中央。 你也许会发现这些字母很容易记住:P 代表上面的(previ ous),N 代表下一个 (next),B 代表向前(backward),F 代表向后(forward)。这些是基本的光标位置命令,你将经常会用到它们。所以现在学习它们很有好处。 用几次 C-n 把光标向下移动到这一行。 用 C-f 把光标移动到行里,再用 C-p 把光标上移。观察当光标在行的中间时 C-p 做了些什么。 每一个文本行都以一个换行符结尾,它用来当作行与行之间的分格。你的文件的最后一行的尾部应该有一个换行符(但Emacs 并不要求一定要有一 个) 。 试着在行的开头使用 C-
5、b。它将会把光标移到上一行的末尾。这是因为它向后移的时候穿过了换行符。 C-f 也能象 C-b 一样穿过换行符。 使用几次 C-b,使您能知道光标在哪。然后用 C-f 移动到行的末尾。然后再用一次 C-f,使光标移动到下一行。 当你移动超过屏幕的顶部或底部,光标回移动到下一屏的中间,这叫做“滚屏 (scrolling)”。它使得 Emacs 滚屏移动到文本上指定的部位而不是移出屏幕。 试着用 C-n 把光标移过屏幕的底部,看看回发生什么。 如果觉得一个一个字符的移动太缓慢,可以一个单词一个单词的移动。M-f(Meta-f) 向前移一个单词,M-b 向后移一个单词。 键入几个 M-f 和 M-b
6、。 当光标在一个单词的中间,M-f 移动到单词的末尾。当光标在两个单词间的空白部分 M-f 移动到后一个单词的末尾。M-b 与 M-f 一样,只是移动的方向相反。 键入 M-f 和 M-b 几次,中间穿插一 些 C-f 和 C-b 以使你能观察到 M-f 和 M-b 在单词中和单词间的不同行为。 注意比较 C-f,C-b 与 M-f,M-b。通常情况下Meta 键用于有关语言单位(词,句,段落) 的操作;而控制键用于编辑时的基本单位(字符,行等 )。 这是句与行的比较:C-a 和 C-e 移动到一行的开头和末尾,M-a 和 M-e 移动到一个句子的开头和末尾。 键入一对 C-a,再键入一对C-
7、e。 键入一对 M-a,再键入一对M-e。 你会看到重复键入的 C-a 什么也不做,而重复键入的 M-a 则会移动一个以上的 句子。 光标在文本中的位置也叫“点(point )”。在段落里,光标标示出了点在屏幕上文本里的位置。 下面是简单的光标移动命令的总结,包括单词和句子的移动命令: C-f 向前移动一个字符。 C-b 向后移动一个字符。 M-f 向前移动一个单词。 M-b 向后移动一个单词。 C-n 移动到下一行。 C-p 移动到上一行。 C-a 移动到行首 。 C-e 移动到行尾。 M-a 向前移动到句子的开头。 M-e 向后移动到句子的末尾。 试着对每一个命令都实践几次,它们都是经常要
8、用到的命令。 另外两个重要的光标移动命令是 M- (Meta 大于)它移动光标到整个文本的末尾。 在多数终端上,“ 现在就试试M-,移动到本教程的末尾,然后再用 M-v 移回这里。 你也可以用方向键来移动光标,如果你的终端有方向键的话。我们建议学习 C-b, C-f,C-n 和 C-p 有三个原因。第一,它们能在所有类型的终端上工作。第二,你获得了使用 Emacs 的锻炼,你将会发现 输入这些 CTRL 加字符比按方向键要快(因为你不必 把你的手从键盘上移开) 。第三,一旦你养成了使用这些CTRL 加字符的命令的习惯,你就能一样容易的学习其他高级的光标移动命令。 大多数 Emacs 命令接收一
9、个数字参数;对大多数命令来说,这表示命令重复的次数 。输入重复命令次数的方法是在输入命令之前按C-u 和数字。如果你有 META(或 EDIT或 ALT)键,则有另一种方法输入数字参数:在按住 META 键的时候输入数字,我们建议学习 C-u 方法,因为它能在任何终端上工作。 例如,C-u 8 C-f 向前移动 8个字符。 试着使用带数字参数的C-n 或 C-p,只用一个命令就把光标移动到与本行相邻的 行上。 绝大多数命令把数字参数当作重复次数,但也有几个例外。C-v 和 M-v 就是。当给出一个参数,只是上滚或下滚数字指定的行数而不是屏数。比如,C-u 4 C-v 滚动 4 行屏幕。 现在试
10、试 C-u 8 C-v。 这将使屏幕滚动 8 行,如果你想往回滚动的话,键入一个带参数的 M-v。 如果你正在使用 X 窗口,在 Emacs 窗口的左 手边有一个叫做滚动条的矩形区域 。你能通过用鼠标点击滚动条来滚动文本。 试着在滚动条顶部的高亮区域点击中键。这将使文本滚动,滚动的位置取决于 你点击的长短。 试着按住鼠标中键上移或下移鼠标,你将看到当你移动鼠标时文本会上下滚动。 * 当 EMACS 挂起时(WHEN EMACS IS HUNG) - 当 Emacs 停止响应 你的命令时,你能用 C-g 把它安全的停止。当一个命令 执行了太长的时间时你可以用 C-g 把它终止。 你也可以用C-g
11、 来取消数字参数和输入后又不想执行的命令。 键入 C-u 100 产生一个值为 100 的数字参数,然后按 C-g。再按 C-f。它只会移动 一个字符,因为你用 C-g 取消了参数。 如果错误的输入了一个 ,你能用 C-g 消掉它。 * 禁止命令(DISABLED COMMAND) - 一些 Emacs 命令是“禁止”的,所以新手不会因偶然而执行它。 如果你键入了一个禁止命令,Emacs会显示一条消息说明这条命令是干什么的,并且问你是 否需要执行它。 如果你真的想要执行,敲空格键继续。通常,如果你不想执行禁止命令,用“n”来回答。 输入 :(一条禁止命令) ,然后用 n 来回答。 * 窗口(W
12、INDOWS) - 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 并且看到那个文档窗口消失了。 * 插入和删除(INSER T
13、ING AND DELETING) - 如果你要插入文本,只须输入文本。输入的字符你能见到,比如 A,7,*等等。Emacs 会立即把它们插入。键入 (回车键)插入一个换行符。 你能用 删除你输入的最后一个字符。 就是键盘上标着“Del”的键。在某些情况下,“Backspace”键作用和 一样,但不总是这样! 通常, 立即删除光标前面的那个字符。 输入几个字符,然后用 删除它们。不必担心这个文件回被改变;你不会 替换主教程。这只是你的个人拷贝。 当一行文本太长而超过屏幕宽度时,这一行会在屏幕的下一行被“继续”。文本的右边会有一个反斜杠“”表示它被继续。 插入文本直到最右边,然后再插入。你将看到
14、一个继续了的行。 使用 删除文本直到行的长度在屏幕的宽度以内。继续的行将会消失。 你能像删除其他任何字符一样删除换行符。删除两个行间的换行符会使它们合并为一行。如果这一行很长屏幕显示不下的话,将会用一个继续的行来表示。 把光标移动到一行的开头按 这将使本行和上一行合为一行。 按 重新插入你删除的换行符。 记住大多数的 Emacs 命令能接收一个重复 次数。这包括文本字符,把一个文本 字符重复的插入几次。 键入这个- C-u 8 * 来插入 * 你现在已经学习了 Emacs 的大多数输入和排错的方法。你也能一样的删除单词 或行。这是删除操作的摘要: 删除光标前面的字符 C-d 删除光标后面的字符
15、 M- 除去光标前面的单词 M-d 除去光标后面的单词 C-k 除去从光标位置到行尾的内容 M-k 除去到当前句子的末尾 注意比较 ,C-d 与 M ,M-d 和 C-f,M-f( 不是一个控制字符,但不用担心)。C-k 和 M-k 就象 C-e,M-e。 当你一次除去不止一个字符时,Emacs将保存着这些文本,所以你可以恢复它们。恢复那些被 除去的文本称作“拉(yanking)”。你能在除去文本的同一 地方拉回它们,或是在文本的其他地方。你能对文本拉上几次以产生它们的多个拷贝,拉的命令是 C-y。 注意“除去(killing)”与“ 删除(Delet ing)”之间的区别,被除去的东西能被拉
16、回 来,而被删除的不能。通常除去能除去很多的文本屏保存,而删除只能除去一个字符,或是空行或空格,并且不保存。 把光标移到一个空行的开头,键入 C-k 除去这一行。 按第二次 C-k,你将看到剩下的空行也被除去了。 注意单个的C-k 除去行的内容,第二个 C-k 除去行本身,并且使后面的所有行上移。特别要注意数字参数:它除去很多行和它们的内容,这不仅仅是重复。C-u 2 C-k 除去两行和它们剩下的空行;而按两次 C-k 并不会这样做。 要在当前光标处找回上次被除去的文本;按 C-y 试一试,用 C-y 把文本拉回来。 把 C-y 考虑为你把某人从你这里拿走的东西再拿回来。注意你如果在一行上按了
17、几次 C-y,所有被除去的文本是存在一起的,所以按一次C-y 将拉回全部的行。 现在就试一下,按几次 C-k。 现在找回被除去的文本; 按 C-y。然后把光标下移几行再按一次 C-y,你现在会看到怎样拷贝这些文本。 当你要拉回一些被除去的文本该怎样做呢?C-y 只能拉回最近被除去的文本。但以前的文本并没有消失。你能用 M-y来恢复它。当你用 C-y 拉回最近被除去的文本后,换成 M-y 可以拉回以前被除去的文本。键入一次又一次的 M-y 可以拉回更早以前被除去的文本。当你找到要寻找的文本,不必做任何事来保持它,只须离开拉文本的地方继续你的编辑。 如果你 M-y 了足够多的次数,你会回到开 始点
18、( 最近被除去的)。 除掉一行,移开,再除掉另一行。 然后用 C-y 拉回第二行。 然后换成 M-y 拉回被除掉的第一行。 再按一次 M-y 看看得到了什么。继续按直到拉回被除去 的第二行;然后再做几次。 如果原意的话,你可以给 M-y 加正的或负的数字参数。 * 撤销(UNDO) - 如果你对文本作了一些改动,然后又发现这样做是错误的,你能用撤销命令,C-x u 撤销这些改变。 通常,一次 C-x u 撤销一个改变;如果你在一行上重复几次 C-x u,就会重复几次撤销操作。 但有两个例外:不改变文本的操作(包括光标移动和滚屏命令) 不算在内;只能处理 20 次。 用 C-k 除去这一行,然后
19、按 C-x u 它将重现出来。 C-_是一个可选择的撤销命令;它所作的工作和 C-x u 完全一样,只是更容易 输入。 C-_的缺点是有些键盘上没有它,这就是为什么还提供 C-x u 的原因。在某些终端上你可以按住 CTRL的时候再敲/来输入 C-_。C-_ 或 C-x u 把数参数字当作重复次数。 * 文件(FILES) - 为了永久保存你编辑的文本,你必须把它放到一个文件里。否则当你退出 Emacs 的时候它就会消失。你通过“查找(finding)”文件,把你编辑的内容放到文件里。(也称为 “访问(visiting)文件 ”)。 (译注:为了保持与原文的一致性,把 find译为“查找”,但
20、是这里和后面出现的 “查找文件”指的都是打开文件的意思。) 查找(finding)一个文件意味着你在 Emacs 里看文件的内容,在多数情况下,也就是你在编辑它。但是,你用 Emacs对它作的改变并不是永久行的,除非你“保存(savin g)” 它。所以你可以避免把一个 改了一半的文件留在系统上。甚至你保存了文件,Emacs 也会把原始文件换个名 字保留下来,以防过后你发现对文件 的改动是错误的。 如果你观察屏幕的你将看见一个开始和结尾都是破折号的行,并且以“-:*- TUTORIAL”或之类的东西开始。屏幕的这部分通常显示你正在访问的文件的名字。现在,一个叫做“TUTORAL”的文件,它是你
21、的 Emacs 教程的个人拷贝。当你用 Emacs 查找一个文件,文件名会出现在同样的位置。 查找和保存文件命令不像前面学的那些命令。它们都以字符 Control-x 开始。以 Control-x 起头的是一个完整的命令系列;它们中的许多都是对文件,缓冲,和相关的东西进行操作的。这些命令有两个,三个或四个字符长。 关于查找文件命令的另一件事是你必须给出你需要的文件的文件名。我们说这个命令 “从终端读取一个参数”。(在这种情况下,参数是文件的名字);当你键入命令 C-x C-f 后,Emacs会提示你输入文件的名字。你输入的文件名会出现在屏幕底部的行上。这个底部的行称为微型缓冲(minibuff
22、er )用于这类较短的输入。你能用 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 保存文件(save the file)。 这个操作会把
23、Emacs 里的文本拷贝到文件 里。在你第一次作的时候,Emacs把原始文 件改为一个新名字以使它不至于丢失。新名字是在原来名字的后面加一个“”。 保存结束后,Emacs 打印出被写的文件的文 件名。你应当经常的保存,万一系统崩 溃 的话你不至于丢失太多的工作。 键入 C-x C-s 来保存你的教程的拷贝。屏幕的底部会打印出“Wrote.TUTORIAL”。 注意:在某些系统上,输入 C-x C-s 会把屏幕冻结住使你从Emacs 看不到更多 的输出。这 表示这个操作系统的“特性”叫做“控制流程”,它拦截了 C-x 不让它到达 Emacs 那里。 要使屏幕解冻,输入 C-q,然后看 Emacs
24、 手册里的“Spontaneous Entry to Incremental Search”一节,按上面的建议来对付这种“ 特性”。 你能查找一个已存在的文件,来查看它或编辑它。你也可以查找一个尚未存在的文件。这是 Emacs:里创建文件的方法:查找文件,将会出现一个空白,然后插入文件的文本。当你 “保存(saving)”的时候,Emacs将会用你插入的文本创建文件。从那时候起,你可以认为你在编辑一个存在的文件了。 * (缓冲)BUFFERS - 如果你用 C-x C-f 查找第二个文件,第一个文件 仍然留在 Emacs 里。你可以再用 C-x C-f 查找一次来切换回去。用这种方法你在 Em
25、acs 里有很多文件。 输入 C-x C-f foo 来建立一个名为 foo的文件。然后插入一些文本,编辑它,并 用 C-x C-s 来保存“foo”。 最后输入 C-x C-f TUTORIAL 以回到本教 程。 Emacs把每个文件 的文本都保存在一个叫 “缓冲(buffe r)”的东西里。查找 (打开)一个文件就会在 Emacs 里产生一个新的缓冲。要看你当前运行的 Emacs 里存在的缓冲列表,输入: C-x C-b 列出缓冲(list buffers) 输入 C-x C-b 观察每个缓冲都有一个名字,它可能也有一个它所保存的文件的文件名。一些缓冲不对应文件。比如,叫“*Buffers
26、 List*”的缓冲没有 任何文件。这个缓冲只包含由 C-x C-b 产生的缓冲列表。你在 Emacs 窗口里看到的任何文本都是某个缓冲的一部分。 输入 C-x 1 消除缓冲列表。 如果你对一个文件的文本作了改动,然后查找另一个文件,第一个文件并不保存。它的改变保存在 Emacs 里,在那个文件的缓冲里。被建立或编辑的第二个文件的缓冲并不影响第一个的。这一点很有用,但这也意味着要有一个便捷的方法来保存第一个文件的缓冲。如果要用 C-x C-f 切换回去只是为了按C-x C-s 保存它将会是一件令人讨厌的事。所以我们用 C-x s 保存缓冲(save the buffer) C-x s 向你询问
27、每个改动过但未存盘的缓冲,对每个这样的缓冲都询问是否保存 。 插入一行文本,然后按 C-x s。 将会问你是否保存叫 TUTORIAL 的缓冲。 输入“y”来回答是。 * 扩展命令集(EXTENDING THE COMMAND SET) - 有太多的 Emacs 命令,大大超过了Contorl 和 meta 加上字符所能表示的数量。 Emacs用 X(扩展 eXtand)命令来解决这个问题。有两种风格: C-x 字符扩展,后跟一个字符。 M-x 名字命令扩展,后跟一个长名字。 这些命令通常有用,但不如你已经学过的那些命令使用的频繁。你已经见过了它们中的两个:文件命令 C-x C-f 用于查找和
28、C-x C-s 用于保存。 另一个例子是结束 Emacs 的命令 C-x C-c(不必担心你所作的改动会丢失,在退出 Emacs 之前,C-x C-c 会提示你保存每一个改动过的文件)。 C-z 命令用于*临时 *退出 Emacs,所以你能回到原来运行的 Emacs 里。在允许这样做的系统上,C-z 把 Emacs“挂起”;就是说回到外壳(shell) 下,但并不破坏运行的 Emacs。在大多数外壳上,你能用fg命令或%emacs来继续Emacs。 在不支持挂起的系统上,C-z 建立一个子外壳(subshell)运行于 Emacs 下以 使你能运行其他程序然后回到 Emacs;这并不是真正的“
29、退出”Emacs。在这种情况下,通常从子外壳回到 Emacs 的外壳命令是exit 。 有很多 C-x 命令,这是已学过的一个列表: C-x C-f 查找文件 C-x C-s 保存文件 C-x C-b 缓冲列表 C-x C-c 退出 Emacs C-x u 撤销操作 被称作扩展命令的命令的使用频率都不太高。或者是只在某些模式下使用。一个例子是替换字符串的命令,它在全文里把字符串替换为其他的。当你键入 M-x, Emacs会在屏幕的底部提示你输入命令;在这种情况下,是“replace-string”。比如输入“repl s ”, Emacs会把命令补全。用 来结束命令。 替换字符串命令要求两个参
30、数-要被替换的 字符串和用来替换的字符串。你必须用 来结束两个参数。 把光标移上两行,然后输入 M-x repl s changed altered 。 注意现在这一行改变了:你把光标初始位置后的所有单词 c-h-a-n-g-e-d 替换为了 “altered” * 自动 保存 (AUTO SAVE) - 当你改动了一个文件还未存盘的话,所作的改动也许会由于系统崩溃而丢失。为防止这种情况发生,Emacs在编辑时为每个文件提供了“自动保存(auto save)”。自动保存的文件的文件名前后都有一个 #号;例如,如果你编辑的文件名叫“hello.c” ,自动保存的文件的文件名就叫“#hello.c
31、#”。当你正常的保存了文件后,Emacs会删除这个自动保存的文件。如果遇到死机,你能打开那个文件后按M-x recover file 来恢复你的编辑,(是你编辑的文件而不是自动保存的文件)。当提示确认 时,输入 yes 来继续恢复自动保存的数据。 * 回显区域(ECHO AREA) - 如果 Emacs 发现你输入命令的速度很慢的话它会在屏幕底部为你显示出来,这个区域叫 “回显区域”。 * 模式行(MODE LINE) - 回显区域上面的一行称为“模式行(mode line)”。模式行显示与下面类似的东西: -*-Emacs: TUTORIAL (Fundamental)-L670-58%-
32、这一行给出了有关你在编辑的文件和 Emacs 状态的有用信息。 你已经知道了文件名意味着什么。-NN%- 指出你现在在文本里的位置;它意味着上面还有 NN%的文本。如果是在文件的开头,会用-Top- 来代替-0%-。如果是在行的末尾,会显示-Bot-。如果你正在看的文本内容很少,可以全部显示在屏幕上,模式行会说 -All-。 前面的星号表示你已经改动过文本了。一旦你保存了文件或打开了一个新文件,模式行的这部分就不是星号而是破折号了。 模式行上括号里的部分是现在的编辑模式。现在是缺省的基本(Fundamental)模式。它是 “主模式(major mode)”的一种。 Emacs有很多不同 的主
33、模式。有些意味着 不同的语言或不同的文本。如 Lisp模式(Lisp mode),文本模式(text mode)等等。在任何时候 有且只能有 一种主模式被激活。并且它的名字会出现在 现在显示“Funda mental”的位置上。 每一个主模式都有些自己的命令。就象不同的编程语言的注释看起来不同一样。每种主模式插入的注释也不同。可以用扩展命令切换进某种主模式。例如,M-x fundamental-mode 是切换进基 本模式。 输入 M-x text-mode 不必担心,没有命令会给 Emacs 带来很大 改变。但是你可以看到现在 M-f 和 M-b 把省略号当作单词的一部分。而先前,在基本模式
34、里,M-f 和 M-b 把省略号当成当成分隔符。 主模式通常作诸如此类微小的变化:大多数命令在每个主模式里作“同样的工作”,但又有些微小的不同。 要观看关于你现在的主模式的文档,按 C-h m。 键入 C-u C-v 一次和多次使本行接近屏幕的顶端。 输入 C-h m ,看看文本模式和基本模式有些什么不同。 按 C-x 1 从屏幕上关掉这个文档。 主模式之所以叫做主模式是因为也存在从模式,从模式与主模式完全不同。每个从模式可以自己打开或者关闭,独立于所有其他从模式,也独立于你的主模式。所以你可以不用从模式或者同时用很多种从模式。 有一种从模式很有用,特别是在编辑英文文本时。它是自动填充模式(a
35、uto fill mode)。当这个模式打开的时候,当输入的文本过宽的时候就会自动折行。 你能用 M-x auto-fill-mode 来打开自动填充模式。如果此模式已经打开 M-x auto- fill-mode 则把它关闭。我们把这叫做切换开关。 输入 M-x auto-fill-mode 。然后插入一 些“asdf”直到看到这行被分为两 行。你必须在中间放一些空格,只有到空格的时候才会换行。 通常边界宽度是 70,但你能用带数字参数的C-x f 命令来改变它。 键入带参数20 的 C-x。(C-u 20 C-x f) 然后输入一些文本看现在每行只有20 个字符了。然后用 C-x f 把它
36、改回70。 如果你在一个段落的中间产生了改变,自动填充模式将不会重新填充。要想重新填充段落,当光标在段落里的时候按M-q。 把光标移到上一段按 M-q。 * 搜索(SEARCHING) - Emacs 能朝前和朝 后搜索字符串( 指相邻的一些字符或单词)。搜索是一个移动光标的操作,它把光标移动到字符串出现的下一个地方。 Emacs 的搜索命令 和其他大多数编辑器不 同,它是“增量式(incremental)”的,这意味着搜索在你键入字符串时就开始了。 开始一个向前搜索的命令是 C-s,C-r 是往回搜索。但等等,先别忙。 当你输入 C-s 是你将注意到在回显区域会出现一个字符串“I-searc
37、h” 。这告诉你 Emacs 开始了一个增量搜索,并在等待你输入要搜索的东西。 结束查询。 现在键入 C-s 开始一个搜索。慢慢的输入单词cousor,在输入每一个字母的时候停顿一 下,注意看光标发生了什么。 再输入一次C-s,来搜索“cursor”出现的下一个地方。 现在输入 四次看看光标移到了哪里。 输入 结束搜索。 看到发生什么了吗?在 Emacs 的增量搜 索里,你输入多少字符串它就试着搜索这 些字符出现的地方。到字符串出现的下一个地方,只须再按一次 C-s。要搜索的字符串不存在的话,Emacs 会发出蜂鸣并告诉你当前的搜索“失败(failing)”,按 C-g 也是终止搜索。 注意:
38、在某些系统上,输入 C-s 会把屏幕冻结住使你从Emacs 看不到更多的输出。这 表示这个操作系统的“特性”叫做“控制流程”,它拦截了 C-s 不让它到达 Emacs 那里。 要使屏幕解冻,输入 C-q,然后看 Emacs 手册里的“Spontaneous Entry to Incremental Search”一节,按上面的建议来对付这种“ 特性”。 如果你在搜索的过程里按了 ,你将注意到要搜索的字符串的最后一个字符会被删除并且光标会回到上一个被搜索到的地方。比如,假设你键入了“c”,将会搜索“c” 第一次出现的地方。然后如果你键入“u”,光标将移到“ cu”第一次出现的地方。现在键入 。这
39、将从搜索的字符串里把“u”删掉,这时光标回到“c”第一次出现的地方。 如果你在搜索时按了 Control 或 meta 键加字符(少数几个少数命令例外,如 C-s 和 C-r),搜索将被终止。 C-s 向当前光标的后面搜索字符串出现的地方。如果你需要搜索前面文本里的东西,用 C-r 来代替。我们所介绍的 C-s 的每个特性 C-r 也支持,除了方向相反。 * 多窗口(MULTI PLE WINDOWS) - Emacs有一个非常 好的特性是能同时在屏 幕上显示不止一个的窗口。 把光标移到本行上按 C-u 0 C-l。 现在按 C-x 2,它把屏幕分裂成两个窗口,每个窗口都显示本教程。光标在上面
40、的窗口里。 按 C-M-v 滚动到下面的窗口里。(如果你没有一个真正的Meta 键,那么按 ESC C-v) 按 C-x o (“o” 指 “其他(other)”) 把光标移到到下面的窗口里。 用 C-v 和 M-v 滚动下面窗口里的文本。 在上面的窗口里看本教程。 再次按 C-x o 使光标回到上面的窗口 里。 现在光标象以前一样在上面的窗口里了。 你能一直用C-x o 在窗口间 切换。每个窗口都有它自己的光标位置,但仅有一个窗口能显示活动的光标。所有的编辑命令都发生在那个显示光标的窗口上。我们把这个窗口叫做“选中窗口( selected window)”。 当你在一个窗口里编辑文本,而用另
41、一个窗口作参考时命令 C-M-v 非常有用。你总是能把光标留在所编辑的地方,而用 C-M-v 来翻阅另一窗口。 C-M-v 是 CONTROL-META 加字符的一个例子。 如果你有一个真正的 META 键,你能同时按住 CTRL 和 META 再按“v”来输入 C-M-v。CTRL 和 META 谁先按谁后按无所谓。 如果你没有一个真正的META 键, 你可以用 ESC 来代替。这时候次序是有关系的: 你必须让 ESC 跟在 CTRL-v后面; 否则 CTRL-ESC v 将不工作。 这是因为 ESC 是一个有意义的字符而不是一个修饰字符。 输入 C-x 1 (在上面的窗口里) 以消除下面的
42、窗口。 (如果你在下面的窗口里 键入 C-x 1,将会把上面 的窗口去掉。可以把这个命令看作是“只保留你现在在的那个窗口。) 你不必一定要在两个窗口里显示同样的缓冲。如果你在一个窗口里键入 C-x C-f 查找文件,另一个窗口的内容不会改变。你能独立的在每个窗口里查找文件。 这是让两个窗口显示不同内容的另一种方法: 在你输入的文件名后再输入 C-x 4 C-f,然后用 结束。会看到指定的文件出现在下面 的窗口里。光标也在那里面。 键入 C-x o 回到上面的 窗口,然后输入 C-x 1 删掉下面的窗口。 * 递归编辑层(RECUR SIVE EDITING LEVELS) - 有时候你会进入“
43、递归编辑层(recursive editing level)”。由模式行上的方括号指示。它在主模式名的括号外面。例如你也许会看到(Funda mental)变成了(Funda mental)。 要退出递归编辑层,按 ESC ESC ESC。这是一个通用的退出命令,你也可以用它除去额外的窗口,或者退出微型缓冲。 输入 M-x 进入一个微型缓冲; 然后用 ESC ESC ESC 离开。 你不能用 C-g 来退出递归编辑层。这是因为 C-g 只能取消在递归编辑层里面的命令。 * 获取更多的帮助(GETTING MORE HELP) - 在本教程里我们试着为你开始使用Emacs提供了足够多的信息。但是
44、有关 Emacs 的信息实在是太多以至于不能全部都在这里说明。但是,你还应该学习更多有关Emacs的东西,因为它另外 还有很多有用的特性。Emacs 提供了很多读取有关命令的文档的命令。这些“帮助”命令都以 Control-h 开头,叫做“帮助字符”。 为了使用帮助特性,输入字符 C-h,然后再输入一个字符来说明你需要哪种帮助。如果你真的不知道,输入 C-h ? 然后 Emacs会告诉你它 能给你什么样的帮助。如果你输入 了 C-h 又觉得不需要任何帮助,你可以用 C-g 来取消它。 (在有的地方,C-h 的作用被改变了。如果按 C-h 在屏幕的底部没有出现有关帮助的信息的话,试试用 F1和
45、M-x help RET 来代 替。) 最基本的帮助特性是 C-h c。输入 C-h,然后是字符 c,然后输入一个命令字符和序列;然后 Emacs 会显示这个命令的简洁的描述。 输入 C-h c Control-p. 显示的消息看起来会象这样: C-p runs the command previous-line 这告诉你“功能的名字” 。功能的名字主要用于对Emacs 的功能扩充和定制。但因为功能的名字指出了命令的用途,所以最好不要改动它。 C-h c 后面可跟多字符命令,比如 C-x C-s 和 (如果你没有 META 或者 EDIT 或者 ALT 键) v 。 要获取有关命令的更多信息,
46、用 C-h k 代替 C-h c。 输入 C-h k Control-p. 这将在一个Emacs 窗口里显示命令的文档 。当你读完后可以用 C-x 1 除去帮助文本。如果不想马上离开,你可以一边编辑一边参考帮助文本,然后再按 C-x 1。 这是一些有用的 C-h 选项: C-h f 描述一个功能,在你输入了这个功能的名字后。 输入 C-h f previous-line 。 将打印出 C-p 命令所实现的所有功能。 C-h a 命令查找。输入一个关键字, Emacs将列出所有名字里有这个关键字的命令。 包括所有以Meta-x 开始的命令。对有些命令,C-h a 也将列出实现同一功能 的 几个命令序列。 输入 C-h a file . 这将在窗口里显示所有名字里有单词“file”的 M-x 命令。 输入 C-M-v 来滚动帮助窗口,做上几次。 输入 C-x 1 来删除帮助窗口。 * 总结(CONCLUSION) - 记住,永远都用 C-x C-c 来退出 Emacs。用 C-z 来退到一个临时的外壳里,以使你过后还能回到 Emacs。 本教程尽量让所有的初学者都能理解,如果你发现有些东西不清楚的话,别责备你自己-抱怨吧!