BBS水木清华站∶精华区

 
图形的编辑 
 
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 节。 
     图形模式除了可使用长方形编辑的指令外,图形模式 
本身,也提供了适用於此模式的专门指令。现就一一为各位介绍。 
 
   *  可利用的长方形编辑指令,如下: 
 
        o   Ctrl-x r d(delete-rectangle) 
               删除设定好的长方形区块内的文件,经删除後的文件无法再将其 
                yank 出来。除非是执行  undo 的指令。 
        o   Ctrl-x r k(kill-rectangle) 
               与图形模式 `` Ctrl-c Ctrl-k'' 的作用相同。 
        o   Ctrl-x r y (yank-rectangle) 
                与图形模式 `` Ctrl-c Ctrl-y'' 的作用相同。 
        o   Ctrl-x r o (open-rectangle) 
               在设定好的长方形区块内,插入空白後使文件向右移动。 
        o   Ctrl-x r r  r (copy-rectangle-to-register) 
               将设定好□围的区块资料,存入  register 中, 
               此时区块内的资料并不会消失。 
        o   Ctrl-x r i  r (insert-register) 
                将存入  register 中的资料取出。 
        o   ESC-x clear-rectangle 
                   将设定好的长方形区块内的文件以空白取代。 
        o   ESC-x string-rectangle RET  string RET 
                设定好的长方形区块插入新的字串( string)。此时的 
                区块只决定加入新字串的长度,宽度则由所给予的字串长度 
                来决定。原来区块内的文件会向右移动。 
 
   *  图形模式自行开发的编辑指令,如下: 
 
        o   Ctrl-c Ctrl-k(picture-clear-rectangle) 
            长方形指令 `` Ctrl-x r k" 与此指令具有相同的效果。 
            此指令经常被使用,所以将长方形的指令予以精简,使其在 
            图形模式中更易於被使用 
        o  Ctrl-c Ctrl-y(picture-yank-rectangle) 
            长方形指令 `` Ctrl-x r y'' 与此指令具有相同的效果。此指令经常 
            被使用,所以将长方形的指令予以精简,使其在图形模式中更 
            易於被使用。 
 
        o   Ctrl-c Ctrl-w r (picture-clear-rectangle-to-register) 
            将区块内的资料存入  register 中。此时区块内的资料会以空白 
            取代,这是与长方形指令 `` Ctrl-x r r  r 最大不同之处。 
 
        o  Ctrl-c Ctrl-x  r (picture-yank-rectangle-from-register) 
                   将存入  register  r 中的资料取出。 
 
 
长方形指令的使用在图形模式中非常有用。因为,图形的构成就是 
一块块的区域。所以善用长方形指令会使图形的编辑更加灵活。 
 
 

BBS水木清华站∶精华区