diff options
author | Kenichi Handa <handa@m17n.org> | 2006-02-17 11:24:57 +0000 |
---|---|---|
committer | Kenichi Handa <handa@m17n.org> | 2006-02-17 11:24:57 +0000 |
commit | 4599a9a55421e313329cd8cbea5f8e6d78b3f737 (patch) | |
tree | 41a56f14577f9ae976367c455e59eb5fd3add7a1 | |
parent | 80a9929264ffd3e7d01516fee560f095fb67f216 (diff) | |
download | emacs-4599a9a55421e313329cd8cbea5f8e6d78b3f737.tar.gz |
Reworked.
-rw-r--r-- | etc/ChangeLog | 8 | ||||
-rw-r--r-- | etc/TUTORIAL.cn | 1476 |
2 files changed, 717 insertions, 767 deletions
diff --git a/etc/ChangeLog b/etc/ChangeLog index 565b2d3e220..c6e17d20349 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog @@ -1,3 +1,11 @@ +2006-02-17 Kenichi Handa <handa@m17n.org> + + * TUTORIAL.translators (TUTORIAL.cn): Update the maintainer. + +2006-02-17 Sun Yijiang <sunyijiang@gmail.com> + + * TUTORIAL.cn: Reworked. + 2006-02-14 Chong Yidong <cyd@stupidchicken.com> * NEWS: Changes in handling of file local variables. diff --git a/etc/TUTORIAL.cn b/etc/TUTORIAL.cn index ce22ac0b349..2546b84e465 100644 --- a/etc/TUTORIAL.cn +++ b/etc/TUTORIAL.cn @@ -1,150 +1,136 @@ -Emacs 快速指南. +Emacs 快速指南(查看版权声明请至本文末尾) -Emacs 指令通常包含有 CONTROL 键(有时候以 CTRL 或 CTL 来标示)或是 -META 键(有时候以 EDIT 或 ALT 来标示)。为了避免每一次都要写出其全名, -我们将会使用下述的缩写: +【注意:位于【】之间的内容是译注,比如本行,下同。】 - C-<chr> 表示当键入字元 <chr> 时 按住 CONTROL 键。 - 因此,C-f 就是:按住 CONTROL 键再键入 f 。 - M-<chr> 表示当键入字元 <chr> 时 按住 META 或 EDIT 或 ALT 键。 - 如果没有 META 、 EDIT 或 ALT 键时,则可以用 - 「按一下 ESC 键然后放开,再键入 <chr> 的步骤」 - 来作为替代。我们以 <ESC> 来表示 ESC 键。 +Emacs 键盘命令通常包含 CONTROL 键(有时候以 CTRL 或 CTL 来标示)和 +META 键(有时候用 EDIT 或 ALT 来标示)。为了避免每次都要写出全名,我们 +约定使用下述缩写: -重要备忘录:要离开 Emacs 操作阶段( session ),键入 C-x C-c (两个字 -元)。位在左侧边界的「>>」字元是让您可以试著使用的指令的提示。举例来说: -<<Blank lines inserted around following line by help-with-tutorial>> -[Middle of page left blank for didactic purposes. Text continues below] ->> 现在键入 C-v ( View next screen )以移到下个萤幕。 - (试试看,键入字元 v 时,按住 CONTROL 键) - 从现在开始,您应该在每次阅读完目前的萤幕时做一次这个动作。 + C-<chr> 表示当输入字符 <chr> 时按住 CONTROL 键。 + 因此 C-f 就表示:按住 CONTROL 键再输入 f。 -要注意的是,当您从一个萤幕移到另一个时,中间会有两行重复;这样做是为了 -提供一些连续性,让您可以接续地阅读文字。 + M-<chr> 表示当输入字符 <chr> 时按住 META(或 EDIT 或 ALT)键。 + 如果你的键盘上没有 META 、EDIT 或 ALT 键,用下述方法也等效: + 先按一下 ESC 键然后放开,再输入 <chr>。我们用 <ESC> 来表示 + ESC 键。 -您需要知道的第一件事是如何在文字中移动。您已经知道了可以 C-v 来向前移 -动一个萤幕。要向后移动一个萤幕,则键入 M-v (按住 META 键,然后键入 v -,或是如果您没有 META 、 EDIT 或 ALT 键时键入 <ESC>v )。 +重要提示:要退出 Emacs,请用 C-x C-c(两个连续的组合键)。下文中左边顶 +行的“>>”字样用来提示你尝试键盘命令。比如: +<<Blank lines inserted around following line by help-with-tutorial>> +[本页当中特意留出一些空白是出于教学目的,请继续往后看] +>> 现在输入 C-v (查看下一屏文字)移动到下一屏。 + (别紧张,在输入字符 v 的同时注意要按住 CONTROL 键) + 从现在开始,每读完当前一屏你都需要这样做一次。 ->> 试著键入 M-v 然后 C-v ,连续个几次。 +值得注意的是,当你从上一屏滚到下一屏时,中间会有两行的重复;这样做是为 +了维持滚屏的连续性,方便你顺畅、连续地阅读。 -【现在您可以 C-v 指令移到后面「翻译」一节,以取得关於本文的翻译相关事 -项;然后以 M-v 指令回到这里。】 +用编辑器,开门第一件事就是学会在文字中移动。你已经知道了 C-v 可以向下移 +动一屏,要往上移,请用 M-v (也就是按住 META 键,然后输入v,如果你没有 +META、EDIT 或 ALT 键那么就先按 <ESC> 再按 v)。 +>> 试试 M-v,然后再试试 C-v,来回遛几次。 -* 摘要( SUMMARY ) -------------------- -以下的指令在检阅萤幕时相当有用:【我们现在以「萤幕」来表示「显示档案内 -容的区域」,因为目前是处在 Emacs 中的单窗格( window )显示状态,如果 -是在多窗格的状态下,这里所介绍的指令则作用在「工作中的窗格」。有关於窗 -格的介绍,请见窗格( windows )一节。】 +* 小结(SUMMARY) +----------------- - C-v 向前移动一个萤幕/窗格 - M-v 向后移动一个萤幕/窗格 - C-l 清除萤幕/窗格,再重新显示所有文字, - 游标所在位置会显示於萤幕/窗格的中央。 - (是 CONTROL-L 而不是 CONTROL-1 ) +以下命令在翻页浏览时相当有用: ->> 找出游标的位置,并注意其附近的文字为何。然后键入 C-l 。 - 再次找出游标的位置,确认一下相同的文字现在也位在其附近。 + C-v 向前移动一屏 + M-v 向后移动一屏 + C-l 重绘屏幕,并将光标所在行置于屏幕的中央 + (注意是 CONTROL-L,不是 CONTROL-1) -如果您的终端机有 PageUp 与 PageDn 键的话,您也可以使用它们来以萤幕为单 -位地移动,但是使用 C-v 和 M-v 会比较有效率。 +>> 找到光标,留意其附近的文字,然后输入 C-l。 + 找找光标在哪里,你会发现其附近的文字并没有变化。 +如果你的键盘上有 PageUp 和 PageDn,也可以用这两个键来滚屏。不过使用 +C-v 和 M-v 的效率要更高一些。 -* 基本的游标控制( BASIC CURSOR CONTROL ) ------------------------------------------- -萤幕到萤幕的移动是很有用,但是您如何移动到位於萤幕内文字中的特定位置呢? +* 基本的光标控制(BASIC CURSOR CONTROL) +---------------------------------------- + +整屏的移动很有用,但是如何在文字中精确定位呢? -有几种方式可以进行。您可以使用方向键,但是将您的手放在标准的〔键盘〕位 -置,并且使用指令 C-p 、 C-b 、 C-f 和 C-n 将比较有效率。这些字元和四个 -方向键〔的功能〕是同等的,如下所示: +有几种方式可以选择。用方向键当然可以,不过更有效率的方法是保持双手位于 +主键盘区,然后使用 C-p 、 C-b 、 C-f 和 C-n 这四个命令。它们的功能和方 +向键是一样的,如下图所示: - 前一行 C-p + 上一行 C-p : : - 向后移 C-b .... 目前游标位置 .... 向前移 C-f + 向左移 C-b .... 目前光标位置 .... 向右移 C-f : : - 后一行 C-n + 下一行 C-n ->> 以 C-n 或 C-p 将游标移到图形的中央。 - 键入 C-l 会看到整个图形显示在萤幕的中央。 +>> 用 C-n 或 C-p 将光标移到上图的中央。 + 按 C-l,整幅图会被显示在屏幕的中央。 -您会发现用字母所代表的意义来记忆它们很容易:P 表示 previous 、 N 表示 -next 、 B 表示 backward 、而 F 则表示 forward 。您将「总是」用到这些游 -标移动指令。 +“P N B F”四个字母分别代表了四个词,用这四个词记忆这些组合键会更容易: +P 代表 previous(上一行),N 代表 next(下一行),B 代表 backward(回 +退),而 F 则代表 forward(前进)。这些组合键今后将与你形影不离。 ->> 按几次 C-n 把游标往下移动到这行。 +>> 按几次 C-n 把光标往下挪到这里。 ->> 按几次 C-f 往前移到这行,然后再以 C-p 往后移动。 - 看看当游标在本行中央时,C-p 的动作是怎样。 +>> 用 C-f 把光标移动到这一行,然后再用 C-p 往上挪。 + 注意观察当光标在一行的中央时 C-p 命令的行为。 -每一个文字行都以一个 Newline 字元作为结束,它是用来与下一行作为分别。 -在您档案中的最后一行应该要有一个 Newline 来作为结束(但是 Emacs 并不一 -定需要它来编辑档案)。 +每行文字都以一个“换行符”结束,“换行符”把行与行区分开来。文件的最后 +一行也应该也有一个换行符(不过 Emacs 并不强制要求这一点)。 ->> 试著在一行开始的地方键入 C-b 。结果应该会移动到前一行的最后面。 - 这是因为它往后移动时越过了 Newline 字元。 +>> 在一行的行头输入 C-b。 + 光标应该会移动到前一行的行尾,因为光标在回退过程中越过了换行符。 -C-f 也可以和 C-b 一样地越过 Newline 字元。【Newline 字元是「不可见 -( invisible )字元」,在编辑器中一般看不到它,这里只是告诉您:在行首 -再往前走,那么游标会跑到前一行(如果有前一行的话);在行尾再往后走,那 -么游标会跑到后一行(如果有后一行的话)。「越过 Newline 字元」会让游标 -跑到另外一行。】 +同样 C-f 也可以像 C-b 一样越过换行符。 ->> 多按几次 C-b,自己感觉一下游标在哪。 - 然后按几次 C-f 回到这行的尾巴。 - 再按一次 C-f 就可以移到下一行了。 +>> 连按几次 C-b,感受一下光标的移动。 + 然后按几次 C-f 回到本行的行尾。 + 再按一次 C-f,光标会移动到下一行。 -当您移动游标穿越萤幕的上方或下方时,在边界外的文字会移位进入萤幕内。这 -称为「卷动」。它让 Emacs 可以将游标移动到文字中的任意特定位置,同时 -(游标)不会跑出萤幕外。 +当你移动光标穿越屏幕的上下边界时,在边界外的文字会移动到屏幕内,这称为 +“滚动”(scrolling)。滚动使得光标可以被移动到文字中的任何位置,并且还 +不会让光标跑到屏幕外边去。 ->> 试著以 C-n 将游标越过萤幕下方,然后看看发生了什么事。 +>> 用 C-n 将光标下移,一直越过屏幕边界,同时观察发生了什么变化。 -如果一个字元一个字元地移动太慢的话,您可以一个字一个字地移动。M-f -(META-f) 往前移动一个字,M-b 则往后移动一个字。【对中文来说,则是移动 -到下一个或下一个标点符号的所在。】 +如果你嫌一个字符一个字符地挪光标太慢,你还可以一个词一个词地跳。M-f +(META-f) 可以将光标往前移动一个词,而 M-b 则是往后移。【这里的“词”指 +英文单词,对中文来说,则是指移动到下一个标点符号。】 ->> 键入一些 M-f 和 M-b。 +>> 试试 M-f 和 M-b。 -当您在一个字的中间时,M-f 会移动到这个字的尾巴。当您在字与字间的空白时, -M-f 会移动到下一个字的尾巴。M-b 的效果相似,只是方向不同。 +如果光标停在一个词的中间,M-f 会移动到这个词的末尾。如果光标处于词与词 +之间的空白处,M-f 会移动到下一个词的末尾。M-b 的功能类似,只是方向相反。 ->> 按几次 M-f 和 M-b,中间夹杂一些 C-f 和 C-b, - 这样子您就可以观察 M-f 和 M-b 在各种「位在字间或字元间」 - 的不同位置,所表现出来的行为。 +>> 按几次 M-f 和 M-b,中间夹杂一些 C-f 和 C-b。 + 你可以观察到 M-f 和 M-b 在不同位置上所表现出来的不同行为。 -请注意 C-f 、 C-b 和 M-f 、 M-b 两对之间的相似性。「经常」的状况是: -META 字元是用来作为与「以语言定义出的单位(字、句子、段落)」有关的操 -作,而 CONTROL 字元则是作用在「与您所编辑无关的『基本』单位(字元或行 -等)」上。 +请注意 C-f 、C-b 和 M-f 、M-b 两对之间的类比关系。通常的惯例是:META 系 +列组合键用来操作“由语言定义的单位(比如词、句子、段落)”,而 CONTROL +系列组合键用来操作“与语言无关的基本单位(比如字符、行等等)”。 -这个相似性在「行与句子」之间也同样适用:C-a 和 C-e 会将游标移动到「一 -行」的 开始和结尾处,而M-a 和 M-e 则将游标移动到「一句」的 开始和结尾 -处。 +类似的惯例在“行”与“句子”之间也同样适用:C-a 和 C-e 可以将光标移动到 +“一行”的头部和尾部;而 M-a 和 M-e 则将光标移动到“一句”的头部和尾部。 ->> 试著按两次 C-a,再按两次 C-e。 - 试著按两次 M-a,再按两次 M-e。 +>> 按两次 C-a,再按两次 C-e。 + 按两次 M-a,再按两次 M-e。 -看一下为什么重复的 C-a 指令会没有作用,而重复的 M-a 指令则继续移动到下 -一个句子。虽然这并不能说是完全类比,但是其中每个指令的行为看起来都十分 -自然。 +想一想为什么重复的 C-a 命令会没有作用,而重复的 M-a 命令则会让光标不断 +地回退到上一个句子。虽然这个类比规律并不严格,但是很自然。 -游标在文字中的位置也可以称作「点位( point )」。简单来说就是:游标表 -现出萤幕中「点位」所在的文字位置。 +光标停留的位置也可以称作“点位”(point)。或者干脆说,光标指示出了屏幕 +上“点位”在文本中的位置。 -这里是一些简单「游标移动( cursor-moving )操作」的整理,其中也包括了 -「字和句」的移动指令: +这里对简单的光标移动命令做一个总结,其中也包括了整词和整句的移动: - C-f 往前移动一个字元 - C-b 往回移动一个字元 + C-f 向右移动一个字符 + C-b 向左移动一个字符 - M-f 往前移动一个字【中文是移动到下一个标点符号】 - M-b 往回移动一个字【中文是移动到上一个标点符号】 + M-f 向右移动一个词【中文是移动到下一个标点符号】 + M-b 向左移动一个词【中文是移动到上一个标点符号】 C-n 移动到下一行 C-p 移动到上一行 @@ -152,906 +138,852 @@ META 字元是用来作为与「以语言定义出的单位(字、句子、段落)」有关的操 C-a 移动到行首 C-e 移动到行尾 - M-a 移回句首 - M-e 移到句尾 + M-a 移动到句首 + M-e 移动到句尾 ->> 练习几次这些指令。这些都是最常使用到的指令。 +>> 把上面所有的命令都练习几次,这些可都是最常用的命令。 -还有两个重要的游标动作( cursor-motion )指令,M-<( META Less-than ), -移动到文字的最开始,以及M->( META Greater-than ),移动到文字的最后。 +这里还要介绍两个重要的光标移动命令:M-< (META 小于号)可以将光标移动到 +所有文字的最开头;M-> (META 大于号)可以将光标移动到所有文字的最末尾。 -在大部份的终端机,「<」是在 comma 上方,所以您必须要使用 shift 键来键 -入。在这些终端机上,您必须使用 shift 键来键入 M-<;没有使用 shift 键, -您就变成键入 M-comma 了。 +注意,在大部分键盘上,小于号(<)需要用上档键(Shift)来输入,所以在这 +些键盘上你应该用 Shift 键来输入 M-<,如果不按 Shift 键,你输入的会是 +M-comma(META 逗号)。 ->> 现在试一下 M-< ,移到本快速指南的最开始。 - 然后再重复地使用 C-v 回到这里。 +>> 试一试 M-< ,移到本快速指南的最开始。 + 然后再按几次 C-v 回到这里。 ->> 现在试一下 M-> ,移到本快速指南的最后。 - 然后再重复地使用 M-v 回到这里。 +>> 试一试 M-> ,移到本快速指南的最末尾。 + 然后再按几次 M-v 回到这里。 -如果您的终端机有方向键的话,您也可以用方向键移动游标。我们有三个理由建 -议您学习 C-b 、 C-f 、 C-n 、 和 C-p :(1) 任何的终端机都能使用。(2) -一旦您使用 Emacs 相当熟练了,您会发现键入这些 CONTROL 字元,比起使用方 -向键快多了(因为您不需要将手移开打字区)。(3) 一旦您使用这些 CONTROL -字元指令成为习惯,您也可以很容易地学会其他进阶的游标动作指令。 +如果你的键盘上有方向键的话,也可以用它们来移动光标。不过我们有三个理由 +推荐你学习 C-b 、C-f 、C-n 、和 C-p:(1)它们在任何键盘上都能用。(2) +当你熟练使用 Emacs 之后,你会发现用这些组合键比用方向键要快得多,因为你 +的手不需要离开打字区。(3)一旦你习惯了使用这些组合键,你也可以很容易地 +适应其它更高级的光标移动命令。 -大部份的 Emacs 指令接受数字参数;对大部份的指令而言,它的作用是指定重 -复次数。您要指定一个指令的重复次数的作法是:先键入 C-u,然后在您键入指 -令前,键入代表重复次数的数位。如果您有一个 META(或 EDIT 或 ALT )键, -那么您还有另外一个替代作法来输入数字参数:按住 META 键时打入这数字。我 -们建议您学习 C-u 的方法,因为它在任何终端机都可以使用。此一数字参数也 -称作为「字首参数」,因为您在这参数所作用到的指令前键入它。 +大部分的 Emacs 命令接受数字参数,并且对于多数命令而言,这些数字参数的作 +用是指定命令的重复次数。为一个命令指定数字参数(也就是重复次数)的方法 +是:先输入 C-u,然后输入数字作为参数,最后再输入命令。如果你有META (或 +EDIT 或 ALT)键,那么还有另一种办法:按住 META 键不动,然后输入数字。不 +过我们还是建议你用 C-u,因为它在任何终端机上都能用。这种数字参数也称为 +“前缀参数”,意思是说这个参数是先于使用它的命令而输入的。 -举例来说, C-u 8 C-f 向前移动 8 个字元。 +举例来说, C-u 8 C-f 会向前移动 8 个字符。 ->> 试著以一个数字参数来使用 C-n 或 C-p, - 只一个指令就将游标移动到这行的附近。 +>> 为 C-n 或者 C-p 指定一个数字参数,这样你可以只用一个命令就把光标移动 + 到本行的附近。 -大部份的指令使用数字参数来作为其重复次数,但是其中有些指令则是作为其他 -用途。有几个指令(目前您尚未学到)将它作为旗标 -- 以一个字首参数的型态 -出现,而不管其值为何,它们让这指令做些不一样的事。 +虽然大部分命令用数字参数来作为其重复次数,但是也有些命令例外,它们将数 +字参数另做它用。比如有些命令(目前还没学到)仅仅将前缀参数作为一个标 +志——只要有一个前缀参数出现,不管其值为何,命令的功能都会改变。 -C-v 和 M-v 则是另一类的例外。当给定一个参数时,它们卷动「所指定的数量 -的行(以行为单位)」,而不是以「萤幕」为单位卷动。举例来说,C-u 8 C-v -将显示萤幕卷动 8 行。 +而 C-v 和 M-v 则属于另一种类型的例外。当给定一个参数时,它们将滚动你指 +定的“行数”,而不是“屏数”。举例来说,C-u 8 C-v 将屏幕向下滚动 8 行, +而不是 8 屏。 ->> 现在试著键入 C-u 8 C-v。 +>> 现在试试看,输入 C-u 8 C-v。 -这指令应该已经将萤幕向上移了 8 行。若您想将它再次地向下卷动,您可以在 -执行 M-v 时给定一个参数。 +这个命令应该已经将文字向上滚动了 8 行。如果你想将它再次地向下滚动,你可 +以给定一个参数然后执行 M-v。 -如果您正在使用 X 窗口系统,在 Emacs 窗口左手侧应该有一个称为「卷动轴」 -的长方型区域。您可以用滑鼠在卷动轴按一下来卷动文字。 +如果你正在使用一个窗口系统,比如 X11 或者微软的 Windows,那么在 Emacs +窗口的左边或者右边应该有一个长方形的区域叫“滚动条”,你可以用鼠标操纵 +滚动条来滚动文字。 ->> 试著在「卷动轴内反白区域上」压一下中间钮。这应该会将文字卷动到 - 「由您所按一下滑鼠的地方」所决定的位置。 +>> 试着在“滚动条内的反白区域”上按一下鼠标中键。 + 文字应该会滚动到鼠标所指示的位置。 ->> 当按住中间时,试著将滑鼠上下移动。 - 您会看到文字随著您移动滑鼠而上下移动。 +>> 当按住中键时,试着将鼠标上下移动。 + 你会看到文字随着鼠标的移动而上下滚动。 + 【Windows 版本符合 Windows 程序的传统操作习惯,上述操作不适用。】 -* 当 EMACS 发呆时( WHEN EMACS IS HUNG ) ------------------------------------------ +* 在 EMACS 失去响应的时候(WHEN EMACS IS HUNG) +----------------------------------------------- -如果 Emacs 停止回应您的指令,您可以键入 C-g 来安全地停止它。您也可以使 -用 C-g 来停止执行过久的指令。 +如果 Emacs 对你的命令失去响应,你可以很安全地用 C-g 来终止这个命令。 +C-g 也可以被用来终止一个执行过久的命令。 -您也可以使用 C-g 来取消数字参数或您不想要完成的指令。 +C-g 还可以被来取消数字参数和那些输入到一半的命令。 ->> 键入 C-u 100 以设定一个 100 的数字参数,然后键入 C-g。 - 现在键入 C-f。它应该只会移动一个字元,因为您已经以 C-g - 取消了参数。 +>> 输入 C-u 100 设定一个值为 100 的数字参数,然后按 C-g。 + 现在再按 C-f,光标应该只会移动一个字符,因为你已经用 C-g 取消了参数。 -如果您已经不小心地键入一个 <ESC>,您可以 C-g 来取消它。 +如果你不小心按了一下 <ESC>,你也可以用 C-g 来取消它。 +【这个说法似乎有问题,因为按照这个按键顺序输入的应该是 C-M-g。 + 取消<ESC> 的正确做法是再连按两次 <ESC>。】 -* 无效化的指令( DISABLED COMMANDS ) -------------------------------------- +* 被禁用的命令(DISABLED COMMANDS) +----------------------------------- -有一些 Emacs 指令被「无效化」了,因此初学者不会意外地使用到它们。 +有一些 Emacs 命令被“禁用”了,以避免初学者在不了解其确切功能的情况下误 +用这些命令,造成麻烦。 -如果您键入了某一个无效化的指令,Emacs 会显示一个讯息,说明这个指令是什 -么,并且询问您是否想要继续,然后执行这指令。 +如果你用到了一个被禁用的命令,Emacs 会显示一个提示消息,告诉你这个命令 +到底是干什么的,询问你是否要继续,并在得到你的肯定之后再执行这命令。 -如果您真的想要试一下这个指令,那么在当 Emacs 询问您时,请键入空白。一 -般来说,如果您不想要执行这个无效化的指令,请以『n』来回答它。 +你要是真的想执行被禁用的命令,那么在 Emacs 询问你的时候应该按空格。一般 +来说,如果你不想执行,按“n”就行了。 ->> 键入 C-x C-l (这是个无效化的指令) - 然后键入 n 来回答问题。 +>> 试试 C-x C-l (这是一个被禁用的命令) + 然后用 n 来回答问题。 -* 窗格( WINDOWS ) -------------------- +* 窗格(WINDOWS) +----------------- -Emacs 可以有数个窗格,每一个显示它自己的文字。我们在稍后会解释如何使用 -多重窗格。现在我们想要解释如何除去多余的窗格,然后回到基本的单窗格编辑。 -它很简单: +Emacs 可以有多个窗格,每个窗格都显示不同的文字。我们后面再介绍怎么对付 +多个窗格,现在先让我们先搞明白如何关掉多余的窗格。其实也很简单: - C-x 1 One window (即,除去其他所有的窗格)。 + C-x 1 只保留一个窗格(也就是关掉其他所有的窗格)。 -那是个 CONTROL-x 后面跟著数字 1 。C-x 1 将含有游标的窗格扩大到整个萤幕。 -它将所有其他的窗格除去。 +也就是先按 CONTROL-x 然后再按 1。C-x 1 会保留光标所在的窗格,并将其扩大 +到整个屏幕,同时关掉所有其它的窗格。 ->> 移动游标到本行并且键入 C-u 0 C-l。 ->> 键入 CONTROL-h k CONTROL-f。 - 看看这个窗格在当一个新的窗格出现 - (以显示有关 CONTROL-f 指令的文档时),它是如何缩小的。 +>> 把光标移到本行然后输入 C-u 0 C-l。 ->> 键入 C-x 1 以使文档列表窗格消失。 +>> 输入 CONTROL-h k CONTROL-f。观察当一个新窗格出现时当前窗格(用来显示 + CONTROL-f 命令的文档)是如何缩小的。 -这个指令并不像您先前所学过的指令那般,它包括了两个字元。它是以字元 -CONTROL-x 作为开始。有一整个系列的指令是以 CONTROL-x 作为开始;它们之 -中有许多是与「窗格、档案、暂存区以及相关事物」有关的。这些指令有 2 、 -3 或 4 个字元长。 +>> 输入 C-x 1 关掉文档窗格。 +这个命令跟先前学到的命令不太一样,因为它包含了两个字符,以 CONTROL-x 开 +始。有一系列命令都是以 CONTROL-x 开始的,这些命令许多都跟“窗格、文件、 +缓冲区【缓冲区(buffer)会在后文详细介绍】”等等诸如此类的东西有关,其 +中有些命令可能有 2 个、3 个或者 4 个字符长。 -* 插入与删除( INSERTING AND DELETING ) ----------------------------------------- -如果您想要插入文字,把它键入就是了。您可以看到的字元,像是 A 、 7 、 * -等,被 Emacs 视为文字并且可以直接插入。键入 <Return> -( carriage-return 键)以插入一个 Newline 字元。 +* 插入与删除(INSERTING AND DELETING) +-------------------------------------- -您可以键入 <Delback> 以删除您最后键入的字元。<Delback> 是一个的键盘键 --- 就是您通常在 Emacs 外,使用来「删除您最后键入字元」的同一个。一般来 -说是个在 <Return> 上方数行的大键,通常标示为『Delete』、『Del』或 -『Backspace』。 +插入文字很简单,敲键盘就行了。你能看到的字符,比如 A、7、* 等等,都被 +Emacs 视为文字并且可以直接插入。敲 <Return>(回车键)会插入一个换行符。 -如果在那里有个标示为『Backspace』的大键,那么那一个就是您使用来作为 -<Delback> 的键了。某个地方可能也会有另一个标示为『Delete』的键,但那个 -并不是 <Delback> 。 +你可以用 <Delback> 来删除最后输入的的一个字符,这个跟你在 Emacs 之外的 +用法应该一样。一般来说 <Delback> 就是位于 <Return> 键上方某处的一个大号 +键,通常被标示为“Delete”、“Del”或者“Backspace”。 -更一般地说, <Delback> 将位於目前游标位置前一个字元加以删除。 +如果你找到了标着“Backspace”的键,那么它应该就是 <Delback>;即便你又在 +键盘其它地方找到了一个标示为“Del”的键,那么它也应该不是 <Delback>。 ->> 现在做 -- 键入一些字元,然后键入几次 <Delback> 来删除它们。 - 不要担心这个档案会被更动;您不会影响到原来的快速指南。 - (您现在看到的)这一个是您的个人拷贝。 +一种更通用的说法是,<Delback> 将位于光标前的一个字符删除。 -当一行文字变得比「在窗格中的一行」长时,这一行文字会「接续」到第二行窗 -格行。这时一个反斜线「\」(或如果您使用窗口化的显示,则是一个小小弯弯 -的箭头)会位在其右边界以指出此行接续著。 +>> 现在就试试——敲点字,然后按几下 <Delback> 删除它们。 + 不用担心你会修改文件,你干什么都没关系,这里就是专给你练习用的。 ->> 插入文字,一直到您达到右边界,然后再继续插入。 - 您会看到一个接续行出现。 +如果一行文字很长、超出了窗格的宽度,显示不下的部分会在紧邻的下一行继续 +显示。这时会有一个反斜线(控制台下是反斜线,如果你用图形窗口系统,则应 +该是一个小小的转弯箭头)显示在右边沿,表明这是某一行的接续显示。 ->> 使用 <Delback> 删除一些文字,直到此行再次成为一个窗格行。 - 接续行消失了。 +>> 输入文字,一直到屏幕的右边界,然后继续,你会看到一个接续行出现。 -您可以像删除其他字元一样地删除 Newline 字元。将位在两行中的 Newline 字 -元删除会让它们合并成为一行。如果合并的结果使这一行太长,以致无法符合窗 -格的宽度,它会以一个接续行来显示。 +>> 用 <Delback> 删掉一些文字,直到此行长度小于窗格宽度,接续行就消失了。 ->> 移动游标到本行的开头并键入 <Delback>。 - 这会将本行与其前一行结合为一行。 +你可以像删除其他字符一样删除换行符。删除两行中间的换行符会将两行合并成 +一行。如果合并的结果使这一行太长,超出了窗格的宽度,它就会以一个接续行 +来显示。 ->> 键入 <Return> 以重新插入您刚才删除的 Newline 字元。 +>> 移动光标到本行的开头并输入 <Delback>。 + 这时本行与其前一行将被合并为一行。 -记得大部份的 Emacs 指令都可以给予一个重复计数( repeat count );这也 -包括了文字字元。重复一个文字字元会将它插入数次。 +>> 输入 <Return> 重新插入你刚才删除的换行符。 ->> 现在就试一下 -- 键入 C-u 8 * 以插入 ********。 +前面说过,大部分的 Emacs 命令都可以指定重复次数,这其中也包括输入字符的 +命令。重复执行输入字符的命令实际上就是输入多个一样的字符。 -您现在已经学到了「键入个什么东西进 Emacs 以及修正错误」的大部份基本方 -法。您也可以「以字或行为单位」地删除。这里有份关於「删除操作」的摘要: +>> 试试 C-u 8 *,这将会插入 ********。 - <Delback> 删除游标所在的 前一个字元 - C-d 删除游标所在的 后一个字元 +好,现在你应该已经掌握了最基本的的文本插入和修改功能,其实删除还可以 +“以词为单位”进行,下面是一个关于“删除”操作的小结: - M-<Delback> 删除游标所在的 前一个字 - M-d 删除游标所在的 后一个字 + <Delback> 删除光标前的一个字符 + C-d 删除光标后的一个字符 - C-k 删除从游标所在到「行尾」间的字元 - M-k 删除从游标所在到「句尾」间的字元 + M-<Delback> 移除光标前的一个词 + M-d 移除光标后的一个词 -注意「<Delback> 和 C-d」还有「M-<Delback> 和 M-d」是平行地自 C-f 和 -M-f 扩充出来的(嗯,<Delback> 并不是控制字元,但是没什么好担心的)。 -C-k 和 M-k 在某种程度上与 C-e 和 M-e 一样,如果把「一行」和「一句」作 -为类比的话。 + C-k 移除从光标到“行尾”间的字符 + M-k 移除从光标到“句尾”间的字符 -您也可以只以一种方法来删除缓冲区内的任何部份,先移动到您想要删除的部份 -的一端,然后键入 C-@ 或 C-SPC (任一个即可)。( SPC 指的是 Space Bar -)再移到那部份的另一端,接著键入 C-w 。这样就会把介於这两个位置间的所 -有文字删除。 +【可能你已经注意到了“删除(delete)”和“移除(kill)”的用词区别,后 +文会有详细说明。】 ->> 移动游标到上一段开头的「您」字。 ->> 键入 C-SPC 。 Emacs 应该会在萤幕的下方显示一个「Mark set」讯息。 ->> 移动游标到第二行中的「端」字。 ->> 键入 C-w 。这样会把从「您」开始到刚好「端」之前的文字删除。 +注意“<Delback> 和 C-d”还有“M-<Delback> 和 M-d”是根据前述惯例从 C-f +和 M-f 衍生出来的(其实<Delback>不是控制字符,我们先忽略这一点)。C-k +和 M-k 的关系在某种程度上与 C-e 和 M-e 一样——如果把“一行”和“一句” +作一个类比的话。 -要注意的是「杀掉( killing )」和「删除( deleting )」的不同在於被杀 -掉的可以拉回,而被删除的则不能。【有点难以理解,您可以这么想:(1)「被 -杀掉的」尚存尸骨,而「被删除的」则尸骨无存了!可见得对电脑资料来说, -「删除」比「杀掉」严重多了。(2)实际上,就算被删除了,我们还是有技术可 -以把它救回来,尤其是文字资料,前提是删除后不能进行实体记忆体的格式化动 -作。但这对於一般使用者而言是不可能的,因此就不考虑这情形了。】重新插入 -被杀掉的文字称为「拉回( yanking )」。一般而言,可以移除掉很多文字的 -指令会把那些文字储存起来(它们设定成您可以将文字拉回),而那些只是删除 -一个字元或者只是除去空白行或空白的指令,则不会储存这些被删除的文字(因 -此您不能将那文字拉回)。 +你也可以用一种统一的办法来移除缓冲区里的任何一部分:首先把光标移动到你 +想要移除的区域的一端,然后按 C-@ 或 C-SPC(任一即可,SPC指空格)【注意, +C-SPC 往往被中文用户设定成输入法热键,如果这样,C-SPC 就被系统拦截而无 +法输入给 Emacs 了,因此这里还是推荐使用C-@。】,然后再移动到另一端,再 +按 C-w 就可以把位于这两点之间的所有文字移除了。 ->> 移动游标到一非空白行的开始。 - 然后键入 C-k 杀掉在那一行上的文字。 ->> 第二次键入 C-k。您将会看到它杀掉跟在那一行后面的 Newline 字元。 +>> 移动光标到上一段开头的“你”字。 +>> 输入 C-@ 。Emacs 应该会在屏幕的下方显示一个“Mark set”的消息。 +>> 移动光标到第二行中的“端”字。 +>> 输入 C-w,就会把从“你”开始到“端”之前的文字全部移除。 -请注意单独的 C-k 会把一行的内容杀掉,而第二个 C-k 则会杀掉那一行本身, -并且使得所有其他的行向上移动。C-k 以很特别的方式来处理数字参数,它会杀 -掉很多行以及它们的内容,这不仅仅是重复而已,C-u 2 C-k 会把两行以及它们 -的 Newline 字元杀掉;如果只是键入 C-k 两次并不会这样。 +注意,“移除(kill)”和“删除(delete)”的不同在于被移除的东西可以找回 +来,而被删除的就不行了。【实际上,移除掉的东西虽然看起来“消失”了,但 +实际上被 Emacs 记录了下来,因此还可以找回来;而删除掉的东西虽然也可能还 +在内存里,但是已经被Emacs“抛弃”了,所以就找不回来了。】重新插入被移除 +的文字称为“召回(yank)”。一般而言,那些会去除很多文字的命令会把去除 +掉的文字储存起来(它们被设定成了“可召回”),而那些只是去除一个字符或 +者只是去除空白的命令就不会储存那些被去除掉的东西(因此你就无法召回)。 -将被杀掉的文字回复的动作称为「拉回( yanking )」。(把它想像成您把别 -人从您身上夺去的东西猛力地拉回来)您可以在您删除文字的地方拉回,也可以 -在文字的其他地方拉回。您可以拉回数次同样的文字,以制作它的数份拷贝。 +>> 移动光标到一非空白行的行头,然后输入 C-k 移除那一行上的文字。 -拉回的指令为 C-y。它会在目前游标的位置重新插入最后杀掉的文字。 +>> 再次 C-k,你可以看到它移除了跟在那一行后面的换行符。 ->> 试试看;键入 C-y 将文字拉回。 +注意,单独的 C-k 会把一行的内容移除,而第二个 C-k 则会移除换行符,并使 +其后所有的行都向上移动。C-k 处理数字参数的方式很特别,它会把参数指定的 +那么多行连同其后的换行符一起移除,而不仅仅是重复 C-k 而已。比如 C-u 2 +C-k 会把两行以及它们的换行符移除;而如果只是输入 C-k 两次显然不是这个结 +果。 -如果您连续地做了数次 C-k,所有被杀掉的文字都会被储存在一起,因此做一次 -C-y 就会把所有这些行都拉回来。 +将被移除的文字恢复的动作称为“召回(yanking)”。(就好像你把别人从你身 +边移走的东西又猛力地拉回来。)你可以在你删除文字的地方召回,也可以在别 +的地方召回,还可以多次召回同样的文字以得到它的多个拷贝。 ->> 现在做一下,键入 C-k 数次。 +召回的命令是 C-y。它会在光标所在处插入你最后移除的文字。 -现在要回复那些杀掉的文字: +>> 试试看,输入 C-y 将文字召回。 ->> 键入 C-y。然后把游标往下移动个几行,再一次键入 C-y。 - 您现在知道如何复制某些文字了。 +如果你一次连按了好几下 C-k,那么所有被移除的行会被存储在一起,只要一个 +C-y 就可以把它们都召回。 -如果您有一些文字想要拉回来,但是后来您又杀了某些东西,那么该怎么做呢? -C-y 会把最近杀掉的拉回来,但是先前的文字并没有消失,您可以用 M-y 来回 -到它。当您已经使用 C-y 把最近杀掉的拉回来之后,再键入 M-y 来把这些拉回 -来的文字替换为先前所杀掉的。一次又一次地键入 M-y 会把先前再先前所杀掉 -的文字带回来。当您到了您想找的文字时,您不需要做任何事来保存它,只要继 -续您的编辑,把这些已拉回的文字留在那里就好。 +>> 在这里试试,连续按几次 C-k。 -如果您 M-y 做了很多次,您可能会回到起始点,也就是最近杀掉的。 +现在再来恢复刚刚被我们移除的文字: ->> 杀掉一行,到处绕绕,再杀掉另一行。 - 然后用 C-y 将第二次杀掉的那行带回来。 - 然后再用 M-y,它将会被第一次杀掉的那行取代。 - 再做几次 M-y 看看您会得到什么。 - 不间断地做,直到第二个杀掉行回来,再做个几次。 - 如果您想的话,您可以试著给 M-y 正的或是负的参数。 +>> 按 C-y。然后把光标往下移动几行,再按一次 C-y。 + 现在你应该知道怎么复制文字了。 +C-y 可以把最近移除的文字召回,但如果你想召回的东西不是最近移除的,该怎 +么办呢?它们当然没有丢,你可以用 M-y 来召回它们。在用 C-y 召回最近移除 +的文字之后,紧接着再用 M-y 就可以召回再前一次被移除的文字,再按一次 +M-y 又可以召回再上一次的,因此只要多按几次 M-y 就可以找到你想要召回的东 +西了。找到了之后,你什么也不用做,把它们晾在那里,继续你的编辑就行了。 -* 取消动作( UNDO ) --------------------- +如果你一次按 M-y 按了很多下,你可能会回到起始点,也就是最近移除的文字。 +【看得出这实际上是一个环。】 -如果您对文字做了一些改变,后来觉得它是个错误,您可以 Undo 指令取消这一 -个改变,C-x u。 +>> 移除一行,移动一下光标,然后再移除另外一行。 + 按 C-y 将第二次移除的那行召回来。 + 紧接着再按 M-y,它将会被第一次移除的那行取代。 + 试着再按几下 M-y 看看会发生什么。 + 再继续,直到第二行被召回来,然后再做个几次。 + 如果你愿意,你可以试着给 M-y 指定一个正的或负的参数。 -通常 C-x u 会把一个指令所造成的改变取消掉;如果您在一行中重复了许多次 -C-x u,每一个重复都会取消额外的指令。 + +* 撤销(UNDO) +-------------- + +如果你修改了一段文字,又觉得改得不好,可以用 undo 命令进行撤销: +C-x u。 + +通常 C-x u 会消除一个命令所造成的所有改变;如果你在一行中连续多次地使用 +C-x u,你会把以前的命令也依次撤销。 但是有两个例外: -(1) 没有改变文字的指令不算(这包括了游标移动的指令还有卷轴指令); -(2) 自行键入的字元以一群一群 -- 每群最多 20 个 -- 来进行处理。 - (这是为了减少您在取消「插入文字动作」所必须键入 C-x u 的次数) +1) 没有改变文字的命令不算(包括光标移动命令和滚动命令) +2) 从键盘输入的字符以组为单位——每组 20 个字符——来进行处理。 + (这是为了减少你在撤销“插入文字”动作时需要输入 C-x u 的次数) ->> 以 C-k 将这一行杀掉,然后键入 C-x u 后它会再次出现。 +>> 用 C-k 将这一行移除,然后输入 C-x u ,它会再次出现。 -C-_ 是另一个取消指令;它的作用就和 C-x u 一样,但是在一行中它比较容易 -键入许多次。C-_ 的缺点是在某些键盘中不太清楚如何键入它,这也是为什么我 -们同时提供 C-x u 的原因。在某些终端机,您可以按住 CONTROL 再键入 / , -来键入 C-_。 +C-_ 也是撤销命令;它的作用跟 C-x u 一样,但是它比较容易多次输入。C-_ 的 +缺点是在某些键盘上可能不太容易按,这也正是我们同时提供 C-x u 的原因。在 +某些终端上,你可以按住 CONTROL 再按“/”来输入 C-_。 -一个数字参数对 C-_ or C-x u 来说,是作为重复的次数。 +数字参数对于 C-_ 和 C-x u 的意义是执行撤销的重复次数。 -* 档案( FILE ) ----------------- +* 文件(FILE) +-------------- -为了使您编辑的文字永久保存,您必须把它放到一个档案中。不然,当您离开 -Emacs 后,它就会随之消失。为了把您的文字放在档案中,您必须在您键入这些 -文字前「找( find )」档案。(这也称之为「拜访( visiting )」档案) +想保存工作成果就要记得存盘,否则一旦退出 Emacs 你编辑的文字就都丢了。要 +存盘,就要在编辑前“寻找”到一个存盘文件。(这个过程通常也被称为“访问” +文件。) -找一个档案表示您可以在 Emacs 中看到档案的内容。从许多方面来看,它就像 -是您直接编辑那个档案一样。然而,直到您「储存」这个档案之前,您使用 -Emacs 编辑所做出的改变并不会保存下来。这就是为什么当您不想要时,您可以 -避免留下修改到一半的档案在系统中。即使当您储存了,Emacs 也会把原本的档 -案以一个不同的名称保留下来,若您稍后觉得您的改变是一个错误的话,就可以 -使用它。 +寻找到一个文件意味着你可以在 Emacs 里查看这个文件的内容。从很多角度讲, +这就等于你在直接编辑这个文件。但是你所做的修改只有在“存盘”的时候才会 +被写入文件。也正因为如此,你可以丢弃一个改到一半的文件而不必把这个残废 +文件也保存到计算机上。最后就算你真正存了盘,Emacs 也会把存盘前的文件重 +命名保存,以防你改完之后又想反悔。 -在靠近萤幕的下方,您可以看到由破折号开始与结束的一行 -- 通常是以「--:-- -TUTORIAL.cn」或其他类似的东西作为开始。这是萤幕的一部分,通常用来表示 -您正在拜访的档案。现在,您正在拜访的档案叫做「TUTORIAL.cn」,它是您个 -人的拷贝。当您以 Emacs 找出一个档案时,那个档案的名字就会出现在那个地 -方。 +在屏幕的下方,你应该能够看到头尾都是短线“-”的一行,其开头通常都是诸如 +“--:-- TUTORIAL.cn”这样的东西,这些文字就代表了你当前正在访问的文件。 +现在你访问的文件叫“TUTORIAL.cn”,它只是给你个人临时使用的一个拷贝。只 +要你用 Emacs 寻找到一个文件,文件名就会出现在上述位置。 -关於寻找档案的指令中,有一个很特别的是,您必须说出这个您想要的档案名称。 -我们说这个指令「从终端机中读进了一个参数」。(在这个例子中,这参数就是 -档案的名称)当您键入这个指令后, +寻找文件的命令有一个特别之处,那就是你必须给出文件名。我们称这个命令 +“从终端读入了一个参数”(在这里,这个参数显然就是文件名)。当你输入了 +这个命令之后: - C-x C-f 找一个档案 + C-x C-f 寻找一个文件 -Emacs 会要您键入档名。您所键入的档名会出现在萤幕的底行。在被用来作为这 -种形式的输入时,底行被称为小缓冲区( minibuffer )。您可以使用正常的 -Emacs 编辑指令来编辑这个档名。 +Emacs 会提示你输入文件名。你输入的文件名会出现在屏幕最底端的一行,这一 +行被称为小缓冲(minibuffer),在小缓冲里你可以使用通常的 Emacs 编辑命令 +来编辑文件名。 -当您正在键入档名时(或是任何的小缓冲区输入时),您可以用 C-g 这个指令 -来取消它。 +在小缓冲里输入文件名(其实输入别的东西也一样)时可以用 C-g 取消。 ->> 键入 C-x C-f,然后键入 C-g。这会取消小缓冲区, - 并且也会取消使用这个小缓冲区的 C-x C-f 指令。 - 因此您没有找任何档案。 +>> 输入 C-x C-f,然后输入 C-g + 这会关掉小缓冲,同时也会取消使用小缓冲的 C-x C-f 命令。 + 当然了,你也没有找任何文件。 -当您已经键入了这个档名,请键入 <Return> 来结束它。然后 C-x C-f 指令就 -会开始运作,并且找到您所选择的档案。小缓冲区在当 C-x C-f 指令结束时就 -会消失。 +输入完文件名之后用 <Return> 结束,然后 C-x C-f 命令开始工作并找到你指定 +的文件。小缓冲在 C-x C-f 命令结束之后也会消失。 -过了一会儿,档案的内容就会出现在萤幕,然后您就可以编辑它的内容。当您想 -要您的改变永久保存时,键入这个指令: +眨眼间文件就会显示在屏幕上,你可以开始编辑了。存盘用这个命令: - C-x C-s 储存这个档案 + C-x C-s 储存这个文件 -这会把在 Emacs 中的文字复制到档案中。当您第一次做这个动作时,Emacs 会 -将原始的档案重新命名成一个新的名字,这样它才不会消失。新的名字通常会加 -入「~」到原始档案的名字后面。 +这个命令把 Emacs 中的文字存储到文件中。第一次存盘的时候 Emacs 会将原文 +件重命名以保留原文。重命名的规则通常是在原文件名之后添加一个“~”字符。 -当储存结束时,Emacs 会把写入档案的名字列出来。您应该经常地进行储存,这 -样子如果系统当机时,您就不会损失太多工作。 +存盘结束后,Emacs 会显示写入文件的文件名。你最好养成经常存盘的习惯,这 +样在系统崩溃或者死机的时候你不会损失太多。 ->> 键入 C-x C-s 以储存本快速指南的您的拷贝。 - 这会把「Wrote ...TUTORIAL.cn」这个讯息显示在萤幕的下方。 +>> 输入 C-x C-s 把本快速指南存下来。 + 你会看到“Wrote ...TUTORIAL.cn”这样的消息显示在屏幕的下方。 -注意:在某些系统中,键入 C-x C-s 将会把萤幕冻结,您将看不到从 Emacs 来 -的任何输出。这表示操作系统一个称为「流程控制」的「功能」将 C-s 指令拦 -截住,并且不让它传到 Emacs。要取消萤幕的冻结,请键入 C-q。然后到 Emacs -使用手册中看看对於「渐进式搜寻的同时进入( Spontaneous Entry to -Incremental Search )」这个主题,以取得处理这个「功能」的建议。 +注意:使用某些终端的时候,输入 C-x C-s 会冻结屏幕【屏幕没有任何输出】, +这样你就看不到 Emacs 的任何变化。其原因是操作系统的“流量控制”功能把 +C-s 拦截了,并且冻结了屏幕,Emacs 自然也就看不到这个输入了。用 C-q 可以 +解除屏幕冻结。要解决这个问题,请参考 Emacs 手册里的“Spontaneous Entry +to Incremental Search”一节【Emacs 手册可能还没有中文翻译】,那里可能有 +一些有用的建议。 -您可以找出一个已经存在的档案,然后观看它或编辑它。您也可以找一个还没有 -存在过的档案。这是以 Emacs 建立一个档案的方法:找这个档案,就从零开始, -然后开始插入文字到这个档案中。当您要求「储存」这个档案,Emacs 会真的建 -立一个档案,并把您所插入的文字摆到档案中。从那时候开始,您就可以当自己 -是在编辑一个已经存在的档案了。 +你可以寻找一个已有的文件然后查看或者编辑,你还可以寻找一个不存在的文件。 +实际上这正是用 Emacs 创建新文件的方法:找到不存在的新文件,然后从零开始。 +在存盘的时候,Emacs 才真正创建这个文件然后再存盘。在这之后一切就跟你编 +辑一个已有文件一样了。 -* 缓冲区( BUFFER ) --------------------- +* 缓冲区(BUFFER) +------------------ -如果您以 C-x C-f「找」第二个档案,第一个档案仍然存在 Emacs 内。要切换 -回它,您可以 C-x C-f 再找它一次。依此方式,您可以在 Emacs 内开启不少档 -案。 +如果你用 C-x C-f 找到第二个文件,第一个文件仍然会在 Emacs 里。要切回第 +一个文件,你可以 C-x C-f 再次寻找它。这样,你可以在 Emacs 里同时打开很 +多文件。 ->> 以键入 C-x C-f foo <Return> 的方式建立一个名为「foo」的档案。 - 然后插入一些文字,编辑它,然后再以 C-x C-s 储存「foo」。 - 最后,键入 C-x C-f TUTORIAL.cn <Return> 回到本快速指南。 +>> 用 C-x C-f foo <Return> 的方式建立一个名为“foo”的文件。 + 然后敲入一些文字,再用 C-x C-s 保存文件“foo”。 + 最后,输入 C-x C-f TUTORIAL.cn <Return> 回到这里。 -Emacs 储存每个档案的文字在一个称为「缓冲区( buffer )」的物件中。找一 -个档案会在 Emacs 内部建立一个缓冲区。想要看目前存在您的 Emacs 的工作中 -缓冲区列表,键入 +Emacs 把每个编辑中的文件都放在一个称为“缓冲区(buffer)”的地方。每寻 +找到一个文件,Emacs 就在其内部开辟一个缓冲区。用下面的命令可以列出当前 +所有的缓冲区: C-x C-b 列出缓冲区 >> 现在就试一下 C-x C-b -看看每一个缓冲区是如何命名的,它也可能同时拥有一个「储存其内容的档案」 -的名称。您在一个 Emacs 窗格所见到的「任何」文字都是某个缓冲区的一部份。 +观察一下缓冲区是如何命名的,它很可能跟其对应的文件同名。事实上,你在一 +个 Emacs 窗格里看到的任何文字都是某个缓冲区的一部分。 ->> 键入 C-x 1 以离开缓冲列表 +>> 输入 C-x 1 离开缓冲区列表 -当您有数个缓冲区时,在任何时候其中只有一个是「目前作用的」。而那个就是 -您在编辑的缓冲区。如果您想要编辑另一个缓冲区,那么您必须「切换」到它。 -如果您想要切换到连接到某个档案的缓冲区,您可以用 C-x C-f 再次拜访那个 -档案。但是有个比较简单的方式:使用 C-x b ;在这个指令中,您必须键入缓 -冲区的名称。 +不管存在多少缓冲区,任何时候都只能有一个是“当前”缓冲区,也就是你正在 +编辑的这个。如果你想编辑另外一个缓冲区,那么你必须“切换”过去。上面讲 +过,用 C-x C-f 可以切换到某个文件对应的缓冲区。不过还有一个更简单点的办 +法,那就是用 C-x b。用这个命令,你必须输入缓冲区的名称。 ->> 键入 C-x b foo <Return> 以回到含有档案「foo」的文字的缓冲区。 - 然后建入 C-x b TUTORIAL <Return> 以回到本快速指南。 +>> 输入 C-x b foo <Return> 以回到文件“foo”的缓冲区。 + 然后输入 C-x b TUTORIAL.cn <Return> 回到这里。 -就大部份的情况来说,缓冲区的名称与档案的名称是相同的(除去了档名中的目 -录部份)。然而并不总是如此。您以 C-x C-b 所制作出的缓冲区列表总是会显 -示给您每一个缓冲区的名称。 +大多数情况下,缓冲区和与其对应的文件是同名的(不包括目录名),不过这也 +不是绝对的。用 C-x C-b 得到的缓冲区列表中显示的总是缓冲区的名称。 -您在一个 Emacs 窗格中所见到的「任何」文字总是某个缓冲区的一部份。有一 -些缓冲区并没有连接到档案。举例来说,命名为「*Buffer List*」的缓冲区并 -没有任何档案。它是包含有您以 C-x C-b 指令所制作出来的缓冲区列表的缓冲 -区。命名为「*Messages*」的缓冲区也没有连接到任何档案;它在您的 Emacs -操作阶段中包含出现在底行的讯息。 +你在 Emacs 窗格里看到的“任何”文字都一定是属于某个缓冲区的。也有些缓冲 +区并没有对应文件:比如显示缓冲区列表的缓冲区就是这样,再比如一个名叫 +“*Messages*”的缓冲区也没有对应的文件,这个缓冲区里存放的都是在 Emacs +底部出现的消息。 ->> 键入 C-x b *Messages* <Return> 来看看讯息的缓冲区。 - 然后键入 C-x b TUTORIAL <Return> 回到本快速指南。 +>> 输入 C-x b *Messages* <Return> 瞅瞅消息缓冲区里都有什么东西。 + 然后再输入 C-x b TUTORIAL.cn <Return> 回到这里。 -如果您对档案中的文字做了修改,然后找另一档案,这个动作并不会储存第一个 -档案。它的修改仍旧存在 Emacs 中,也就是在那个档案的缓冲区中。对於第二 -个档案的建立或编辑并不会影响到第一个档案的缓冲区。这样子非常有用,但这 -个情形也表明了您需要「一个方便的方法」来储存第一个档案的缓冲区。只是为 -储存第一个档案就必须以 C-x C-f 切换缓冲区,才能以 C-x C-s 将它储存,总 -是个让人讨厌的过程。因此我们有 +如果你对文件做了修改,然后切换到另一个文件,这个动作并不会帮你把第一个 +文件存盘,对第一个文件的修改仍然仅限于 Emacs 中,也就是在它对应的缓冲区 +里。同时对第二个文件的修改也不会影响到第一个文件。这很有用,但是也挺麻 +烦,因为如果你又想要存储第一个文件,你还需要先用 C-x C-f 切换回去,然后 +再用 C-x C-s 存盘,这显然太麻烦了。你需要一个更简便的方法,而 Emacs 当 +然已经替你想到了: - C-x s 储存一些缓冲区 + C-x s 保存多个缓冲区 -C-x s 会询问您关於您已做出修改但还没储存的每一个缓冲区。它会问您,对於 -每一个这样的缓冲区,是否要储存? +C-x s 会找到所有已被修改但尚未存盘的缓冲区,然后向你逐个询问,是否需要 +存盘? ->> 插入一行文字,然后键入 C-x s。 - 它应该会问您是否要储存名为 TUTORIAL.cn 的缓冲区。 - 键入『y』以回答要储存。 +>> 插入一行文字,然后输入 C-x s。 + 它应该会问你,是否要储存名为 TUTORIAL.cn 的缓冲区? + 按“y”告诉它你想存盘。 -* 扩充指令集( EXTENDING THE COMMAND SET ) -------------------------------------------- +* 命令集扩展(EXTENDING THE COMMAND SET) +----------------------------------------- -由於 Emacs 拥有太多指令,即便使用上所有的 CONTROL 和 META 字元,也没办 -法完全摆上。Emacs 以 X(扩充『eXtend』)指令来解决这个问题。扩充指令有 -两种型式: +Emacs 的命令就像天上的星星,数也数不清。把它们都对应到 CONTROL 和 META +组合键上显然是不可能的事情。Emacs 用扩展(eXtend)命令来解决这个问题, +扩展命令有两种风格: - C-x 字元扩充。后面跟著一个字元。 - M-x 有名称的指令扩充。后面跟著一个长的名称。 + C-x 字符扩展。 C-x 之后输入另一个字符或者组合键。 + M-x 命令名扩展。M-x 之后输入一个命令名。 -还有一些指令通常来说是很有用的,但是比您已经学到的指令较少使用。您已经 -看过其中两个:档案指令中的 C-x C-f 去寻找,以及 C-x C-s 去储存。其他的 -例子则有结束 Emacs 阶段的指令 -- 这个指令是 C-x C-c。(不要担心您会失 -去已经做出的改变,C-x C-c 在它杀掉 Emacs 之前会提供储存每一个变动的档 -案的机会。) +很多扩展命令都很有用,虽然与你已经学过的命令比起来,他们可能不那么常用。 +你应该已经见过一些扩展命令了,比如用 C-x C-f 寻找文件和用 C-x C-s 保存 +文件。退出 Emacs 用的 C-x C-c 也是扩展命令。(不用担心退出 Emacs 会给你 +带来什么损失,Emacs 会在退出之前提醒你保存文件的) -C-z 是 *暂时* 离开 Emacs 的指令 -- 因此您稍后可以回到同样的 Emacs 阶段。 +在控制台下,C-z 可以暂时离开 Emacs——当然,你还可以再回来。 -在某些允许它的作用的系统中, C-z 会「暂停住( suspends )」Emacs,也就 -是说,它会回到 shell 但不会把 Emacs 毁掉。在最常用的 shell 中,您可以 -用『fg』或『%emacs』两种指令恢复 Emacs。 +在允许 C-z 的系统中,C-z 会把 Emacs“挂起”,也就是说,它会回到 shell +但不退出 Emacs。在那些最常用的 shell 中,通常可以用“fg”或者“%emacs” +命令再次回到 Emacs 中。 -在没有提供暂停功能的系统中,C-z 会在 Emacs 底下建立一个 subshell 以让 -您有机会执行其他的程式,并且在稍后回到 Emacs,它并没有真的离开 Emacs。 -在这个例子中,shell 指令『exit』是从subshell 回到 Emacs 的通常方式。 +在没有提供挂起功能的系统中,C-z 会在 Emacs 之下创建一个子 shell 来让你 +运行其它程序,并且再次“回到” Emacs 中——虽然我们并没有真正离开过。这 +种情况下,通常用shell 命令“exit”从子 shell 回到 Emacs。 -使用 C-x C-c 的时机是当您打算要登出时。它也非常适合用来离开被其他邮件 -处理程式,以及许多不同的应用程式所启动的 Emacs。然而在一般的状况下,如 -果您不打算登出,最好是把 Emacs 暂停而不是离开它。 +C-x C-c 最好在你打算退出登陆的时候再用。在 Emacs 被诸如邮件处理程序之类 +的外部程序调用之后,也可以用 C-x C-c 退出。不过一般来讲,如果你不想退出 +登录,最好还是把 Emacs 挂起而不是退出。 -有许多 C-x 的指令。这里是一份您已经学过的列表: +C-x 的扩展命令有很多,下面列出的是你已经学过的: - C-x C-f 找档案。 - C-x C-s 储存档案。 + C-x C-f 寻找文件。 + C-x C-s 保存文件。 C-x C-b 列出缓冲区。 C-x C-c 离开 Emacs。 - C-x 1 除了一个外,删去其他所有的窗格。 - C-x u 取消动作。 + C-x 1 关掉其它所有窗格,只保留一个。 + C-x u 撤销。 -以扩充来命名的指令通常是不太常使用的指令,或是只在特定的模式下才会使用 -的指令。一个例子是取代字串指令,它会全域地将一个字串以另一个来取代。当 -您键入 M-x 时,Emacs 会在萤幕的底端询问您,然后您也应该键入这个指令的 -名称。在这个例子中是『replace-string』只要键入『repl s<TAB>』,然后 -Emacs 将会补齐这个名称。以 <Return> 来结束这个指令名称。 +用命令名扩展的命令一般都不太常用,或者只在部分模式下被用到。比如 +replace-string(字符串替换)这个命令,它会在全文范围内把一个字符串替换 +成另一个。在你输入 M-x 的时候,Emacs 会在屏幕底端向你询问,然后你应该输 +入命令名。如果你想输入“replace-string”,其实只需要敲“repl s<TAB>”就 +行了,Emacs 会帮你自动补齐的。输入完之后按 <Return> 。 -取代字串指令需要两个参数 -- 被取代的字串以及用来取代它的字串。您必须以 -Newline 字元来结束每一个参数。 +字符串替换命令需要两个参数——被替换的字符串和用来替换它的字符串。每个 +参数的输入用换行符来结束。 ->> 将游标移到本行的下两行空白,然后键入 +>> 将光标移到本行的下两行空白,然后输入 M-x repl s<Return>changed<Return>altered<Return>。 - 【为了说明的目的,於下保留一行原文。 + 【为了继续练习,保留一行原文如下: Notice how this line has changed: you've replaced... 】 -请注意这一行是怎么改变的:在游标的起始位置之后,您已经将 c-h-a-n-g-e-d -这个字 -- 不管它在哪里出现 -- 以「altered」这个字来取代了。 +请注意这一行是怎么改变的:在光标之后的范围内,你已经将“changed”这个 +词——不管它在哪里出现——全部用“altered”替换掉了。 -* 自动存档( AUTO SAVE ) -------------------------- +* 自动保存(AUTO SAVE) +----------------------- -当您在一个档案中做了修改,但是还没有将它们储存起来,那么如果您的电脑当 -机,它们将有可能遗失。为了避免这种情形发生在您的身上,Emacs 会定期地将 -您正在编辑的档案写入「自动储存」档案中。自动储存档案在档名的前后会各有 -一个 # 符号;举例来说,如果您的档案名为「hello.c」,那么它的自动储存档 -案的档名就是「#hello.c#」。当您以平常的方式储存档案时,Emacs 就会把它 -的自动储存档删除。 +如果你修改了一个文件但是还没来得及存盘,然后你的计算机罢工了,那么你编 +辑的东西很可能就找不回来了。为了避免这样的不幸一再发生,Emacs 会定期将 +你正在编辑的文件存入一个“自动保存”文件中。自动保存的文件名的头尾各有 +一个“#”字符,比如你正在编辑“hello.c”,那么它的自动保存文件就叫 +“#hello.c#”。在你正常存盘之后,Emacs 会删除自动保存文件。 -如果当机,您可以经由正常地寻找档案,(指的是您在编辑的档案而不是自动储 -存档)然后键入 M-x recover file<Return> 来回复您的自动储存档。当它要求 -确认时,键入 yes<Return> 以继续并回复自动储存的资料。 +假如不幸真的发生了,你大可以从容的打开原来的文件(注意不是自动保存文件) +然后输入 M-x recover file<Return> 来恢复你的自动保存文件。在提示确认的 +时候,输入 yes<Return> 就行了。 -* 回应区( ECHO AREA ) ------------------------ +* 回显区(ECHO AREA) +--------------------- -如果 Emacs 见到您很慢地键入多字元指令,它会将它们显示在位於窗格下方, -称为「回应区」的区域给您参阅。回应区位在窗格的最后一行。 +如果 Emacs 发现你输入多字符命令的节奏很慢,它会在窗格的下方称为“回显区” +的地方给你提示。回显区位于屏幕的最后一行。 -* 状态行( MODE LINE ) ------------------------ - -位在回应区的正上面是称为「状态行」的一行。状态行显示出一些信息,如: +* 状态栏(MODE LINE) +--------------------- ---:** TUTORIAL.cn (Fundamental)--L670--58%---------------- +位于回显区的正上方的一行被称为“状态栏”。状态栏上会显示一些信息,比如: -本行提供一些关於「Emacs 的状态」以及「您正在编辑的文字」的有用信息。 +--:** TUTORIAL.cn (Fundamental)--L670--54%---------------- -您已经知道档名的意义是什么了 -- 就是您找的档案。-NN%-- 指出目前您在文 -字档中的位置;它的意思是说:有 NN 百分比的文字位在窗格的上面。如果档案 -的顶端就位在窗格中,那么它就会显示 --Top-- 而不是 --00%--。如果档案的 -底部就位在窗格中,那么它是显示 --Bot--。如果您正在看的文字档很小,在窗 -格中就足以看到全部的内容,那么状态行就会显示 --All--。 +状态栏显示了 Emacs 的状态和你正在编辑的文字的一些信息。 -L 和数字以另一种方式来表示出位置:它们给出了目前所在的行数( Line )。 +你应该知道文件名的意思吧?就是你找到的那个文件嘛。-NN%-- 显示的是光标在 +全文中的位置。如果位于文件的开头,那么就显示 --Top-- 而不是 --00%--;如 +果位于文件的末尾,就显示 --Bot--。如果文件很小,一屏就足以显示全部内容, +那么状态栏会显示 --All--。 -在靠近前面的星号表示您已经对这些文字做了改变。在您刚拜访或储存一个档案 -之后,状态行的那个部分会没有星号,只有破折号。 +L 和其后的数字给出了光标所在行的行号。 -状态行中位於小括弧里面的部分,是用来告诉您正在使用什么编辑模式。预设的 -模式是 Fundamental,也就是您现在使用的。它是「主模式」的一个例子。 +最开头的星号(*)表示你已经对文字做过改动。刚刚打开的文件肯定没有被改动 +过,所以状态栏上显示的不是星号而是短线(-)。 -Emacs 有许多不同的主模式。它们之中有一些是用来编辑不同的语言以及/或不 -同种类的文字,像是 Lisp 模式、 Text 模式等等。在任何的时间只有一个主模 -式可以作用,并且它的名称总可以在状态行中被找到,就在现在的 -「Fundamental」中的位置。 +状态栏上小括号里的内容告诉你当前正在使用的编辑模式。缺省的模式是 +Fundamental,就是你现在正在使用的这个。它是一种“主模式”。 -每一个主模式都使得一些指令的行为表现得不太一样。举例来说,在一个程式中 -有一些指令用来制作出注解,而由於每一种程式语言对於一个注解应该长得像什 -么,都有著不同的想法,因此每一个主模式都必须以不同的方式来插入注解。每 -一个主模式是一个延伸指令的名称,使得您可以用来切换至那个模式。举例来说, -M-x fundamental-mode 就是切换到 Fundamental 模式的一个指令。 +Emacs 的主模式林林总总。有用来编辑程序代码的——比如 Lisp 模式;也有用 +来编辑各种自然语言文本的——比如 Text 模式。任何情况下只能应用一个主模 +式,其名称会显示在状态栏上,就在现在显示“Fundamental”的地方。 -如果您想要编辑人类语言的文字档案 -- 像是现在的这一个,您应该使用 Text +主模式有时会改变一些命令的行为。比如说,不管编辑什么样的程序代码,你都 +可以用一个统一的命令来添加注释,但是在不同的语言中注释的语法往往是不同 +的,这时相应的主模式就会分别用各自的语法规则来添加注释。主模式都是可以 +用 M-x 启动的命令,所以 M-x fundamental-mode 就可以切换到 Fundamental 模式。 ->> 键入 M-x text mode<Return>。 +如果你要编辑自然语言文本——比如现在——你应该用 Text 模式。 -不要担心,没有任何一个您已经学过的 Emacs 指令,会被改变成任何非常不同 -的形式。但是您可以发现到 M-f 和 M-b 现在把撇号(')视为字的一部分。先 -前,在 Fundamental 模式中,M-f 和 M-b 将撇号视为字的分隔符号。 +>> 输入 M-x text mode<Return>。 -主模式通常会像上述那个例子一样,做出一些精巧的改变:大部分的指令在每一 -个主模式中「做同样的事」,但是它们以一点点不同的方式来工作。【再举个例 -子,接续上面所开的头,以程式语言的注解来说。同样一个插入注解的动作,因 -为您使用的程式语言/主模式的不同而不同。若您使用 C 语言,Emacs 插入 -『/* 介於中间的为注解区块 */』;若您使用的是 Fortran 语言,Emacs 插入 -『c 以字元 c 为首的为注解行』;若您使用的是 Basic 语言,Emacs 则插入『' -撇号以后的为注解文字』。编辑器的弹性如此,实在没有必要为了不同的语言、 -目的或外观,设计特殊化的编辑器。「求大同,存小异」在这里也是成立的。】 +别害怕,没有什么命令会改变功能。不过你可以发现,M-f 和 M-b 现在把单引号 +(')视为词的一部分了。而在先前,在 Fundamental 模式中,M-f 和 M-b 都将 +单引号视为分隔单词的符号。 -要浏览您现在所处的主模式的文档,键入 C-h m。 +主模式通常都会搞一些类似的小动作,因为很多命令其实完成的是“相同的工 +作”,只是在不同情况下会有不同的工作方式而已。【所谓“求同存异”,在 +Emacs 里得到了很好的体现】 ->> 使用 C-u C-v 一或数次,将本行带到靠近萤幕的上方。 ->> 键入 C-h m,看看 Text 模式与 Fundamental 模式是哪里不同。 ->> 键入 C-x 1 将文档从萤幕移除掉。 +用 C-h m 可以查看当前主模式的文档。 -主模式之所以称为「主要( major )」的原因是因为它们也有次模式( minor -mode )。次要的模式并不是主模式的其他选择,而只是次要的更改。每一个次 -模式可以被它本身启用或停止,和所有其他的次模式无关,并且也和您的主模式 -无关。所以您可以不使用次模式,或一个,或任何数量的次模式的组合。 +>> 用 C-u C-v 将本行带到靠近屏幕的上方。 +>> 输入 C-h m,看看 Text 模式与 Fundamental 模式有哪些不同。 +>> 输入 C-x 1 关掉文档窗格。 -有一个叫做 Auto Fill 模式的次模式非常有用,特别是在编辑人类语言的文字 -时。当这个模式启用时, Emacs 在当您插入文字并且使一行太宽时,会将那一 -行,在字与字之间自动地分隔开。 +主模式之所以称之为“主(major)”模式,是因为同时还有“辅模式”(minor +mode)存在。辅模式并不能替代主模式,而是在主模式之外再做一些辅助的修改。 +每个辅模式都可以独立地开启和关闭,跟其它辅模式无关,跟主模式也无关。所 +以你可以不用辅模式,也可以用一个或者多个辅模式。 -您可以 M-x auto fill mode<Return> 来将 Auto Fill 模式启用。当这个模式 -启用时,您可以使用 M-x auto fill mode<Return> 来将它取消。当这个模式不 -用时,则这个指令会将它启动,而当这个模式启用时,这个指令会将它关闭。我 -们说这个指令用来「切换( toggle )」模式。 +有一个叫做自动折行(Auto Fill)的辅模式用处很大,特别是在编辑自然语言文 +本的时候。这个辅模式启动后,Emacs 会在你打字超出一行边界时自动替你换行。 ->> 现在键入 M-x auto fill mode<Return>。然后一再地插入字串 - 「 asdf 」,直到您看到它分成两行。您必须在它们之间摆上空白, - 因为 Auto Fill 只在空白处断行。 +用 M-x auto fill mode<Return> 启动自动折行模式。启动之后,如果我们再用 +一次 M-x auto fill mode<Return>,自动折行模式就被关闭了。也就是说,如果 +自动折行模式没有开启,这个命令会开启它;而如果已经开启了,这个命令会关 +闭它。我们说这个命令用来“开关(toggle)”模式。 -边界通常被设定为 70 个字元,但是您可以用 C-x f 指令来改变它。您应该以 -一个数字参数的方式来给定您所希望的边界设定。 +>> 现在输入 M-x auto fill mode<Return>。然后随便敲点什么,直到你看到它 + 分成两行。必须敲一些空格,因为 Auto Fill 只在空白处进行断行。【空格 + 对英文来说是必须的,而对中文则不必。】 ->> 键入 C-x f 并附上引数 20:『C-u 2 0 C-x f』。 - 然后键入一些文字,看看 Emacs 以 20 个字元, - 在行与行之间进行 fill 动作。然后再用一次 C-x f 将边界设回 70。 +行边界通常被设定为 70 个字符【这里指英文字符】,你可以用 C-x f 命令来重 +新设定之。指定新行边界可以用数字参数来进行传递。 -如果您在一个段落的中间做出改变,Auto Fill 模式并不会为您重新进行 fill -的动作( re-fill )。要 re-fill 这个段落,键入 M-q (META-q),而游标必 -须处在其中。 +>> 输入 C-x f 并传递参数 20: C-u 2 0 C-x f。 + 然后输入一些文字,观察 Emacs 的自动折行动作 + 最后再用 C-x f 将边界设回 70。 ->> 移动游标到前一段中,然后键入 M-q。 +如果你在段落的中间做了一些修改,那么自动折行模式不会替你把整个段落重新 +折行。重新自动折行用 M-q,注意使用的时候光标必须位于你想折行的那一段里。 +>> 移动光标到前一段中,然后输入 M-q。 -* 搜寻( SEARCHING ) ---------------------- -Emacs 可以搜寻字串(字串可以是一群连续的字元或字)【就中文来说,字元和 -字基本上意义相同;此处所指的『字』,是英文中没有被空白隔开的字元集 -合。】,往前或往后搜寻都可以。搜寻一个字串是一种游标移动指令,它会将游 -标移动到字串出现的下一个地方。 +* 搜索(SEARCHING) +------------------- + +Emacs 可以向前或者向后搜索字符串。搜索命令是一个移动光标的命令:搜索成 +功后,光标会停留在搜索目标出现的地方。 -Emacs 搜寻指令与大部分编辑器的搜寻指令不同的地方在於,它是「渐进的 -( incremental )」。这表示搜寻发生在您键入想要搜寻的文字串后。 +Emacs 的搜索命令的独特之处在于,它是“渐进的(incremental)”,意思是搜 +索与输入同时进行:你在这边一个字一个字地输入你想搜索的东西,同时 Emacs +在那边就替你搜索了。 -要开始搜寻的指令是:C-s 往前搜寻,C-r 往后搜寻。但先等一下!现在先不要 -试。 +C-s 是向前搜索,C-r 是向后搜索。不过手别这么快!先等等别着急试。 -当您键入 C-s 时,会发现到有一个字串「I-search」出现在回应区中作为提示。 -它告诉您 Emacs 现在正处於称为「渐进式搜寻」的状态中,等待您键入您想要 -搜寻的字串。<Return> 会结束一个搜寻。 +在你按下 C-s 之后,你会发现回显区里有“I-search”字样出现,这是在提示 +你目前 Emacs 正处于“渐进搜索”状态,正在等待你输入搜索字串。<Return> +会结束搜索。 ->> 现在键入 C-s 开始一个搜寻。慢一点,一次键入一个字元, - 键入『cursor』这个字,每键入一个字元时,稍微停一下, - 注意看看游标发生了什么事。现在您已曾经搜寻过「cursor」这个字了。 ->> 再次键入 C-s 来搜寻「cursor」的下一个出现位置。 ->> 现在键入 <Delback> 四次,看看游标是如何移动的。 ->> 键入 <Return> 结束搜寻。 +>> 输入 C-s 开始一个搜索。注意敲慢一点,一次输入一个字符。 + 慢慢输入“cursor”整个词,每敲一个字就暂停一下,注意观察光标。 + 现在你应该已曾经找到“cursor”这个词了。 +>> 再按一次 C-s,搜索下一个“cursor”出现的位置。 +>> 现在按四次退格键,看看光标是如何移动的。 +>> 敲 <Return> 结束搜索。 -您有没有看到发生了什么?在一个渐进式搜寻中,Emacs 试著要走到您键入的字 -串的下一个出现位置。要移动到游标所在的下一个出现位置,只要再键入 C-s -一次。如果并没有这样的出现位置存在,Emacs 会哔一声,并告诉您目前的搜寻 -「失败」。另外 C-g 也可以用来结束搜寻。 +刚才看仔细了么?在一个渐进式搜索中,Emacs 会尝试跳到你输入的字符串的出 +现位置。想跳到下一个搜索目标出现的位置,只要再按一次 C-s 就行了。如果找 +不到,Emacs 会发出“哔”的一声,告诉你搜索失败。在整个过程中,都可以用 +C-g 来终止搜索。【你会发现 C-g 之后光标回到了搜索开始前的地方,而 +<Return> 会让光标留在搜索结果上,这是很有用的功能。】 -注意:在某些系统中,键入 C-s 将会把萤幕冻结,您将看不到从 Emacs 来的任 -何输出。这表示操作系统一个称为「流程控制」的「功能」将 C-s 指令拦截住, -并且不让它传到 Emacs。要取消萤幕的冻结,请键入 C-q。然后到 Emacs 使用 -手册中看看对於「渐进式搜寻的同时进入( Spontaneous Entry to -Incremental Search )」这个主题,以取得处理这个「功能」的建议。 +注意:使用某些终端的时候,输入 C-x C-s 会冻结屏幕【屏幕没有任何输出】, +这样你就看不到 Emacs 的任何变化。其原因是操作系统的“流量控制”功能把 +C-s 拦截了,并且冻结了屏幕,Emacs 自然也就看不到这个输入了。用 C-q 可以 +解除屏幕冻结。要解决这个问题,请参考 Emacs 手册里的“Spontaneous Entry +to Incremental Search”一节【Emacs 手册可能还没有中文翻译】,那里可能有 +一些有用的建议。 -如果您在一个渐进式搜寻的中间,并且键入 <Delback>,您可以发现在搜寻字串 -中的最后一个字元被消除了,并且搜寻会回到这个搜寻的最后一个地方。举例来 -说,假设您已经键入了『c』,用来寻找「c」的第一次出现。现在如果您键入 -『u』,游标会移动到「cu」的第一次出现位置。现在键入 <Delback> ,这会将 -「u」从搜寻字串中消除,并且游标会移回到「c」的第一次出现位置。 +如果你正在渐进式搜索中,按退格键会删除目标字符串的最后一个字符,并且光 +标会回到最近一次搜索的命中位置。比如你已经输入了“c”,光标就停在“c” +第一次出现的地方,再输入“u”,光标停在“cu”第一次出现的地方,这时再按 +退格键,“u”就从搜索字串中消失了,然后光标会回到“c”第一次出现的地方。 -如果您在一个搜寻的中间,并且键入一个 CONTROL 或 META 字元的话,(但有 -一些例外 -- 对搜寻而言特别的字元,像是 C-s 和 C-r ),搜寻会被结束。 +另外如果你在搜索的时候输入了 CONTROL 或者 META 组合键的话,搜索可能会 +结束。(也有例外,比如 C-s 和 M-r 这些对搜索有特别意义的组合键。) -C-s 会开始一个搜寻,它会寻找搜寻字串在目前游标位置「之后」,的任何出现 -位置。如果您想要在先前文字中搜寻,键入 C-r 作为替代。除了搜寻的方向相 -反之外,我们所说的有关 C-s 的所有事情,同样地可以应用到 C-r 上。 +前面说的都是“向下”搜索,如果想“向上”搜索,可以用 C-r。C-r 与 C-s +相比除了搜索方向相反之外,其它的操作都一样。 -* 多重窗格( MULTIPLE WINDOWS ) --------------------------------- +* 多窗格(MULTIPLE WINDOWS) +---------------------------- -Emacs 许多好功能的其中之一是,您可以在萤幕中同时展示超过一个窗格。 +Emacs 的迷人之处很多,能够在屏幕上同时显示多个窗格就是其中之一。 ->> 移动游标到这一行并且键入 C-u 0 C-l。 +>> 移动光标到这一行,然后输入 C-u 0 C-l。 ->> 现在键入 C-x 2,它会将萤幕平分成两个窗格。 - 这两个窗格都显示著这个快速指南。游标则停留在上方的窗格。 +>> 现在输入 C-x 2,它会将屏幕划分成两个窗格。 + 这两个窗格里显示的都是本篇快速指南,而光标则停留在上方的窗格里。 ->> 键入 C-M-v 以卷动下方的窗格。 - (如果您并没有一个真的 META 键,则键入 ESC C-v 亦可。) +>> 试试用 C-M-v 滚动下方的窗格。 + (如果你并没有 META 键,用 ESC C-v 也可以。) + 【向上滚动是 C-M-S-v,也就是同时按住 CONTROL、META 和 SHIFT 再按 v】 ->> 键入 C-x o(『o』指的是其他『other』的意思), - 将游标移动到下方的窗格。 +>> 输入 C-x o(“o”指的是“其它(other)”), + 将光标转移到下方的窗格。 ->> 在下方的窗格中,使用 C-v 和 M-v 来卷动它。 - 继续维持在上方的窗格中阅读这些指引。 +>> 在下方的窗格中,用 C-v 和 M-v 来滚动。 + 同时继续在上方的窗格里阅读这些指导。 ->> 再一次键入 C-x o 将游标移回到上方的窗格。 - 游标会回到它在上方窗格中,原本所在的位置。 +>> 再输入 C-x o 将光标移回到上方的窗格里。 + 光标会回到它在上方窗格中原本所在的位置。 -您可以持续使用 C-x o 在窗格之间切换。每一个窗格有它自己的游标位置,但 -是只有一个窗格会真的显示出游标。所有通常的编辑指令只会应用到那个游标所 -在的窗格。我们称这个为「被选择的窗格」。 +连续使用 C-x o 可以遍历所有窗格。每一个窗格都有它自己的光标位置,但是只 +有一个窗格会真正显示这个光标。【其它窗格在控制台下不会显示光标,在图形 +窗口下缺省显示为镂空光标。】一般所有的编辑命令都作用于这个光标所在的窗 +格,我们称这个窗格为“被选中的窗格”。 -指令 C-M-v 在当您於一个窗格中编辑文字,并使用其他的窗格作为参考之用时, -是非常有用的。您可以将游标一直保持在您正在编辑的窗格中,并以 C-M-v 指 -令在其他的窗格循序地前进。【验证工作特别适合以这种方式来进行,如 GNU -中译小组:找一个原始英文档案;再找它翻译好的中文档案,编辑这个「被选择 -的窗格」,以 C-M-v 指令跟上验证中的段落……。】 +当你在一个窗格中编辑,但是想用另一个窗格作参考的时候,C-M-v 是很有用的 +命令。你可以保持光标始终处于编辑窗格中,然后用 C-M-v 命令在另外一个窗格 +里滚动。【翻译和校对就很适合用这种方式进行。】 -C-M-v 是 CONTROL-META 字元的一个例子。如果您有一个真的 META 键,您可以 -同时按住 CONTROL 和 META 再键入 v 来键入 C-M-v。CONTROL 或 META 「谁先 -被按住」并没有影响,因为这两个键都是用来修饰您所键入的字元。 +C-M-v 是一个 CONTROL-META 组合键。如果你有 META 键,你可以同时按住 +CONTROL 和 META 键然后输入 v。CONTROL 和 META 键哪个先按没有关系,因为 +它们只是用来“修饰(modify)”你输入的字符的。 -如果您并没有一个真的 META 键,您可以使用 ESC 来作为替代,这样子顺序就 -有关系了:您必须键入 ESC ,跟著键入 CONTROL-v,CONTROL-ESC v 并不会作 -用。这是因为 ESC 是一个具有本身作用的字元,而不是一个修饰键。 +如果你并没有 META 键,你也可以用 ESC 来代替,不过这样子按键顺序就有关系 +了:你必须输入 ESC ,然后再输入 CONTROL-v。CONTROL-ESC v 是没用的,因为 +ESC 本身是一个字符键,而不是一个修饰键(modifier key)。 ->> (在上方窗格)键入 C-x 1 以除去下方窗格。 +>> (在上方窗格里)输入 C-x 1 关掉下方窗格。 -(如果您已经在底端的窗格键入 C-x 1,那么将会把上面的窗格隐藏住。将这个 -指令想像成「只保留一个窗格 -- 我正在编辑的这个。」) +(如果你在下方的窗格里输入 C-x 1,那么就会关掉上方的窗格。你可以把这个 +命令看成是“只保留一个窗格”——就是我正在编辑的这个。) -您不需要在两个不同的窗格中显示相同的缓冲区。如果您使用 C-x C-f 在一个 -窗格中找档案,另一个窗格并不因而改变。您可以在独立的任一个窗格中找〔它 -自己的〕一个档案。 +不同的窗格里可以显示不同的缓冲区。如果你在一个窗格里用 C-x C-f 打开了 +一个文件,另一个窗格并不会有什么变化。在任何一个窗格里都可以打开文件。 -这里有另外一个方式可以用来,使用两个窗格显示两个不同的东西: +有一种方式可以让你在另一个窗格里打开文件: ->> 键入 C-x 4 C-f,后面跟著您的其中一个档案的名称。 - 以 <Return> 作为结束。看看指定的档案出现在下方的窗格。 - 游标也跑到那里。 +>> 输入 C-x 4 C-f,后面紧跟着输入一个文件名,用 <Return> 结束。 + 可以看到你指定的文件出现在下方的窗格中,同时光标也跳到了那里。 ->> 键入 C-x o 以回到上方的窗格,然后以 C-x 1 删除掉下方窗格。 +>> 输入 C-x o 回到上方的窗格,然后再用 C-x 1 关掉下方窗格。 -* 递归编辑阶层( RECURSIVE EDITING LEVELS ) --------------------------------------------- +* 递归编辑(RECURSIVE EDITING LEVELS) +-------------------------------------- -有时候您会进入所谓的「递归编辑阶层」。它是由位在状态行的方括弧所指明, -并且包含住以小括弧来指明的模式名称。举例来说,您可能会看到 -[(Fundamental)],而不是 (Fundamental)。 +有时候你会进入所谓的“递归编辑”。递归编辑状态由位于状态栏的方括号所指 +示,其中包含了用小括号来指明的模式名称。比如说,你有时可能会看到 +[(Fundamental)],而不是 (Fundamental)。【比如在用 M-% 进行交互式替换的 +时候你又用了 C-s 进行搜索,这时替换模式并没有结束,但你又进入了搜索模式, +这就是所谓的递归编辑。】 -要离开递归编辑阶层,请键入 ESC ESC ESC。这是个全功能的「离开」指令。您 -也可以使用它来除去多余的窗格,并且离开小缓冲区。 +离开递归编辑可以用 ESC ESC ESC。这是一个最通用的“离开”命令,你甚至可 +以使用它来关掉多余的窗格,或者离开小缓冲。 ->> 键入 M-x 以进入小缓冲区;然后键入 ESC ESC ESC 离开。 +>> 输入 M-x 进入小缓冲;然后输入 ESC ESC ESC 离开。 -您无法使用 C-g 来离开递归编辑阶层。这是因为 C-g 是用来取消指令以及「位 -於」递归编辑阶层中的「引数( arguments )」之故。 +你不能用 C-g 来离开递归编辑,因为 C-g 的作用是取消命令和“参数 +(arguments)”,而这些东西都位于本层递归编辑“之内”。 -* 取得更多的帮助( GETTING MORE HELP ) ---------------------------------------- +* 获得更多帮助(GETTING MORE HELP) +----------------------------------- -在本快速指南中,我们试著仅提供刚刚好的信息让您可以开始使用 Emacs。在 -Emacs 中有太多可取得的信息,想要在这里全部解释是不可能的。然而,您也许 -会想要学习更多 Emacs 相关的信息,因为它有许多其他有用的功能。Emacs 提 -供了「阅读有关 Emacs 指令」的指令。这些「help」指令都以 CONTROL-h 这个 -字元作为开头,称作为「Help 字元」。 +本快速指南的目的仅仅是帮助你学会在 Emacs 的大海里游泳,不至于一上来就淹 +死。有关 Emacs 的话题三天三夜也讲不完,这里自然是写不下了。Emacs 很理解 +你求知若渴的心情,因为它提供的强劲功能实在是太多了。Emacs 提供了一些命 +令来查看 Emacs 命令的文档,这些命令都以 CONTROL-h 开头,这个字符也因此 +被称为“Help(帮助)字符”。 -要使用 Help 功能,键入 C-h 字元,然后再键入一个说明您所需要的帮助的字 -元。如果您真的不知道要问什么,那么请键入『C-h ?』,此时 Emacs 将会告诉 -您它能够提供的帮助。如果您已经键入 C-h,但发现您并不需要任何帮助,键入 -C-g 来取消掉它就是了。 +要使用帮助(Help)功能,请先输入 C-h,然后再输入一个说明你需求的字符。 +如果你晕到连需要什么帮助都不知道,那么就输入 C-h ?,Emacs 会告诉你它能 +提供哪些帮助。如果你已经按了 C-h 又想反悔,那么用 C-g 取消它就是了。 -(有些网站将 C-h 这个字元的意义改变了。他们真的不应该把它设为对所有使 -用者全部都适用的方法,所以您现在就有了个理由来抱怨系统管理者了。在此同 -时,如果 C-h 并没有在窗格的底部显示任何有关帮助的讯息,试著键入 F1 键, -或是 M-x help <Return>。) +(有些站点改变了 C-h 的意思,他们这种以己度人外加一刀切的做法让倒是让你 +可以义正辞严的抱怨系统管理员,真的不是太好。话说回来,如果你按 C-h 之后 +没有任何帮助信息显示出来,那么试试 F1 键或者 M-x help <Return>。) -最基本的 HELP 功能是 C-h c。键入 C-h,字元 c,以及一个或一串字元;然后 -Emacs 会显示一个非常简短的有关这个指令的解释。 +最基本的帮助功能是 C-h c。输入 C-h c 之后在输入一个组合键,Emacs 会很简 +要地给出这个命令的说明。 ->> 键入 C-h c C-p。 +>> 输入 C-h c C-p。 -讯息应该会像是这样: +显示的消息应该会是这样: C-p runs the command previous-line -这告诉了您「函数的名称」。函数名称主要是用来自订以及扩充 Emacs。但是由 -於函数名称是由「用来指出这指令在做些什么」而被选定,它们因此也可以作为 -非常简短的文档 -- 足够提醒您已经学过的指令。 +这条消息显示了 C-p 命令对应的函数名,函数名主要用来定制和扩展 Emacs。命 +令的功能由函数完成,所以函数名本身也可以被看成是最简单的文档——至少对 +于你已经学过的命令来说,它们的函数名足以解释它们所完成的工作了。 -多字元指令像是 C-x C-s 和 (如果您没有 META 或 EDIT 或 ALT 键)<ESC>v -也可以在 C-h c 后面出现。 +多字符命令一样可以用 C-h c 来查看。 -要取得更多有关一个指令的信息,用 C-h k 来取代使用 C-h c 。 +想得到更多的信息,请把 C-h c 换成 C-h k 试试看。 ->> 键入 C-h k C-p。 +>> 输入 C-h k C-p。 -这会在一个 Emacs 窗格显示这个函数的说明文档以及它的名称。当您阅读完后, -键入 C-x 1 以跳离这些帮助文字。您并不需要马上跟著做。您可以做些编辑, -当参考到帮助文字时再键入 C-x 1。 +上面的命令会新打开一个 Emacs 窗格,并在其中显示函数的名称及其文档。你读 +完之后,可以用 C-x 1 关掉这个帮助窗格。当然你并不需要在 C-h k 之后立即 +这样做,你完全可以先在编辑窗格里做点别的事情,然后再用 C-x 1 关掉帮助。 -这里有一些其他有用的 C-h 选项: +还有一些其他有用的 C-h 命令: - C-h f 解释一个函数。您要键入此函数的名称。 + C-h f 解释一个函数。你要输入函数名。 ->> 试著键入 C-h f previous-line<Return>。 - 这会印出 Emacs 所有的有关「实作出 C-p 这个指令的函数」的信息 +>> 试试看,输入 C-h f previous-line<Return>。 + Emacs 会给出它所知道的所有有关“实现 C-p 命令功能的函数”的信息。 -C-h v 这个类似的指令会显示出「您可以用来自订 Emacs 行为的变数」的文档。 -当 Emacs 要求时,您需要键入这变数的名称。 +C-h v 用来显示 Emacs 变量的文档,Emacs 变量可以被用来“定制 Emacs 的行 +为”。同样,你需要输入变量的名称。 - C-h a 指令相关查找( Command Apropos )。 - 键入一个关键字然后 Emacs 会列出所有 - 「在其名称中含有此关键字」的全部指令。 - 这些指令全部都可以经由 META-x 来启动。 - 对於一些指令而言,指令相关查找也会列出 - 「可以执行相同指令」的一个或两个字元的串列。 + C-h a 相关命令搜索(Command Apropos)。 + 输入一个关键词然后 Emacs 会列出所有命令名中包含此关键词 + 的命令。这些命令全都可以用 M-x 来启动。对于某些命令来说, + 相关命令搜索还会列出一两个组合键。 ->> 键入 C-h a file<Return>。 +>> 输入 C-h a file<Return>。 -这会在另一个窗格显示一个「在其名称中含有『file』的全部 M-x 指令」的列 -表。您将会看到像是 C-x C-f 的「字元-指令」列在其相对应指令名称(如: -find-file )的旁边。 +Emacs 会在另一个窗格里显示一个 M-x 命令列表,这个列表包含了所有名称中含 +有“file”的命令。你可以看到像“C-x C-f”这样的组合键显示在“find-file” +这样的命令名的旁边。 ->> 键入 C-M-v 上下移动 help 窗格。试个几次。 +>> 用 C-M-v 来回滚动 help 窗格,多试几次。 ->> 键入 C-x 1 来删除 help 窗格。 +>> 输入 C-x 1 来删除 help 窗格。 - C-h i 阅读线上使用手册( a.k.a. Info )。 - 这个指令将您带到了称为「*info*」的特殊缓冲区,在那, - 您可以阅读安装在您的系统里的软件包的线上使用手册。 - 键入 m emacs <Return> 以阅读 Emacs 使用手册。 - 如果您在此之前未曾使用过 Info 系统,请键入『?』。 - Emacs 将会带您进入 Info 模式功能的导览指南。 - 一旦完成了本快速指南的研读,您应该查阅 Emacs Info - 使用手册,以作为主要的参考文档。 + C-h i 阅读联机手册(也就是通常讲的 Info)。 + 这个命令会打开一个称为“*info*”的特殊缓冲区,在那里, + 你可以阅读安装在系统里的软件包使用手册。要读 Emacs 的使 + 用手册,按 m emacs <Return> 就可以了。如果你之前从没用 + 过 Info 系统,那么请按“?”,Emacs 会带你进入 Info 的使 + 用指南。在看完本快速指南之后,Emacs Info 会成为你的主要 + 参考文档。 -* 更多功能特色( MORE FEATURES ) ---------------------------------- +* 更多精彩(MORE FEATURES) +--------------------------- -您可以经由阅读 Emacs 使用手册〈不论是一本书或是在 Info 中的线上版本 -(使用 Help 选单或是键入 F10 h r )〉来学到更多有关它的知识。有两个您 -可能会特别喜欢的功能特色是可以节省打字量的 completion 还有简化档案处理 -的 dired 。 +想了解更多使用 Emacs 的知识,应该去读一读 Emacs 使用手册——可以是纸版 +的书,也可以是电子版的联机帮助(可以从 Help 菜单进入或者按 F10 h r)。 +提两个你可能会很感兴趣的功能吧,一个是可以帮你少敲键盘的 completion(自 +动补全),一个是方便文件处理的 dired(目录编辑)。 -Completion 是一种避免不必要的打字的方式。举例来说,如果您想要切换 -*Messages* 缓冲区,您可以键入 C-x b *M<Tab> ,只要可以从您已经键入的文 -字中确定, Emacs 就会将剩下的缓冲区名称补齐。 Completion 是在 Emacs 使 -用手册的 Info 中,称为「Completion」的节点中所解释的。 +Completion 可以替你节省不必要的键盘输入。比如说你想切换到 *Message* 缓 +冲区,你就可以用 C-x b *M<Tab> 来完成,只要 Emacs 能够从你已经输入的文 +字中判断出你想要输入的东西,它会自动帮你补齐余下的。有关 Completion 的 +详细解释可以在 Emacs Info 中的“Completion”一节里找到。 -Dired 使您可以在一个目录中列出档案(次目录则是可选的)、在列表中到处移 -动、拜访、重新命名、删除以及对档案作操作。 Dired 是在 Emacs 使用手册的 -Info 中,称为「Dired」的节点中所解释的。 +Dired 可以在一个缓冲区里列出一个目录里的所有文件(可以选择是否也列出子 +目录),然后你可以在这个文件列表上完成对文件的移动、访问、改名或者删除 +等等操作。Dired 也在 Emacs Info 中有详细说明,就在“Dired”一节。 -使用手册也解释了许多其它 Emacs 的功能特色。 +Emacs 使用手册里还有很多很多的精彩功能等着你来了解。 -* 结论( CONCLUSION ) ----------------------- +* 总结(CONCLUSION) +-------------------- -记住,要完全离开 Emacs 请使用 C-x C-c 。要暂时离开到 shell,稍后再回到 -Emacs,请使用 C-z 。 +记住,要退出 Emacs 请用 C-x C-c。要暂时切换到 shell 并且稍后再回到 +Emacs 里来,请用 C-z。【切换到 shell 仅对控制台下的 Emacs 有效】 -本快速指南对於所有的新手应该都是易於理解的,所以如果您发现了什么地方不 -清楚,不要只是坐著怪自己 -- (向本文作者和翻译)发点牢骚吧! +本文完全是为零起点新手写的傻瓜教程。如果你觉得哪里还看不明白,千万不要 +觉得不好意思,那一定是我们没有写好。我们永远欢迎你的不满和抱怨。 -* 翻译( TRANSLATION ) ------------------------ +* 翻译(TRANSLATION) +--------------------- -本快速指南的翻译人员列表如下,如果您在阅读本文之前,「完全」对 Emacs -没有概念,请告诉我们您的意见以作为本文后续的改进依据。翻译也提供了一份 -《GNU Emacs 中文处理说明》在 -http://www.gnu.org/software/chinese/guide/emacs-chinese.cn.html 〈部份 -内容已经整理到本快速指南〉,也请您自行参阅。 - -编辑器是电脑使用者最常接触到的应用程式,因此不应该让初学者感到过於困难, -就一般的评论来说, Emacs 是不难学会使用的编辑器,但您的意见可以使它更 -为贴近一般的使用者,并使电脑作为工具的角色得以充分发挥。如果您愿意提供 -改进的意见,请寄 email 到<chinese-translators@gnu.org> 。请不要害羞, -我们欢迎任何有关的讨论;如果您不想寄到邮件清单,请直接 email 给本文翻 -译 <chliu@gnu.org> 。请在 Title 行中包含此字串「Emacs TUTORIAL: <your -issue here>」。 - -如果您是 Emacs 老手,GNU Chinese Translators Team (GNU/CTT) -<http://www.gnu.org/software/chinese/> 欢迎您的加入,我们现在正需要愿 -意投入翻译 Emacs 使用手册的人员。 - -本快速指南并没有采用习惯上编辑器所使用的翻译术语,一方面因为它的实际意 -义与一般的编辑器不同,原文本就不同;另一方面也因为 Emacs 所采用的视觉 -设计概念,早在窗口化系统之前就已经存在,本质也不相同。总之,翻译以为这 -样可以帮助对於 Emacs 整个设计哲学的理解。如果收到的回覆中,大部份要求 -提出修改,我们还是从善如流。 - -(0) 为了避免「游标移动指令」论述上的混淆,本文采用的术语为: - 往「前」移( move Forward );往「后」移( move Backware ) - 〔或是往「回」移〕; - 往「上」移( Previous line );往「下」移( Next line )。 -(1) 在本文中,「行」指的是 row,这是采用一般的习惯用法。 - 为了避免误导中文读者,特别在此说明。在正式的用法中: - 「column」翻译为「行」,以「纵」为行(直行),也译为「栏」; - 「row」翻译为「列」,以「横」为列(横列)。 - 读者思索一下「合纵连横」应该可以理解。 - 大约是因为中文原本是直书的,我们说「一行字」是没问题; - 但现在大部份的情形中文是横书的,由於习惯使然也称为一行字了。 -(2) 有关於「文字」及其集合的相关译文,翻译所采用的有: - 编辑的「文字」:「然后键入一些文字」; - 用来作为说明功能的「文档」:「这个函数的说明文档」; - 特指其所说明的内容的「文本」:「实际效力以英文本为准」。 - 即使只是「一行字」,只要它是用来作为说明之用, - 翻译还是将它视为「文档」。 -(3) 「cut」的动作在 Emacs 中分为「杀掉」和「删除」,之间的差异如下: - 一般编辑器中的「cut」:只有最近被 cut 的文字摆到 clipboard 中; - 「杀掉( killing )」:被杀掉的文字,全部被加入到 kill ring 中; - 「删除( deleting )」:被删除的文字,就是被删除了。 - 因此在一般编辑器中,您只能 paste「最近」被 cut 的文字; - 而在 Emacs 中,您可以「拉回」任何先前被杀掉的文字,同时, - 它的作法很容易。至於被删除的,因为用来作为「删除」功能的指令, - 所能移去的文字数量都很少,因此也没什么好拉回的; - 如果真的想回复这些文字,undo 您的动作就是了。 -(4) 「window」同时翻译为「窗口」和「窗格」, - 前者表示现在一般概念中的窗口系统,如「X 窗口」; - 后者表示 Emacs 中的窗口,翻译在此通称为「窗格」。 - Emacs 的「窗格」即使在命令列提示下也可以正常工作, - 此一基本特性显然值得我们以另一个专用术语来描述它。 -(5) 关於档案的术语,「找」一个档案在 Emacs 中有两种作用: - 找一个「并不存在」的档案,读者应认知为「开新档案」; - 找一个「已经存在」的档案,则是「开启旧档」。 - Emacs 只以一个「找」的动作来解决,主要的原因是「实际上」 - 的软件工作如此。黑客们应该会发现这样比较自然, - 因为它反应了电脑的工作方式,同时操作起来也较少废话。 -(6) 在【】中的文字为翻译的注解。 -(7) 关於使中文文档结构化的议题,问题已经获得解决。 -(8) 本翻译文本所采用的简繁用语差异列表如下: - zh cn - 文件 文档 - 软体 软件 - 作业 操作 - 套件 包 - 视窗 窗口 - 递回 递归 - 骇客 黑客 - 资讯 信息 - -另外,我们也十分欢迎读者可以直接修改本快速指南,做出自己的版本,以自己 -认为最为合适的方式来介绍 Emacs 。如果您做出了这样个人化的版本,并且认 -为足供大家参考使用,请寄给 <chinese-coordinators@gnu.org> ,我们会将您 -的版本公开在 GNU/CTT 的网页中提供给中文使用者下载。 - -翻译:刘 昭宏 <chliu@gnu.org> -验证:马 雪萍 - - -* 复制( COPYING ) -------------------- +翻译:孙 一江 <sunyijiang@gmail.com> +校对:水木社区(www.newsmth.net)Emacs 板众多网友 + +Emacs 快速指南(Tutorial)早有两个刘昭宏的中文译本,繁简各一。其简体版本 +(TUTORIAL.cn)基本由繁体版本(TUTORIAL.zh)经词语替换而得。然而繁简中文 +不仅在用词习惯上有所不同,更有诸多表达方式和句法方面的差异。因此一直以来 +阅读 TUTORIAL.cn 都略觉晦涩和生硬。这次重新翻译 TUTORIAL.cn 的动机正是源 +于这种体验,希望我们的工作能够让本文更好的发挥其应有的作用。TUTORIAL.zh +的译文质量很高,在翻译过程中给予过我们很多借鉴和参考,在此对刘昭宏的工作 +表示感谢。 + +翻译过程中最大的挑战莫过于术语译词的选择了。经过水木社区 Emacs 板热心网 +友小范围内的讨论,我们选择了现在的译法。用户的广泛参与是自由软件生命力的 +源泉,所以如果你有任何建议、勘误或更好的想法,请用你喜欢的方式向我们提出 +。你可以直接给我发电子邮件,也可以放到 GNU Emacs 的开发邮件列表或者水木 +社区的 Emacs 板上进行讨论。下面列出主要术语的译词对照,并给出注释说明: + + command 命令 + cursor 光标 + scrolling 滚动 + numeric argument 数字参数 + window 窗格 [1] + insert 插入 + delete 删除 [2] + kill 移除 [2] + yank 召回 [2] + undo 撤销 + file 文件 + buffer 缓冲区 + minibuffer 小缓冲 + echo area 回显区 + mode line 状态栏 + search 搜索 + incremental search 渐进式搜索 [3] + +[1] “window”一词在计算机相关的领域一般都被译为“窗口”。但是在 Emacs + 中,还有一个“frame”的概念。在被广泛使用的 X 窗口系统和微软的视窗 + (Windows)系列操作系统中,Emacs 的一个“frame”就是一个“窗口”,因 + 此把 Emacs 中的“frame”译成“窗口”更加符合通常的习惯。这样,Emacs + 中的“window”就只能译成“窗格”了。我们认为 Emacs 中 window 和 + frame 的关系用窗格和窗口来类比是十分形象的。 + +[2] 对于“delete”和“kill”的区别,正文已经给出了详细的说明。“删除”和 + “移除”相比较起来,前者更多地隐含着“破坏”和“不可恢复”的意思,而 + 后者更多地隐含着“被转移”和“可恢复”的意思。因此分别选择它们作为上 + 述两词的译词,希望能够体现出区别。“yank”在中文文档中鲜有对应译词出 + 现,翻译的困难较大。究其本意是:“a strong sudden pull”(参见韦氏词 + 典),即“猛然拉回”。在原文档中 yank 被引申为“将先前移除的东西再移 + 回来”这个意思,所以我们选择了“召回”一词与其对应。 + +[3] “incremental”一词在计算机著作中广泛出现,被广泛接受的中文译词有两 + 个:“增量的”和“渐进的”。“incremental search”翻译成“增量式搜索 + ”或者“渐进式搜索”都讲的通,且都有各自的形象之处。还是参考原文对其 + 的解释:“... means that the search happens while you type in the + string to search for”。意思是之所以称其为“incremental search”,是 + 因为“在你输入搜索字符串的过程中,搜索就已经在进行了”。我们认为“增 + 量的”更加强调在现有基础上的变化(比如“增量备份”,“增量编译”); + 而“渐进的”更加强调过程的逐渐发展,也更加符合原文的意思。因此我们选 + 择将“incremental search”译作“渐进式搜索”。 + + +* 版权声明(COPYING) +--------------------- -本快速指南沿袭自具有悠久历史的 Emacs 快速指南,由 Stuart Cracraft 为了 -原始的 Emacs 所撰写的版本开始。 +This tutorial descends from a long line of Emacs tutorials +starting with the one written by Stuart Cracraft for the original Emacs. -这个版本的快速指南和 GNU Emacs 一样都是版权化的,并且允许在某些条件下 -散布其拷贝: +This version of the tutorial, like GNU Emacs, is copyrighted, and +comes with permission to distribute copies on certain conditions: Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -Chinese Translation by Chao-Hong Liu (2002, 2003) Permission is granted to anyone to make or distribute verbatim copies of this document as received, in any medium, provided that the @@ -1059,27 +991,37 @@ Chinese Translation by Chao-Hong Liu (2002, 2003) and that the distributor grants the recipient permission for further redistribution as permitted by this notice. - 本文允许在不变更文档内容的前提下刊登在任何形式的媒体中, - 但需保留版权声明以及许可声明, - 散布者也必须给予接受者如同此声明所允许的,进一步散布的许可。 - 【本段译文提供读者作为参考以帮助理解,实际效力以英文本为准。】 - Permission is granted to distribute modified versions of this document, or of portions of it, under the above conditions, provided also that they carry prominent notices stating who last altered them. - 本文允许在与上述相同的条件下,散布修改后的版本,或是其中的一部份, - 但它们也必须带有显著的,说明由谁最后更动了它的声明。 - 【Copyleft 版权除了提供使用者自由外,也维护原始作者, - 以及后来的修改作者的名誉权( credit )。 - 本段译文提供读者作为参考以帮助理解,实际效力以英文本为准。】 +The conditions for copying Emacs itself are more complex, but in the +same spirit. Please read the file COPYING and then do give copies of +GNU Emacs to your friends. Help stamp out software obstructionism +("ownership") by using, writing, and sharing free software! + +【下面为版权声明的译文,仅供参考。实际法律效力以英文原文为准。】 + +本快速指南沿袭自历史悠久的 Emacs 快速指南,可上溯至 Stuart Cracraft 为最 +初的 Emacs 所作的版本。 + +本篇文档与 GNU Emacs 一样拥有版权,并允许在下列条件的约束下发行其拷贝: + + Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004, 2005 + Free Software Foundation, Inc. + + 本文档允许在不变更文档内容的情况下由任何人发布在任何媒体上,同时必须 + 完整保留版权和许可声明,且需给予受众与发行者完全相同的、如本声明所允 + 许的再次发行本文档的权利。 + + 本声明允许在与上述条件相同的情况下发布经过修改的全部或部分文档,同时 + 必须附带显要的文字以申明文档的最后修改者。 -复制 Emacs 本身的条件较为复杂,但是具有相同的精神。请阅读 COPYING 这个 -档案,并且确实给予您的朋友 GNU Emacs 的拷贝。请经由「使用、撰写、以及 -分享自由软件」来帮助消除软件障碍主义(拥有权)! +Emacs 自身的版权问题虽比本文档要复杂一些,但也基于相同的精神。敬请阅读文 +件“COPYING”,然后向你的朋友们分发 GNU Emacs 拷贝。让我们以使用、编写和 +分享自由软件的实际行动来共同祛除软件障碍主义(所谓的“所有权”)! -;;; DO NOT PUT THIS ON ZHS OR ZHT FILE... ;;; Local Variables: ;;; coding: chinese-iso-8bit ;;; End: |