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水木清华站∶精华区