- 现在就分别介绍 register 与 bookmark
二者的用法。首先讨论 register 的用法。 register 可存放的内容有,游标的位置、一般文件与长方形文件的内容、
档案的名称以及本文未曾讨论的视窗资料等等。现在就一一
来介绍这些内容如何存放,以及存放後如何将其取出用,
与视窗有关的 register 在此依然不予讨论。
- 储存与移动至特定 point 位置的方法
- Ctrl-x
r SPC r(point-to-register)
将游标目前所在的位置,存於 register
中。存於
register
的步骤如下:
- 将游标移至所要储存游标位置的地方。
- 键入 ``|Ctrl-x
r|'' 以及
``SPACE''(空白键)後,
- echo
area 会出现 Point
to register:
- 此时可输入任意一个字元(character),做为此 register
的名称。以後要使游标移至此位置就要靠此字元。
register
的名称,只能由一个字元组成。
- Ctrl-x
r j r(jump-to-register)
- 根据 register
r 所储存的位置,将游标移至
r
所设定的位置。使用此指令前,必需确定
register
r,
已设定的妥当了 以下就是设定游标位置以及使用游标位置的步骤:
- 先以 ``Ctrl-x
r SPC r'',将游标的位置储存於
register
r 内。
- 键入 ``Ctrl-x
r j'',
echo
area 会出现 ``Jump
to register:'' 的讯息。
- 在 ``Jump
to register:'' 之後,输入已设定妥善的
register
r 的名称。
此时游标所在的缓冲区若与
register
r 所设定
的缓冲区不一样时,游标会自动移至另一个缓冲区,视窗的
内容也会换成新的缓冲区内容。所以,使用
register
所存放的游标位置,是可以跨越不同的缓冲区来做移动的。
- register
还可用来存放经常被访问到的档案。
- 有人或许会不解,为何耗费如此的功夫,只为了从事
``
Ctrl-x Ctrl-f'' 指令可以做到的事。使用
``
Ctrl-x Ctrl-f'' 有一个不便之处,就是若所欲访问的档案与
EMACS
的预设档案位置
不一样时,则必需告之完整的路径名。所以,此时若使用
register
来储存档名,就只需要给予
register
的名称即可。至於,
冗长的全称就交给 register
去处理了。以下就是以
register
存档案的方法:
- 使用 register
来储存档名与储存游标位置,最大的
不同点在於,以 register
来储存档名必需借助
``.emacs'' 档。 因为以 register
来储存档案名称,必需借由
``.emacs'' 来设定。
- 以 register
来储存档案名称的实际执行步骤如下:
- 设定 ``.emacs''
的方法
- 在 ``.emacs''
档中以
``set-register''
函式
,将 register
的名称以及其所储存的档名设定清础。以下的例子就是将
``chap7.tex''
的档名,放於名为
``a'' 的 register
时,
``.emacs''
档的设定方法
。 (set-register
?a '(file .
"\~/report/emacs/basic/chap7.tex"))
- 当档案名称的设定已在
``.emacs''
档中完成後,必需离开
EMACS ,再重新进入 EMACS
一次。因为只有重新执行
EMACS , 修改过的 ``.emacs''
档才有机会被重新执行。
重新执行过的 EMACS
,就可以
``
Ctrl-x r j r''
将档案从
register
r 中拿出来使用。
以下就是使用 register
r 的方法:
- 键入 ``Ctrl-x
r j RET '', echo
area 会出现
- ``Jump
to register:''。
- 待 ``Jump
to register:'' 的讯息出现时,即可输入已设定好
- register
名称。以上例为例,若输入
``a'', 则视窗会出现
chap7.tex
的文件内容。
- register
中储存文件的方法
- 储存於 register
的文件可以有二种:一种为线性的文件
(linear text),另一种为长方形的文件(rectangle text)。 所以有此区分,原於使用
register
储存文件,需先将所要
储存的文件做上标记,再根据标记放於
register
中。 线性文件与长方形文件在标记上是一样的,要区分二者的差异
只能仰赖使用时的指令了。想进一步了解长方形区域,请参考
5.4
节 ``Move Text
and Copy Text'' 有关长方形部份。以下就讨论二者的用法。
- 线性文件的 register
设定方法如下:
- 将要放入 register
的线性文件做好标记。
- 设定标记的详细方法,请参考
5.3 节。现略做题示,
使用 Ctrl-@ 或 Ctrl-SPC
做为线性文件的起始点,
以游标所在的位置为终点。
- 使用指令 ``
Ctrl-x r s r'',将所设定好的线性文件
- 放入
register
r 中。
- 欲使用 register
r 中的资料时,可以指令
- ``
Ctrl-x r i r''
将存放於
r
中的资料取出使用。
以上所设定的 register
有一特性,就是离开EMACS 後所有的设定 也成为历史。想将
register
内容保留的方法,是将设定写在
``.emacs'' 中,如下是以 register
``a'' 储存
register
文件,
以及以 register
``.'' 储存
``。'' 资料的设定法: (set-register
?a "register") (set-register ?.
"。")
- 长方形文件的 register
表示法:
- 将要放入 register
的长方形文件做好标记。设定标记的
- 方法以及所谓长方形文件的定义,请参考第五章第三节及第四节。
- 使用指令 ``
Ctrl-x r r r'',将所设定好的线性文件
- 放入
register
r 中。
- 使用 register
r 中的资料时,可以指令
- ``
Ctrl-x r i r''
将存放於
r
中的资料取出使用。
放於 register
中的文件,不论是线性文件或长方形文件,
将其拿出使用的指令都是一样的。不一样处在於放入
register
时的差异。会有差异是不难理解的,因为二者在处理标记的过程是一样,
只有靠存入 register
时,以不同的指令来加以区别。
谈完了 register ,接下来介绍 bookmark 。 bookmark 的一些基本概念,已在前面略做介绍了,现在就进一步详述它。
bookmark
与 register
在记录游标位置的功能是一样的,
但在对 register 的命名方面二者就显得有差异了。
bookmark
的命名可以由一个以上的字元组成。换言之,它可以有一个较长的名字,
但 register
就只能由一个字元来命名。而且以
bookmark
设定的资料,可永久储存起来,即使离开EMACS, bookmark 的资料也不会就此消失。所以想要永久保存的资料,只有借重
bookmark
了。 以下就是 bookmark
的使用方法。
- 以 `` Ctrl-x r m bookmark
''指令,将游标所在的
- 位置做上记号(mark),此记号就称为 bookmark。 当第一次使用 `` Ctrl-x r
m'' 指令时, echo area
会出现 ``Set bookmark
(visited-filename) :'' 的讯息。此时,若不输入任何
字元只键入 RET ,系统会以所访问的档名做为
bookmark
的名称。若输入其它的字串,则
bookmark
就以此字串命名之。
- 以 `` Ctrl-x r b bookmark
RET'' 指令,来移动游标的位置。
- 键入 ``Ctrl-x r b''
时, echo area
会出现
``Jump to
bookmark (bookmark-name) :'',
括号内的名称为系统的预设值。若所给予的预设值不是心中所爱,
可以在 `:' 之後输入想要的 bookmark
名称。
资料以 bookmark 的方式储存时,使用者若不另行指定
储存的档名,系统会将有的讯息存入一个名为
``~/.emacs-bkmrks''\index.emacs-bkmrks
的档案中。
接下来,讨论一个使 EMACS 的编辑功能更强化的议题
- Fixing
Typos 。
- EMACS 提供的拼字检查介面,是针对 ispell 的使用法 为主。透过 EMACS 的介面,使用者可使用 UNIX 系统所安装的 ispell。若系统没有安装
ispell,可以 ftp到适当的地方得取。
(Ispell
is available via anonymous ftp from ftp.cs.ucla.edu in
the directory /pub/ispell.)
- ispell 除了会自动侦察文件的拼字错误外,还提供可能
修改的讯息,供使用者参考。 ispell 的除错范围,可以侦察
一个字,也可以侦察一个区域或整个的缓冲区。
使用 ispell
时,程式会根据所检查的内容做出适当的回应。
如果检查无误, echo area 会出现无误的讯息。如果所检查
的字有误, ispell 会另开一个视窗,将所有可能的勘误组合
显示出来,以利使用者做评估。若在显示的视窗找到合适的取代文字,
可直接键入文字的编号来完成勘误的程序。
- ispell 使用了两种不同的字典,一种是由
ispell
所提供的标准字典(standard dictionary)。另一种是使用者自已
建构的私有字典(private dictionary)。标准字典是系统所提供的;
使用者字典是在编辑文件时,因需要而随时加入的。当标准字典无法
找到的字,使用者可随时将新增的字加入私有字典中。系统所使用的
标准字典,可依使用者的需要来指定。当然,若不指定标准字典,
系统会使用预定的字典。若想改变预定的字典,可使用如下的指令来设定:
ESC-x
ispell-change-dictionary
若想查阅所使用的标准字典为何,可查阅变数``ispell-dictionary'' 来得到相关讯息。如下是笔者以 `` Ctrl-h v'' 指令查阅此变数 所得的结果。若已淡忘变数的查询,请参考
4.4 节。 ispell-dictionary's value is
nil Documentation: If non-nil, a dictionary to use
instead of the default one. This is passed to the ispell
process using the "-d" switch and is used as
key in ispell-dictionary-alist (which see). You should
set this variable before your first call to ispell (e.g.
in your .emacs), or use the M-x ispell-change-dictionary
command to change it, as changing this variable only
takes effect in a newly started ispell process. 现在就讨论 ispell 的使用方法。
以上所谈的是透过 EMACS 所提供的介面,使用 UNIX 的拼字检查的 工具( ispell)。如果所使用的系统无法提供此工具软体时,
请以 ftp
取得软体後再自行装置
ispell。否则,就算 EMACS 提供了使用
ispell
的介面,也是无济於事的。
除了以上所谈的以软体来修正错误外,还有其它的方法可以修正所
发生的错误,详述如下:
接下来所要讨论的议题是,如何使用
EMACS
的编辑器来绘制简单的图形。
EMACS 的绘图模式所能提供的绘图功能并不多,它只予许以键盘
上出现的字元,来构思图形,也就是只能以
ASCII
的字元,
来编辑所要的图形。EMACS 的图形模式可以与任何其它的模式
一起搭配使用。所以,只要有编辑图形的需要,都可以切换至
图形模式,将所要的图形编辑出来。
- EMACS 的绘图功能,主要是由八个控制游标移动方向
的指令来完成。这八个方向也是EMACS 构图的主体,
它们依序是,东、南、西、北、东南、西南、西北以及东北。
虽然可以设定八种游标移动的方向,但一次只能设定一个方向,
若想使游标移动的方向改变,必需重新设定游标移动的方向。
设定这八个游标移动方向的指令分别是:
- 东: Ctrl-c > (picture-movement-right)
-
- 西: Ctrl-c < (picture-movement-left)
-
- 南: Ctrl-c . (picture-movement-down )
-
- 北: Ctrl-c ^ (picture-movement-up)
-
- 东南: Ctrl-c \ (picture-movement-se)
-
- 西南: Ctrl-c / (picture-movement-sw)
-
- 东北: Ctrl-c ' (picture-movement-ne)
-
- 西北: Ctrl-c ` (picture-movement-nw)
-
这八个指令似乎颇为复杂,但如配合图形的解释,就可了
这八个指令的由来。因为,每个指令的表示法与所要表达的方向
有著密切关系。 北(rignt) C-c ^ . 西北(nw) . 东北(ne) C-c ` . C-c ' . . . . . .
. . . ... C-c < ................... C-c > 西(left) ... 东(right) . . . . . . . . . C-c /
. C-c \ 西南(sw) . 东南(se) . C-c . 南(down) 从以上的图示,不知能否看出这八个控制方向的指令与所表达
的方向有著密不可分的关连性。例如,往东的方向则以
「>」来表示, 往西的方向则以 「<」,往北的方向则以 「^」 来表示等等。 基本上,从使用的指令就可知道所代表的方向为何。当然,其原意
并不是要以指令来猜方向,而是用方向来诠释指令。所以,只要
掌握西南方的方向,就知道使用 「/」 来表示。
- 图形模式可以在编辑的过程中随时使用的。使用图形模式的
方法很简单,只要将其唤起即可。唤起图形模式的方法是:
``
ESC-x edit-picture''。 当进入图形模式後,
mode
line 会将使用图形模式的讯息
显示出来。进入图形模式後,也可以随时离开此模式,而回到
唤起此模式前的状态。回到先前模式的方法是`` Ctrl-c Ctrl-c。
- 进入图形模式後,就可利用设定游标移动方向的八个指令,
来控制输入字元出现的方向,而绘制出合适的图样。当选定了
游标的移动方向後, mode line 会将游标移动的方向显示出来。
此时,键入任何一个键盘上的字元,字元会依照所设定的方向出现在萤幕上。
- 图形模式所采用的是覆盖模式,这是有其道理的。绘图就是
要在特定的地方绘上所欲的图样,如果使用插入的模式,就会破坏整体
的设计。所以,使用覆盖模式是较合理的安排。
- 图形模式除了设定游标移动方向的指令外,还有其它的指令
是针对编辑功能而设。例如,字或列的删减,空白列的增加等等,
都是在绘图时,不可或缺的编辑指令。现在就来讨论与绘图有关
的编辑指令。绘图的编辑指令与一般编辑的指令大同小异,
为了避免将一般的编辑指令与绘图时所使用的编辑指令混淆,
现将二者的差异整理列举如下:
Keystrokes
|
Text
Mode |
Picture
Mode |
RET |
加入一行空白列
|
使游标向下移动,若要加入空白列,
则使 用 ``Ctrl-o'' 指令。 |
Ctrl-d
|
删除一个字元後,文件会向左移动
|
将游标所在处的字元以空白取代,
但文件不会向左移动。若要删除字元,必需使用
"Ctrl-c
Ctrl-d" 指令。
|
SPACE
|
输入空白且将文件移向右边
|
游标向右移动,同时游标所到之处,均将
文字以空白覆盖。此时若想输入空白,则
必需回到 Text Mode,在text Mode
的状态输入空白
。 |
Ctrl-k
|
删除所在列的内容,使用两次
Ctrl-k
则删除内容与此空白列。 |
删除内容但不会删除列。欲删除列只有
回到 Text Mode |
TAB |
输入 TABs 且将文件向右移动 |
只以TAB 的距离移动游标,但它所经过之
处并不会输入 TABs 。 |
Ctrl-n
|
游标移至下一列,但游标所在的栏
位则视情形而定。 |
游标移至下一列,但栏位与上一列相同。
|
Ctrl-p
|
游标移至上一列,但游标所在的栏
位则视情形而定。 |
游标移至上一列,但栏位与下一列相同。
|
Ctrl-f
|
游标向前移动一个字元。
|
游标向右移动一个字元。
|
Ctrl-b
|
游标往回移动一个字元。
|
游标向左移动一个字元。
|
- 除了以上所谈的种种功能之外,图形模式亦可与长方形
编辑相配合。长方形编辑是专用来编辑区块文件,而图形模式
的编辑,从某个角度来看,就是区块的组合。所以,长方形编辑
的运作,就可用在图形模式的剪贴上。因此,任何可以使用在
长方形编辑的指令,都可用在图形模式中。不熟悉长方形的编辑者,
可参考本文的 5.4 节。
- 图形模式除了可使用长方形编辑的指令外,图形模式
本身,也提供了适用於此模式的专门指令。现就一一为各位介绍。
- 可利用的长方形编辑指令,如下:
- Ctrl-x
r d(delete-rectangle)
- 删除设定好的长方形区块内的文件,经删除後的文件无法再将其
yank 出来。除非是执行 undo 的指令。
- Ctrl-x
r k(kill-rectangle)
- 与图形模式 ``
Ctrl-c Ctrl-k'' 的作用相同。
- Ctrl-x
r y (yank-rectangle)
- 与图形模式 ``
Ctrl-c Ctrl-y'' 的作用相同。
- Ctrl-x
r o (open-rectangle)
- 在设定好的长方形区块内,插入空白後使文件向右移动。
- Ctrl-x
r r r (copy-rectangle-to-register)
- 将设定好范围的区块资料,存入
register
中,
此时区块内的资料并不会消失。
- Ctrl-x
r i r (insert-register)
- 将存入 register
中的资料取出。
- ESC-x
clear-rectangle
- 将设定好的长方形区块内的文件以空白取代。
- ESC-x
string-rectangle RET string
RET
- 设定好的长方形区块插入新的字串(
string)。此时的 区块只决定加入新字串的长度,宽度则由所给予的字串长度
来决定。原来区块内的文件会向右移动。
- 图形模式自行开发的编辑指令,如下:
- Ctrl-c
Ctrl-k(picture-clear-rectangle)
- 长方形指令 ``
Ctrl-x r k" 与此指令具有相同的效果。
此指令经常被使用,所以将长方形的指令予以精简,使其在
图形模式中更易於被使用
- Ctrl-c
Ctrl-y(picture-yank-rectangle)
长方形指令
`` Ctrl-x r y''
与此指令具有相同的效果。此指令经常
被使用,所以将长方形的指令予以精简,使其在图形模式中更
易於被使用。
- Ctrl-c
Ctrl-w r (picture-clear-rectangle-to-register)
- 将区块内的资料存入
register
中。此时区块内的资料会以空白
取代,这是与长方形指令 ``
Ctrl-x r r r 最大不同之处。
- Ctrl-c
Ctrl-x r (picture-yank-rectangle-from-register) 将存入 register
r 中的资料取出。
长方形指令的使用在图形模式中非常有用。因为,图形的构成就是
一块块的区域。所以善用长方形指令会使图形的编辑更加灵活。
回主选单