BBS水木清华站∶精华区
point的移动
文字的键入及显示是编辑过程不可或缺的。除此之外,移动游标到
适当的位置,也是编辑过程不可缺的功能。现在就来看看在 EMACS
下如何移动 point 或可称为如何移动游标。移动 point 也就是移动
游标,因为 point 是透过游标来显示的。所以在本文会将游标与
point 交互使用。
游标移动不外乎以固定的单位,将其做上下左右的移动。此固定
的单位可能是字元(character)、字(word)、列(line)或页(page)。
现在就来看看如何将游标以这些单位来移动。
o 左右移动一或数个「字元」(character)
+ Ctrl-f(forward-char)
游标往前(右)移动一个字元。
+ Ctrl-u n Ctrl-f
(Ctrl-u n Meta-x forward-char)
游标往前(右)移动 n 个字元。
+ Ctrl-b(backward-char)
游标往回(左)移动一个字元。
+ Ctrl-u n Ctrl-b (Ctrl-u n Meta-x backward-char)
游标往回(左)移动 n 个字元。
o 游标左右移动一或数个「字」(word)
+ Meta-f(forward-word)
游标往前(右)移动一个字。
+ Ctrl-u n Meta-f (Ctrl-u n Meta-x forward-word)
游标往前(右)移动 n 个字。
+ Meta-b (backward-word)
游标往回(左)移动一个字。
+ Ctrl-u n Meta-b (Ctrl-u n Meta-x backward-word)
游标往回(左)移动 n 个字。
o 游标移至一列的「最前端」或「最尾端」
+ Ctrl-a (beginning-of-line)
游标移至一列的最前端。
+ Ctrl-e (end-of-line)
游标移至一列的最尾端。
o 游标上下移动「一列」或「数列」(line)
+ Ctrl-n (next-line)游标向下移动一列。
下移一列的游标其所在的水平位置,与移动前的水平位置
相同。若游标在文件的最後一列时, Ctrl-n 会自创新列再
移到此新列的第一个栏位。
+ Ctrl-u n Ctrl-n(Ctrl-u n Meta-x next-line)游标向下移动 n 列。
+ Ctrl-p (previous-line)游标向上移动一列。
上移一列的游标其所在的水平位置,与移动前的水平位置相同。
若游标已在文件的第一列时,再使用 `` Ctrl-p'' 时
echo area 会显示如下的讯息:
Beginning of buffer
+ Ctrl-u n Ctrl-p (Ctrl-u n Meta-x previous-line)
游标向上移动 n 列。
o 上下卷动缓冲区
+ Ctrl-v(scroll-up)
向上卷动缓冲区,且将目前视窗所显示的最後二列,做为
卷动後的前二列,
point 出现在视窗上的第一列。 EMACS 如此做只是让使用者
有一个承先启後的感觉罢了。
+ Ctrl-u n Ctrl-v
缓冲区向上卷动 n 列。
数字 n 若小於目前 point 在此视窗所在位置的列数,卷动後的
point 位置,仍留在卷动前的同一列上;否则 point 移至视窗
的第一列。
+ Meta-v(scroll-down)
向下卷动缓冲区,且将目前视窗上的前二列做为卷动後的後
二列,此时的 point 出现在萤幕的最後一列。
+ Ctrl-u n Ctrl-v
缓冲区向下卷动 n 列, 若数字 n 小於point 在此视窗以下的列
数,卷动後的 point 位置,仍留在卷动前的同一列处。否则
point 移至视窗的最後一列。
o 左右卷动缓冲区
+ Ctrl-x <(scroll-left)
缓冲区向左卷动。
+ Ctrl-x >(scroll-right)
缓冲区向右卷动。
o 游标移至缓冲区的前端尾端
+ Meta <(beginning-of-buffer)
将游标移至缓冲区的最前端, point 也移至视窗的第一列。
+ Meta >(end-of-buffer)
将游标移至缓冲区的最尾端, point 也移至视窗的最後一列。
o 页数的移动
还记得讨论 `` Ctrl-q'' (quoted-insert) 时,提过分页的控制码。
有了分页的设定,自然会有以页数做为移动游标的单位了。
+ Ctrl-x [ (backward-page)
将 point 移至上一页分页指标(^L)之後且紧邻 ^L。
若point 已紧邻在 ^L 之後了,则会略过此 F在 ^L 之後了,
则会略过此 ^L 到上一个 ^L 之後。
+ Ctrl-x ] (forward-page)
将 point 移至下一页分页指标(^L)之後且紧邻 ^L。
若point 已紧邻在 ^L 之後了,则会略过此 F在 ^L 之後了,
则会略过此 ^L 到下一个 ^L 之後。
+ Ctrl-x Ctrl-p (mark-page)
以页为单位做上记号之後,再配合其它的指令对此页做处理。
此指令类似mark region(5.4 节会讨论其意思)。例如
Ctrl-x Ctrl-p Ctrl-w 是将游标所在的那一页删掉。此指令可以配合
numeric arguments(5.3 节会讨论其意思)使用。
除了以移动游标的方法来游走缓冲区外, EMACS
还提供一个可以直接将游标移到指定的行列。所要到达的目的地,
不论是以字元数或列数为移动的单位,其起算点都是以缓冲区
的第一列第一个栏位为起算的标准。以下就是此方法的介绍。
o Meta-x goto-char RET
键入此指令後再按下 RET ,echo area 会出现
``游标移动的总字元数即可。再一次的提醒各位,字元的
计算是以缓冲区的第一列的第一个字元为起算点。例如,
在 ``Goto char:'' 给予 100 的数字,则游标会从缓冲区的
第一字元移动到第 100 个字元。
o Meta-x goto-line RET
键入此指令再按下 RET 後,echo area 会出现 ``,
在其後输入想要游标移动的列数即可。再一次的提醒各位,
列数的计算是以缓冲区的第一列为起算列。例如,在 ``Goto line:''
给予 100 的数字,则游标会从缓冲区的第一列开始往下移动 10 列。
BBS水木清华站∶精华区