Emacs中文手册内容介绍
Emacs中文手册内容介绍
Copyright?(c)?1985,?1996,?2002?Free?Software?Foundation;Chinese?Translation?by?Chao-Hong?Liu?(2002);?请见页尾条件。
你正在阅读?Emacs?快速指南(Emacs?tutorial)。
Copyright?(c)?1985,?1996,?2002?Free?Software?Foundation;
Chinese?Translation?by?Chao-Hong?Liu?(2002);?请见页尾条件。
你正在阅读?Emacs?快速指南(Emacs?tutorial)。
Emacs?指令通常包含有?CONTROL?键(有时候以?CTRL?或?CTL?来标示)
或是?META?键(有时候以?EDIT?或?ALT?来标示)。
为了避免每一次都要写出其全名,我们将会使用下述的缩写:
C-?表示当键入字元?时?按住?CONTROL?键。
因此,C-f?就是:按住?CONTROL?键再键入?f。
M-?表示当键入字元?时?按住?META?或?EDIT?或?ALT?键。
如果没有?META、EDIT、或?ALT?键时,则可以用
「按一下?ESC?键然後放开,再键入?的步骤」
来作为替代。我们以?来表示?ESC?键。
重要备忘录:
要离开?Emacs?操作阶段(session),键入?C-x?C-c。(两个字元)。
位在左侧边界的「>>」字元是让你可以试着使用的指令的提示。举例来说:
>
>>?现在键入?C-v(View?next?screen)以移到下个萤幕
(试试看,键入字元?v?时,按住?CONTROL?键)。
从现在开始,你应该在每次阅读完目前的萤幕时做一次这个动作。
要注意的是,当你从一个萤幕移到另一个时,中间会有两行重复;
这样做是为了提供一些连续性,让你可以接续地阅读文字。
你需要知道的第一件事是如何在文字中移动。你已经知道了可以?C-v
来向前移动一个萤幕。要向後移动一个萤幕,则键入?M-v
(按住?META?键,然後键入?v,或是如果你没有?META、EDIT、或?ALT?键
时键入?v)。
>>?试着键入?M-v?然後?C-v,连续个几次。
【现在你可以?C-v?指令移到後面「翻译」一节,
以取得关於本文的翻译相关事项;然後以?M-v?指令回到这里。】
*?摘要(SUMMARY)
-----------------
以下的指令在检阅萤幕时相当有用:
【我们现在以「萤幕」来表示「显示档案内容的区域」,
因为目前是处在?Emacs?中的单窗格(window)显示状态,
如果是在多窗格的状态下,这里所介绍的指令则作用在「工作中的窗格」。
有关於窗格的介绍,请见窗格(windows)一节。】
C-v?向前移动一个萤幕/窗格
M-v?向後移动一个萤幕/窗格
C-l?清除萤幕/窗格,再重新显示所有文字,
游标所在位置会显示於萤幕/窗格的中央。
(是?CONTROL-L?而不是?CONTROL-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?将游标移到图形的中央。
键入?C-l?会看到整个图形显示在萤幕的中央。
你应该会发现用字母来想这些很容易:
P?表示?previous、N?表示?next、B?表示?backward、而?F?则表示?forward。
这些就是基本的游标定位(positioning)指令,你将「总是」用到它们,
所以现在就把它们记下来对你会很有用的。
>>?按几次?C-n?把游标往下移动到这行。
>>?按几次?C-f?往前移到这行,然後再以?C-p?往後移动。
看看当游标在本行中央时,C-p?的动作是怎样。
每一个文字行都以一个?Newline?字元作为结束,
它是用来与下一行作为分别。在你档案中的最後一行应该要有一个?Newline
来作为结束(但是?Emacs?并不一定需要它来编辑档案)。
>>?试着在一行开始的地方键入?C-b?。结果应该会移动到前一行的最後面。
这是因为它往後移动时越过了?Newline?字元。
C-f?也可以和?C-b?一样地越过?Newline?字元。
【Newline?字元是「不可见(invisible)字元」,
在编辑器中一般看不到它,这里只是告诉你:在行首再往前走,
那麽游标会跑到前一行(如果有前一行的话);在行尾再往後走,
那麽游标会跑到後一行(如果有後一行的话)。「越过?Newline?字元」
会让游标跑到另外一行。】
>>?多按几次?C-b,自己感觉一下游标在哪。
然後按几次?C-f?回到这行的尾巴。
再按一次?C-f?就可以移到下一行了。
当你移动游标穿越萤幕的上方或下方时,在边界外的文字会移位进入萤幕内。
这称为「卷动」。它让?Emacs?可以将游标移动到文字中的任意特定位置,
同时(游标)不会跑出萤幕外。
>>?试着以?C-n?将游标越过萤幕下方,然後看看发生了什麽事。
如果一个字元一个字元地移动太慢的话,你可以一个字一个字地移动。
M-f?(META-f)?往前移动一个字,M-b?则往後移动一个字。
【对中文来说,一个字元等同於一个字,
但可以想见这个功能在编辑英文这种拼音文字时相当有用。】
>>?键入一些?M-f?和?M-b。
当你在一个字的中间时,M-f?会移动到这个字的尾巴。
当你在字与字间的空白时,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?字元则是作用在
「与你所编辑无关的『基本』单位(字元或行等)」上。
【对中文使用者来说,文章的段落和结构是一个问题,
(1)?首先遇到的问题先是标点符号,标点应该要有标点的作用,
--?如同它在英文中所表现的一样,但目前来说,标点符号被视为字,
这使我们失去了第一步将文章结构化的依据。再来就是词库的建立,
这对英文来说异常简单?--?它的字通常由空白所隔开,
提供了最基本的结构(它的标点符号则提供了第二层次的结构)--
但对中文来说则需要作进一步的处理。
不过既然「搜寻」是一种游标移动指令,只要先建立合用的词库,
搭配起来应该可以迎刃而解。
(2)?翻译在本文中,每一行的?Newline?字元都摆在标点符号後边,
并且每一行都不超过?70?个字元宽,以此方式和语言单位间作出关系。
(3)?有些使用者则是以使用英文标点符号来解决问题,
也许这是目前最方便的处理方式,?如本段所示.?】
这个相似性在「行与句子」之间也同样适用:
C-a?和?C-e?会将游标移动到「一行」的?开始和结尾处,而
M-a?和?M-e?则将游标移动到「一句」的?开始和结尾处。
>>?试着按两次?C-a,再按两次?C-e。
试着按两次?M-a,再按两次?M-e。
看一下为什麽重复的?C-a?指令会没有作用,
而重复的?M-a?指令则继续移动到下一个句子。虽然这并不能说是完全类比,
但是其中每个指令的行为看起来都十分自然。
游标在文字中的位置也可以称作「点位(point)」。
简单来说就是:游标表现出萤幕中「点位」所在的文字位置。
这里是一些简单「游标移动(cursor-moving)操作」的整理,
其中也包括了「字和句」的移动指令:
【为了说明「以字为单位地」移动的意义,於下保留此段英文;
Here?is?a?summary?of?simple?cursor-moving?operations,?including?the
word?and?sentence?moving?commands:?】
C-f?往前移动一个字元
C-b?往後移动一个字元
M-f?往前移动一个字
M-b?往後移动一个字
C-n?移动到下一行
C-p?移动到前一行
C-a?移动到行首
C-e?移动到行尾
M-a?移回句首
M-e?移到句尾
>>?练习几次这些指令。这些都是最常使用到的指令。
还有两个重要的游标动作(cursor-motion)指令,
M-(META?Greater-than),移动到文字的最後。
在大部份的终端机,「>?现在试一下?M->?现在试一下?M->?,移到本快速指南的最後。
然後再重复地使用?M-v?回到这里。
如果你的终端机有方向键的话,你也可以用方向键移动游标。
我们有叁个理由建议你学习?C-b、C-f、C-n、和?C-p:
(1)?任何的终端机都能使用。
(2)?一旦你使用?Emacs?相当熟练了,你会发现键入这些?CONTROL?字元,
比起使用方向键快多了(因为你不需要将手移开打字区)。
(3)?一旦你使用这些?CONTROL?字元指令成为习惯,
你也可以很容易地学会其他进阶的游标动作指令。
大部份的?Emacs?指令接受数字参数;对大部份的指令而言,
它的作用是指定重复次数。你要指定一个指令的重复次数的作法是:
先键入?C-u,然後在你键入指令前,键入代表重复次数的数位。
如果你有一个?META(或?EDIT?或?ALT)键,
那麽你还有另外一个替代作法来输入数字参数:
按住?META?键时打入这数字。我们建议你学习?C-u?的方法,
因为它在任何终端机都可以使用。此一数字参数也称作为「字首参数」,
因为你在这参数所作用到的指令前键入它。
举例来说,?C-u?8?C-f?向前移动?8?个字元。
>>?试着以一个数字参数来使用?C-n?或?C-p,
只一个指令就将游标移动到这行的附近。
大部份的指令使用数字参数来作为其重复次数,
但是其中有些指令则是作为其他用途。有几个指令(目前你尚未学到)
将它作为旗标?--?以一个字首参数的型态出现,而不管其值为何,
它们让这指令做些不一样的事。
C-v?和?M-v?则是另一类的例外。当给定一个参数时,它们卷动
「所指定的数量的行(以行为单位)」,而不是以「萤幕」为单位卷动。
举例来说,C-u?8?C-v?将显示萤幕卷动?8?行。
>>?现在试着键入?C-u?8?C-v。
这指令应该已经将萤幕向上移了?8?行。若你想将它再次地向下卷动,
你可以在执行?M-v?时给定一个参数。
如果你正在使用?X?视窗系统,在?Emacs?视窗左手侧应该有一个称为
「卷动轴」的长方型区域。你可以用滑鼠在卷动轴按一下来卷动文字。
>>?试着在「卷动轴内反白区域上」压一下中间钮。这应该会将文字卷动到
「由你所按一下滑鼠的地方」所决定的位置。
>>?当按住中间时,试着将滑鼠上下移动。
你会看到文字随着你移动滑鼠而上下移动。
*?当?EMACS?发呆时(WHEN?EMACS?IS?HUNG)
---------------------------------------
如果?Emacs?停止回应你的指令,你可以键入?C-g?来安全地停止它。
你也可以使用?C-g?来停止执行过久的指令。
你也可以使用?C-g?来取消数字参数或你不想要完成的指令。
>>?键入?C-u?100?以设定一个?100?的数字参数,然後键入?C-g。
现在键入?C-f。它应该只会移动一个字元,因为你已经以?C-g
取消了参数。
如果你已经不小心地键入一个?,你可以?C-g?来取消它。
*?无效化的指令(DISABLED?COMMANDS)
-----------------------------------
有一些?Emacs?指令被「无效化」了,因此初学者不会意外地使用到它们。
如果你键入了某一个无效化的指令,Emacs?会显示一个讯息,
说明这个指令是什麽,并且询问你是否想要继续,然後执行这指令。
如果你真的想要试一下这个指令,那麽在当?Emacs?询问你时,请键入空白。
一般来说,如果你不想要执行这个无效化的指令,请以『n』来回答它。
>>?键入?C-x?C-l?(这是个无效化的指令)
然後键入?n?来回答问题。
*?窗格(WINDOWS)
-----------------
Emacs?可以有数个窗格,每一个显示它自己的文字。
我们在稍後会解释如何使用多重窗格。
现在我们想要解释如何除去多馀的窗格,然後回到基本的单窗格编辑。
它很简单:
C-x?1?One?window?(即,除去其他所有的窗格)。
那是个?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?作为开始;
它们之中有许多是与「窗格、档案、暂存区以及相关事物」有关的。
这些指令有?2、3?或?4?个字元长。
*?插入与删除(INSERTING?AND?DELETING)
--------------------------------------
如果你想要插入文字,把它键入就是了。你可以看到的字元,
像是?A,?7,?*,?等,被?Emacs?视为文字并且可以直接插入。
键入?(carriage-return?键)以插入一个?Newline?字元。
你可以键入?以删除你最後键入的字元。
是一个标示为「Del」的键盘键。
在某些情形下,「Backspace」键的作用如同?,但不总是如此!
更一般地说,?将位於目前游标位置前一个字元加以删除。
>>?现在做?--?键入一些字元,然後键入几次?来删除它们。
不要担心这个档案会被更动;你不会影响到原来的快速指南。
(你现在看到的)这一个是你的个人拷贝。
当一行文字变得比「在窗格中的一行」长时,这一行文字会「接续」
到第二行窗格行。这时一个反斜线「」(或如果你使用视窗化的显示,
则是一个小小弯弯的箭头)会位在其右边界以指出此行接续着。
>>?插入文字,一直到你达到右边界,然後再继续插入。
你会看到一个接续行出现。
>>?使用?删除一些文字,直到此行再次成为一个窗格行。
接续行消失了。
你可以像删除其他字元一样地删除?Newline?字元。
将位在两行中的?Newline?字元删除会让它们合并成为一行。
如果合并的结果使这一行太长,以致无法符合窗格的宽度,
它会以一个接续行来显示。
>>?移动游标到本行的开头并键入?。
这会将本行与其前一行结合为一行。
>>?键入?以重新插入你刚才删除的?Newline?字元。
记得大部份的?Emacs?指令都可以给予一个重复计数(repeat?count);
这也包括了文字字元。重复一个文字字元会将它插入数次。
>>?现在就试一下?--?键入?C-u?8?*?以插入?********。
你现在已经学到了「键入个什麽东西进?Emacs?以及修正错误」
的大部份基本方法。你也可以「以字或行为单位」地删除。
这里有份关於「删除操作」的摘要:
删除游标所在的?前一个字元
C-d?删除游标所在的?後一个字元
M-?删除游标所在的?前一个字
M-d?删除游标所在的?後一个字
C-k?删除从游标所在到「行尾」间的字元
M-k?删除从游标所在到「句尾」间的字元
注意「?和?C-d」还有「M-?和?M-d」
是平行地自?C-f?和?M-f?扩充出来的
(嗯,?并不是控制字元,但是没什麽好担心的)。
C-k?和?M-k?在某种程度上与?C-e?和?M-e?一样,
如果把「一行」和「一句」作为类比的话。
你也可以只以一种方法来删除缓冲区内的任何部份,
先移动到你想要删除的部份的一端,然後键入?C-@?或?C-SPC
(任一个即可)。(SPC?指的是?Space?Bar。)
再移到那部份的另一端,接着键入?C-w。
这样就会把介於这两个位置间的所有文字删除。
>>?移动游标到上一段开头的「你」字。
>>?键入?C-SPC。?Emacs?应该会在萤幕的下方显示一个「Mark?set」讯息。
>>?移动游标到第二行中的「端」字。
>>?键入?C-w。这样会把从「你」开始到刚好「端」之前的文字删除。
要注意的是「杀掉(killing)」和「删除(deleting)」
的不同在於被杀掉的可以拉回,而被删除的则不能。
【有点难以理解,
(1)?你可以这麽想:「被杀掉的」尚存尸骨,而「被删除的」则尸骨无存了,
可见得对电脑资料来说,「删除」比「杀掉」严重多了。
(2)?实际上,就算被删除了,我们还是有技术可以把它救回来,
尤其是文字资料,前提是删除後不能进行实体记忆体的格式化动作。
但这对於一般使用者而言是不可能的,因此就不考虑这情形了。】
重新插入被杀掉的文字称为「拉回(yanking)」。
一般而言,可以移除掉很多文字的指令会把那些文字储存起来
(它们设定成你可以将文字拉回),
而那些只是删除一个字元或者空白行或空白的指令,
则不会储存这些被删除的文字(因此你不能将那文字拉回)。
>>?移动游标到一非空白行的开始。
然後键入?C-k?杀掉在那一行上的文字。
>>?第二次键入?C-k。你将会看到它杀掉跟在那一行後面的?Newline?字元。
请注意单独的?C-k?会把一行的内容杀掉,而第二个?C-k
则会杀掉那一行本身,并且使得所有其他的行向上移动。
C-k?以很特别的方式来处理数字参数,它会杀掉很多行以及它们的内容,
这不仅仅是重复而已,C-u?2?C-k?会把两行以及它们的?Newline?字元杀掉;
如果只是键入?C-k?两次并不会这样。
将被杀掉的文字回复的动作称为「拉回(yanking)」。
(把它想像成你把别人从你身上夺去的东西猛力地拉回来。)
你可以在你删除文字的地方拉回,也可以在文字的其他地方拉回。
你可以拉回数次以制作它的数份拷贝。
拉回的指令为?C-y。它会在目前游标的位置重新插入最後杀掉的文字。
>>?试试看;键入?C-y?将文字拉回。
如果你连续地做了数次?C-k,所有被杀掉的文字都会被储存在一起,
因此做一次?C-y?就会把所有这些行都拉回来。
>>?现在做一下,键入?C-k?数次。
现在要回复那些杀掉的文字:
>>?键入?C-y。然後把游标往下移动个几行,再一次键入?C-y。
你现在知道如何复制某些文字了。
如果你有一些文字想要拉回来,但是後来你又杀了某些东西,
那麽该怎麽做呢?C-y?会把最近杀掉的拉回来,但是先前的文字并没有消失,
你可以用?M-y?来回到它。当你已经使用?C-y?把最近杀掉的拉回来之後,
再键入?M-y?来把这些拉回来的文字替换为先前所杀掉的。
一次又一次地键入?M-y?会把先前再先前所杀掉的文字带回来。
当你到了你想找的文字时,你不需要做任何事来保存它,
只要继续你的编辑,把这些已拉回的文字留在那里就好。
如果你?M-y?做了很多次,你可能会回到起始点,也就是最近杀掉的。
>>?杀掉一行,到处绕绕,再杀掉另一行。
然後用?C-y?将第二次杀掉的那行带回来。
然後再用?M-y,它将会被第一次杀掉的那行取代。
再做几次?M-y?看看你会得到什麽。
不间断地做,直到第二个杀掉行回来,再做个几次。
如果你想的话,你可以试着给?M-y?正的或是负的参数。
*?取消动作(UNDO)
------------------
如果你对文字做了一些改变,後来觉得它是个错误,
你可以?Undo?指令取消这一个改变,C-x?u。
通常?C-x?u?会把一个指令所造成的改变取消掉;
如果你在一行中重复了许多次?C-x?u,每一个重复都会取消额外的指令。
但是有两个例外:
(1)?没有改变文字的指令不算(这包括了游标移动的指令还有卷轴指令),
以及
(2)?自行键入的字元以一群一群?--?每群最多?20?个?--?来进行处理
(这是为了减少你在取消「插入文字动作」所必须键入?C-x?u?的次数)。
>>?以?C-k?将这一行杀掉,然後键入?C-x?u?後它会再次出现。
C-_?是另一个取消指令;它的作用就和?C-x?u?一样,
但是在一行中它比较容易键入许多次。
C-_?的缺点是在某些键盘中不太清楚如何键入它,
这也是为什麽我们同时提供?C-x?u?的原因。
在某些终端机,你可以按住?CONTROL?再键入?/?,来键入?C-_。
一个数字参数对?C-_?or?C-x?u?来说,是作为重复的次数。
*?档案(FILE)
--------------
为了使你编辑的文字永久保存,你必须把它放到一个档案中。
不然,当你离开?Emacs?後,它就会随之消失。为了把你的文字放在档案中,
你必须在你键入这些文字前「找(find)」档案。
(这也称之为「拜访(visiting)」档案。)
找一个档案表示你可以在?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?会将原始的档案重新命名成一个新的名字,这样它才不会消失。
新的名字通常会加入「~」到原始档案的名字後面。
当储存结束时,Emacs?会把写入档案的名字列出来。你应该经常地进行储存,
这样子如果系统当机时,你就不会损失太多工作。
>>?键入?C-x?C-s?以储存本快速指南的你的拷贝。
这会把「Wrote?...TUTORIAL.cn」这个讯息显示在萤幕的下方。
注意:在某些系统中,键入?C-x?C-s?将会把萤幕冻结,
你将看不到从?Emacs?来的任何输出。
这表示操作系统一个称为「流程控制」的「功能」将?C-s?指令拦截住,
并且不让它传到?Emacs。要取消萤幕的冻结,请键入?C-q。
然後到?Emacs?使用手册中看看对於「渐进式搜寻的同时进入
(Spontaneous?Entry?to?Incremental?Search)」这个主题,
以取得处理这个「功能」的建议。
你可以找出一个已经存在的档案,然後观看它或编辑它。
你也可以找一个还没有存在过的档案。这是以?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?内部建立一个缓冲区。想要看目前存在你的?Emacs
的工作中缓冲区列表,键入
C-x?C-b?列出缓冲区
>>?现在就试一下?C-x?C-b
看看每一个缓冲区是如何命名的,它也可能同时拥有一个
「储存其内容的档案」的名称。有一些缓冲区则没有其对应的档案。
举例来说,命名为「*Buffer?List*」的缓冲区并没有任何档案。
它是?C-x?C-b?这个指令所建立出来的包含「缓冲区列表内容」的缓冲区。
你在一个?Emacs?窗格所见到的「任何」文字都是某个缓冲区的一部份。
>>?键入?C-x?1?以离开缓冲列表
如果你对档案中的文字做了修改,然後找另一档案,
这个动作并不会储存第一个档案。它的修改仍旧存在?Emacs?中,
也就是在那个档案的缓冲区中。
对於第二个档案的建立或编辑并不会影响到第一个档案的缓冲区。
这样子非常有用,但这个情形也表明了你需要「一个方便的方法」
来储存第一个档案的缓冲区。
只是为储存第一个档案就必须以?C-x?C-f?切换缓冲区,
才能以?C-x?C-s?将它储存,总是个让人讨厌的过程。因此我们有
C-x?s?储存一些缓冲区
C-x?s?会询问你关於你已做出修改但还没储存的每一个缓冲区。
它会问你,对於每一个这样的缓冲区,是否要储存?
>>?插入一行文字,然後键入?C-x?s。
它应该会问你是否要储存名为?TUTORIAL.cn?的缓冲区。
键入『y』以回答要储存。
*?扩充指令集(EXTENDING?THE?COMMAND?SET)
-----------------------------------------
由於?Emacs?拥有太多指令,即便使用上所有的?CONTROL?和?META?字元,
也没办法完全摆上。Emacs?以?X(扩充『eXtend』)指令来解决这个问题。
扩充指令有两种型式:
C-x?字元扩充。後面跟着一个字元。
M-x?有名称的指令扩充。後面跟着一个长的名称。
还有一些指令通常来说是很有用的,但是比你已经学到的指令较少使用。
你已经看过其中两个:档案指令中的?C-x?C-f?去寻找,以及?C-x?C-s?去储存。
其他的例子则有结束?Emacs?阶段的指令?--?这个指令是?C-x?C-c。
(不要担心你会失去已经做出的改变,C-x?C-c?在它杀掉?Emacs
之前会提供储存每一个变动的档案的机会。)
C-z?是?*暂时*?离开?Emacs?的指令
--?因此你稍後可以回到同样的?Emacs?阶段。
在某些允许它的作用的系统中,?C-z?会「暂停住(suspends)」Emacs,
也就是说,它会回到?shell?但不会把?Emacs?毁掉。在最常用的?shell?中,
你可以用『fg』或『%emacs』两种指令恢复?Emacs。
在没有提供暂停功能的系统中,C-z?会在?Emacs?底下建立一个?subshell
以让你有机会执行其他的程序,并且在稍後回到?Emacs,
它并没有真的离开?Emacs。在这个例子中,shell?指令『exit』是从
subshell?回到?Emacs?的通常方式。
使用?C-x?C-c?的时机是当你打算要登出时。
它也非常适合用来离开被其他邮件处理程序,
以及许多不同的应用程序所启动的?Emacs。然而在一般的状况下,
如果你不打算登出,最好是把?Emacs?暂停而不是离开它。
有许多?C-x?的指令。这里是一份你已经学过的列表:
C-x?C-f?找档案。
C-x?C-s?储存档案。
C-x?C-b?列出缓冲区。
C-x?C-c?离开?Emacs。
C-x?1?除了一个外,删去其他所有的窗格。
C-x?u?取消动作。
以扩充来命名的指令通常是不太常使用的指令,
或是只在特定的模式下才会使用的指令。一个例子是取代字串指令,
它会全域地将一个字串以另一个来取代。当你键入?M-x?时,
Emacs?会在萤幕的底端询问你,然後你也应该键入这个指令的名称。
在这个例子中是『replace-string』只要键入『repl?s』,
然後?Emacs?将会补齐这个名称。以?来结束这个指令名称。
取代字串指令需要两个参数?--?被取代的字串以及用来取代它的字串。
你必须以?Newline?字元来结束每一个参数。
>>?将游标移到本行的下两行空白,然後键入
M-x?repl?schangedaltered。
【为了说明的目的,於下保留一行原文。
Notice?how?this?line?has?changed:?you've?replaced...?】
请注意这一行是怎麽改变的:在游标的起始位置之後,
你已经将?c-h-a-n-g-e-d?这个字?--?不管它在哪里出现?--
以「altered」这个字来取代了。
*?自动存档(AUTO?SAVE)
-----------------------
当你在一个档案中做了修改,但是还没有将它们储存起来,
那麽如果你的电脑当机,它们将有可能遗失。
为了避免这种情形发生在你的身上,
Emacs?会定期地将你正在编辑的档案写入「自动储存」档案中。
自动储存档案在档名的前後会各有一个?#?符号;
举例来说,如果你的档案名为「hello.c」,
那麽它的自动储存档案的档名就是「#hello.c#」。
当你以平常的方式储存档案时,Emacs?就会把它的自动储存档删除。
如果当机,你可以经由正常地寻找档案
(指的是你在编辑的档案而不是自动储存档),
然後键入?M-x?recover?file?来回复你的自动储存档。
当它要求确认时,键入?yes?以继续并回复自动储存的资料。
*?回应区(ECHO?AREA)
---------------------
如果?Emacs?见到你很慢地键入多字元指令,它会将它们显示在位於窗格下方,
称为「回应区」的区域给你参阅。回应区位在窗格的最後一行。
*?状态行(MODE?LINE)
---------------------
位在回应区的正上面是称为「状态行」的一行。
状态行显示出一些信息,如:
--:**?TUTORIAL.cn?(Fundamental)--L670--58%----------------
本行提供一些关於「Emacs?的状态」以及「你正在编辑的文字」的有用信息。
你已经知道档名的意义是什麽了?--?就是你找的档案。
-NN%--?指出目前你在文字档中的位置;它的意思是说:
有?NN?百分比的文字位在窗格的上面。
如果档案的顶端就位在窗格中,那麽它就会显示?--Top--?而不是?--00%--。
如果档案的底部就位在窗格中,那麽它是显示?--Bot--。
如果你正在看的文字档很小,在窗格中就足以看到全部的内容,
那麽状态行就会显示?--All--。
L?和数字以另一种方式来表示出位置:它们给出了目前所在的行数(Line)。
在靠近前面的星号表示你已经对这些文字做了改变。
在你刚拜访或储存一个档案之後,
状态行的那个部分会没有星号,只有破折号。
状态行中位於小括弧里面的部分,是用来告诉你正在使用什麽编辑模式。
预设的模式是?Fundamental,也就是你现在使用的。
它是「主模式」的一个例子。
Emacs?有许多不同的主模式。它们之中有一些是用来编辑不同的语言
以及/或不同种类的文字,像是?Lisp?模式、Text?模式等等。
在任何的时间只有一个主模式可以作用,
并且它的名称总可以在状态行中被找到,
就在现在的「Fundamental」中的位置。
每一个主模式都使得一些指令的行为表现得不太一样。
举例来说,在一个程序中有一些指令用来制作出注解,
而由於每一种程序语言对於一个注解应该长得像什麽,都有着不同的想法,
因此每一个主模式都必须以不同的方式来插入注解。
每一个主模式是一个延伸指令的名称,使得你可以用来切换至那个模式。
举例来说,M-x?fundamental-mode?就是切换到?Fundamental
模式的一个指令。
如果你想要编辑中文或英文等文字类型的档案?--?像是现在的这一个,
你应该使用?Text?模式。
>>?键入?M-x?text?mode。
不要担心,没有任何一个你已经学过的?Emacs?指令,
会被改变成任何非常不同的形式。
但是你可以发现到?M-f?和?M-b?现在把撇号(')视为字的一部分。
先前,在?Fundamental?模式中,M-f?和?M-b?将撇号视为字的分隔符号。
主模式通常会像上述那个例子一样,做出一些精巧的改变:
大部分的指令在每一个主模式中「做同样的事」,
但是它们以一点点不同的方式来工作。
【再举个例子,接续上面所开的头,以程序语言的注解来说。
同样一个插入注解的动作,因为你使用的程序语言/主模式的不同而不同。
若你使用?C?语言,Emacs?插入『/*?介於中间的为注解区块?*/』;
若你使用的是?Fortran?语言,Emacs?插入『c?以字元?c?为首的为注解行』;
若你使用的是?Basic?语言,Emacs?则插入『'?撇号以後的为注解文字』。
编辑器的弹性如此,实在没有必要为了不同的语言、目的或外观,
设计特殊化的编辑器。「求大同,存小异」在这里也是成立的。】
要浏览你现在所处的主模式的文件,键入?C-h?m。
>>?使用?C-u?C-v?一或数次,将本行带到靠近萤幕的上方。
>>?键入?C-h?m,看看?Text?模式与?Fundamental?模式是哪里不同。
>>?键入?C-x?1?将文件从萤幕移除掉。
主模式之所以称为「主要(major)」的原因是因为它们也有次模式
(minor?mode)。次要的模式并不是主模式的其他选择,而只是次要的更改。
每一个次模式可以被它本身启用或停止,和所有其他的次模式无关,
并且也和你的主模式无关。所以你可以不使用次模式,或一个,
或任何数量的次模式的组合。
有一个次模式非常有用,特别是在编辑英文文字时,叫做?Auto?Fill?模式。
当这个模式启用时,Emacs?在当你插入文字并且使一行太宽时,
会将那一行,在字与字之间自动地分隔开。
你可以?M-x?auto?fill?mode?来将?Auto?Fill?模式启用。
当这个模式启用时,你可以使用?M-x?auto?fill?mode?来将它取消。
当这个模式不用时,则这个指令会将它启动,而当这个模式启用时,
这个指令会将它关闭。我们说这个指令用来「切换(toggle)」模式。
>>?现在键入?M-x?auto?fill?mode。然後一再地插入字串
「?asdf?」,直到你看到它分成两行。你必须在它们之间摆上空白,
因为?Auto?Fill?只在空白处断行。
边界通常被设定为?70?个字元,但是你可以用?C-x?f?指令来改变它。
你应该以一个数字参数的方式来给定你所希望的边界设定。
>>?键入?C-x?f?并附上引数?20:『C-u?2?0?C-x?f』。
然後键入一些文字,看看?Emacs?以?20?个字元,
在行与行之间进行?fill?动作。然後再用一次?C-x?f?将边界设回?70。
如果你在一个段落的中间做出改变,
Auto?Fill?模式并不会为你重新进行?fill?的动作(re-fill)。
要?re-fill?这个段落,键入?M-q?(META-q),而游标必须处在其中。
>>?移动游标到前一段中,然後键入?M-q。
*?搜寻(SEARCHING)
-------------------
Emacs?可以搜寻字串(字串可以是一群连续的字元或字)
【就中文来说,字元和字基本上意义相同;此处所指的『字』,
是英文中没有被空白隔开的字元集合。】,
往前或往後搜寻都可以。搜寻一个字串是一种游标移动指令,
它会将游标移动到字串出现的下一个地方。
Emacs?搜寻指令与大部分编辑器的搜寻指令不同的地方在於,
它是「渐进的(incremental)」。
这表示搜寻发生在你键入想要搜寻的文字串後。
要开始搜寻的指令是:C-s?往前搜寻,C-r?往後搜寻。
但先等一下!现在先不要试。
当你键入?C-s?时,会发现到有一个字串「I-search」
出现在回应区中作为提示。它告诉你?Emacs?现在正处於称为「渐进式搜寻」
的状态中,等待你键入你想要搜寻的字串。?会结束一个搜寻。
>>?现在键入?C-s?开始一个搜寻。慢一点,一次键入一个字元,
键入『cursor』这个字,每键入一个字元时,稍微停一下,
注意看看游标发生了什麽事。现在你已曾经搜寻过「cursor」这个字了。
>>?再次键入?C-s?来搜寻「cursor」的下一个出现位置。
>>?现在键入?四次,看看游标是如何移动的。
>>?键入?结束搜寻。
你有没有看到发生了什麽?在一个渐进式搜寻中,
Emacs?试着要走到你键入的字串的下一个出现位置。
要移动到游标所在的下一个出现位置,只要再键入?C-s?一次。
如果并没有这样的出现位置存在,Emacs?会哔一声,
并告诉你目前的搜寻「失败」。另外?C-g?也可以用来结束搜寻。
注意:在某些系统中,键入?C-s?将会把萤幕冻结,
你将看不到从?Emacs?来的任何输出。
这表示操作系统一个称为「流程控制」的「功能」将?C-s?指令拦截住,
并且不让它传到?Emacs。要取消萤幕的冻结,请键入?C-q。
然後到?Emacs?使用手册中看看对於「渐进式搜寻的同时进入
(Spontaneous?Entry?to?Incremental?Search)」这个主题,
以取得处理这个「功能」的建议。
如果你在一个渐进式搜寻的中间,并且键入?,
你可以发现在搜寻字串中的最後一个字元被消除了,
并且搜寻会回到这个搜寻的最後一个地方。
举例来说,假设你已经键入了『c』,用来寻找「c」的第一次出现。
现在如果你键入『u』,游标会移动到「cu」的第一次出现位置。
现在键入?,这会将「u」从搜寻字串中消除,
并且游标会移回到「c」的第一次出现位置。
如果你在一个搜寻的中间,并且键入一个?CONTROL?或?META?字元的话,
(但有一些例外?--?对搜寻而言特别的字元,像是?C-s?和?C-r),
搜寻会被结束。
C-s?会开始一个搜寻,它会寻找搜寻字串在目前游标位置「之後」,
的任何出现位置。如果你想要在先前文字中搜寻,键入?C-r?作为替代。
除了搜寻的方向相反之外,我们所说的有关?C-s?的所有事情,
同样地可以应用到?C-r?上。
*?多重窗格(MULTIPLE?WINDOWS)
------------------------------
Emacs?许多好功能的其中之一是,你可以在萤幕中同时展示超过一个窗格。
>>?移动游标到这一行并且键入?C-u?0?C-l。
>>?现在键入?C-x?2,它会将萤幕平分成两个窗格。
这两个窗格都显示着这个快速指南。游标则停留在上方的窗格。
>>?键入?C-M-v?以卷动下方的窗格。
(如果你并没有一个真的?META?键,则键入?ESC?C-v?亦可。)
>>?键入?C-x?o(『o』指的是其他『other』的意思),
将游标移动到下方的窗格。
>>?在下方的窗格中,使用?C-v?和?M-v?来卷动它。
继续维持在上方的窗格中阅读这些指引。
>>?再一次键入?C-x?o?将游标移回到上方的窗格。
游标会回到它在上方窗格中,原本所在的位置。
你可以持续使用?C-x?o?在窗格之间切换。
每一个窗格有它自己的游标位置,但是只有一个窗格会真的显示出游标。
所有通常的编辑指令只会应用到那个游标所在的窗格。
我们称这个为「被选择的窗格」。
指令?C-M-v?在当你於一个窗格中编辑文字,
并使用其他的窗格作为参考之用时,是非常有用的。
你可以将游标一直保持在你正在编辑的窗格中,
并以?C-M-v?指令在其他的窗格循序地前进。
【验证工作特别适合以这种方式来进行,如?GNU?中译小组:
找一个原始英文档案;再找它翻译好的中文档案,
编辑这个「被选择的窗格」,以?C-M-v?指令跟上验证中的段落……。】
C-M-v?是?CONTROL-META?字元的一个例子。如果你有一个真的?META?键,
你可以同时按住?CONTROL?和?META?再键入?v?来键入?C-M-v。
CONTROL?或?META?「谁先被按坠并没有影响,
因为这两个键都是用来修饰你所键入的字元。
如果你并没有一个真的?META?键,你可以使用?ESC?来作为替代,
这样子顺序就有关系了:
你必须键入?ESC?,跟着键入?CONTROL-v,CONTROL-ESC?v?并不会作用。
这是因为?ESC?是一个具有本身作用的字元,而不是一个修饰键。
>>?(在上方窗格)键入?C-x?1?以除去下方窗格。
(如果你已经在底端的窗格键入?C-x?1,那麽将会把上面的窗格隐藏祝
将这个指令想像成「只保留一个窗格?--?我正在编辑的这个。」)
你不需要在两个不同的窗格中显示相同的缓冲区。如果你使用?C-x?C-f
在一个窗格中找档案,另一个窗格并不因而改变。
你可以在独立的任一个窗格中找(它自己的)一个档案。
这里有另外一个方式可以用来,使用两个窗格显示两个不同的东西:
>>?键入?C-x?4?C-f,後面跟着你的其中一个档案的名称。
以?作为结束。看看指定的档案出现在下方的窗格。
游标也跑到那里。
>>?键入?C-x?o?以回到上方的窗格,然後以?C-x?1?删除掉下方窗格。
*?递归编辑阶层(RECURSIVE?EDITING?LEVELS)
------------------------------------------
有时候你会进入所谓的「递归编辑阶层」。
它是由位在状态行的方括弧所指明,并且包含住以小括弧来指明的模式名称。
举例来说,你可能会看到?[(Fundamental)],而不是?(Fundamental)。
要离开递归编辑阶层,请键入?ESC?ESC?ESC。
这是个全功能的「离开」指令。你也可以使用它来除去多馀的窗格,
并且离开小缓冲区。
>>?键入?M-x?以进入小缓冲区;然後键入?ESC?ESC?ESC?离开。
你无法使用?C-g?来离开递归编辑阶层。这是因为?C-g?是用来取消指令以及
「位於」递归编辑阶层中的「引数(arguments)」之故。
*?取得更多的帮助(GETTING?MORE?HELP)
-------------------------------------
在本快速指南中,我们试着仅提供刚刚好的信息让你可以开始使用?Emacs。
在?Emacs?中有太多可取得的信息,想要在这里全部解释是不可能的。
然而,你也许会想要学习更多?Emacs?相关的信息,
因为它有许多其他有用的功能。Emacs?提供了「阅读有关?Emacs?指令」
的指令。这些「help」指令都以?CONTROL-h?这个字元作为开头,
称作为「Help?字元」。
要使用?Help?功能,键入?C-h?字元,
然後再键入一个说明你所需要的帮助的字元。
如果你真的不知道要问什麽,那麽请键入『C-h??』,
此时?Emacs?将会告诉你它能够提供的帮助。如果你已经键入?C-h,
但发现你并不需要任何帮助,键入?C-g?来取消掉它就是了。
(有些网站将?C-h?这个字元的意义改变了。
他们真的不应该把它设为对所有使用者全部都适用的方法,
所以你现在就有了个理由来抱怨系统管理者了。
在此同时,如果?C-h?并没有在窗格的底部显示任何有关帮助的讯息,
试着键入?F1?键,或是?M-x?help?。)
最基本的?HELP?功能是?C-h?c。键入?C-h,字元?c,以及一个或一串字元;
然後?Emacs?会显示一个非常简短的有关这个指令的解释。
>>?键入?C-h?c?C-p。讯息应该会像是:
C-p?runs?the?command?previous-line
这告诉了你「函数的名称」。函数名称主要是用来自订以及扩充?Emacs。
但是由於函数名称是由「用来指出这指令在做些什麽」而被选定,
它们因此也可以作为非常简短的文件?--?足够提醒你已经学过的指令。
多字元指令像是?C-x?C-s?和?(如果你没有?META?或?EDIT?或?ALT?键)
v?也可以在?C-h?c?後面出现。
要取得更多有关一个指令的信息,用?C-h?k?来取代使用?C-h?c。
>>?键入?C-h?k?C-p。
这会在一个?Emacs?窗格显示这个函数的说明文件以及它的名称。
当你阅读完後,键入?C-x?1?以跳离这些帮助文字。你并不需要马上跟着做。
你可以做些编辑,当参考到帮助文字时再键入?C-x?1。
这里有一些其他有用的?C-h?选项:
C-h?f?解释一个函数。你要键入此函数的名称。
>>?试着键入?C-h?f?previous-line。
这会印出?Emacs?所有的有关「实作出?C-p?这个指令的函数」的信息
C-h?v?这个类似的指令会显示出「你可以用来客户化?Emacs?行为的变数」
的文件。当?Emacs?要求时,你需要键入这变数的名称。
C-h?a?指令相关查找(Command?Apropos)。
键入一个关键字然後?Emacs?会列出所有
「在其名称中含有此关键字」的全部指令。
这些指令全部都可以经由?META-x?来启动。
对於一些指令而言,指令相关查找也会列出
「可以执行相同指令」的一个或两个字元的串列。
>>?键入?C-h?a?file。
这会在另一个窗格显示一个「在其名称中含有『file』的全部?M-x?指令」
的列表。你将会看到像是?C-x?C-f?的「字元-指令」列在其相对应指令名称
(如:find-file)的旁边。
>>?键入?C-M-v?上下移动?help?窗格。试个几次。
>>?键入?C-x?1?来删除?help?窗格。
C-h?i?阅读在线使用手册(a.k.a.?Info)。
这个指令将你带到了称为「*info*」的特殊缓冲区,在那,
你可以阅读安装在你的系统里的软件包的在线使用手册。
键入?m?emacs?以阅读?Emacs?使用手册。
如果你在此之前未曾使用过?Info?系统,请键入『?』。
Emacs?将会带你进入?Info?模式功能的导览指南。
一旦完成了本快速指南的研读,你应该查阅?Emacs?Info
使用手册,以作为主要的参考文件。
*?结论(CONCLUSION)
--------------------
记住,要完全离开?Emacs?请使用?C-x?C-c。
要暂时离开到?shell,稍後再回到?Emacs,请使用?C-z。
本快速指南对於所有的新手应该都是易於理解的,
所以如果你发现了什麽地方不清楚,不要只是坐着怪自己
--(向本文作者和翻译)发点牢骚吧!
*?翻译(TRANSLATION)
---------------------
本快速指南的翻译人员列表如下,如果你在阅读本文之前,
「完全」对?Emacs?没有概念,我们非常需要你的意见以作为改进的依据。
我们也打算提供一份?Emacs?的导读(或整理到本快速指南),
主要将会根据初学者阅读本使用指南所面临到的问题,撰写而成。
一个编辑器不应该让初学者感到十足的困难,你的意见可以使?Emacs
更为贴近一般的使用者,并使电脑作为工具的角色得以充分发挥。
如果你愿意提供改进的意见,请寄?email?到
chinese-translators@gnu.org。请不要害羞,我们欢迎任何有关的讨论;
如果你不想寄到邮件清单,请直接?email?给本文翻译?。
请在?Title?行中包含此字串「Emacs?TUTORIAL:?」。
如果你是?Emacs?老手,GNU?Chinese?Translators?Team?(GNU/CTT)
欢迎你的加入,
我们现在正需要愿意投入翻译?Emacs?使用手册的人员。
本快速指南并没有采用习惯上编辑器所使用的翻译术语,
一方面因为它的实际意义与一般的编辑器不同,原文本就不同;
另一方面也因为?Emacs?所采用的视觉设计概念,
早在视窗化系统之前就已经存在,本质也不相同。
总之,翻译以为这样可以帮助对於?Emacs?整个设计哲学的理解。
如果收到的回覆中,大部份要求提出修改,我们还是从善如流。
(1)?在本文中,「行」指的是?row,这是采用一般的习惯用法。
为了避免误导中文读者,特别在此说明。在正式的用法中:
「column」翻译为「行」,以「纵」为行(直行),也译为「栏」;
「row」翻译为「列」,以「横」为列(横列)。
读者思索一下「合纵连横」应该可以理解。
大约是因为中文原本是直书的,我们说「一行字」是没问题;
但现在大部份的情形中文是横书的,由於习惯使然也称为一行字了。
(2)?有关於「文字」及其集合的相关译文,翻译所采用的有:
编辑的「文字」:「然後键入一些文字」、
用来作为说明功能的「文件」:「这个函数的说明文件」、
特指其所说明内容的「文本」:「实际效力以英文本为准」。
另外,即使只是「一行字」,只要它是用来作为说明之用,
翻译还是将它视为「文件」。
(3)?「cut」的动作在?Emacs?中分为「杀掉」和「删除」,之间的差异如下:
一般编辑器中的「cut」:只有最近被?cut?的文字摆到?clipboard?中、
「杀掉(killing)」:被杀掉的文字,全部被加入到?kill?ring?中、
「删除(deleting)」:被删除的文字,就是被删除了。
因此在一般编辑器中,你只能?paste「最近」被?cut?的文字;
而在?Emacs?中,你可以「拉回」任何先前被杀掉的文字,同时,
它的作法很容易。至於被删除的,因为用来作为「删除」功能的指令,
所能移去的文字数量都很少,因此也没什麽好拉回的;
如果真的想回复这些文字,undo?你的动作就是了。
(4)?「window」同时翻译为「视窗」和「窗格」,
前者表示现在一般概念中的视窗系