BBS水木清华站∶精华区

 
EMACS 的萤幕安排 
 
在 text-only 的终端机启动 EMACS 时, EMACS 会占据整个萤幕, 
此时的萤幕称为 frame。再一次的强调,本文只讨论 text-only 的 
终端机,至於 X Window 的环境则不在讨论的行列中。 
     text-only 的  frame 又由数个  window 所组成。 
启动 EMACS 时,会产生二个预设的视窗,一个视窗用来输入一般 
的文件,在未有文件输入前先用来展示前面提到的 EMACS 版本、 
线上辅助说明以及有关版权等讯息;另一个视窗用来输入指令 
或是用做讯息的回应,称为  minibuffer或  echo area。 
     若终端机提供反白的功能,在反白区域以上的地方是用来输入 
文件的视窗;反白区域以下的地方则是 minibuffer 或  echo area。 
此反白的长条型则称为  mode line,它是用来描述输入文件视窗 
的一些讯息。现在就来谈谈组成 EMACS  frame 的这三个部份。 
     有关文字视窗的部份,因为还牵涉到缓冲区的问题, 
现在先略过不谈,下一节再行讨论。现在先讨论与其有关的 
mode line和位於  mode line下的minibuffer 
或  echo area。 
     mode line 出现在每一个文字视窗的最後一列,其描述此 
视窗的相关资讯。 
mode line 所描述的讯息如下: 
 
        --ch-Emacs: buf   (major minor) --pos-------------- 
 
现在则分别解释其所代表的意义。 
 
   *  rl-h 代表缓冲区的状态(何谓缓冲区会在下一节讨论)。 
 
 
 
 
        o   -- 表示缓冲区未被修改过。 
 
 
        o   ** 表示缓冲区已被修改过。 
 
 
        o   %% 表示缓冲区为 read-only 的缓冲区。 
 
 
        o   %* 表示 read-only 的缓冲区被修改过。 
 
 
 
   *   buf 
      表示此视窗缓冲区的名称,一般即为所编辑的档案名称。 
 
   *   major minor 
      此缓冲区所有使用的模式( mode)都列举在此括号内。其中 
     包括一个主要模式 (major mode)和数个次要模式( minor mode)。 
     EMACS 允许一个缓冲区有数个次要模式,但只能有一个主要模式。 
 
   *   pos 
        表示文件在视窗显示的情形。其表示的种类如下: 
 
 
 
 
        o   All 
                   如果资料很少可以一「幕」了然,则会以 All 来表示。 
 
 
        o   Top 
                   若资料无法一「幕」了然,但出现的位置在最前面,则以 
                   Top 来表示。 
 
 
        o  无法一「幕」了然的资料,出现的位置是在最尾端,则以 
                    Bot 来表示。 
 
 
        o   nn% 
                   若资料出现的位置不在第前端也不在最後端,则以百分比 
                   来表示资料出现的情形。 
 
 
 
     介绍完了  mode line ,现在来谈谈  echo area 
与  minibuffer。在 frame 的最後一列,也就是 
mode line 的下一列就是  echo area或  minibuffer 
出现的地方。二者使用同一区位但所代表的意思却不相同。 
Echoing 的意思就是将键入的字元在萤幕上回应出来。 EMACS 
对於只有一个字元的指令并不会把它 Echoing 出来,例如 `` Ctrl-e''。 
对於多个字元的指令,只要在键入指令的时候给予稍许的停顿, 
echo area 就会把键入的指令回应出来。等第一次的回应 
产生时,再输入的部份就不需要再给予停顿的时间,其回应会在 
键入的同时立即产生。  echo area 除了回应键入的指令, 
也会将指令所产生的讯息显示出来;错误讯息的显示也是利用此区域。 
 
      minibuffer 所使用的地方与  echo area 
相同。它本身也是一个视窗,是用来输入执行指令所需的引数(argument)。 
使用  minibuffer 的同时也会使用  echo area。 
      minibuffer 输入引数的地方,是在  echo area 
回应字串的 ``:'' 之後。因为  echo area 的回应是以 ``:'' 
的出现做为结束。换言之, ``:''冒号之後就是  minibuffer 
输入引数的地方。 
     例如,要访问一个档案,键入指令 ``Ctrl-x Ctrl-f'' 时, 
 echo area 会出现 
         Find file: 
``Find file'' 就是  echo area 的回应字,而此回应字串以 
``:'' 做为结束。 所以 ``:'' 之後,就是  minibuffer 的地盘了, 
也就是  minibuffer 输入引数的地方。 
     使用  minibuffer 时,游标会自动移至  minibuffer 
所在处,当游标在  minibuffer 时,就表示可以输入引数了。 
若游标因为某些原因不出现在  minibuffer 的位置,此时可以 
`` Ctrl-x o (other-window)使游标在视窗间移动,直到游标出现在 
minibuffer 所在的视窗为止。 若已在  minibuffer 的状态, 
但不想输入任何引数,此时可以 `` Ctrl-g(keyboard-quit)) 离开 
 minibuffer。输入 ``Ctrl-g'' 後,游标会移至其它的视窗。 
      minibuffer 也是一个视窗,所以可以从别的视窗 
移至此视窗; `` Ctrl-x o'' 的指令就是用来使游标在各个视窗间 
移动的。一般的  minibuffer 都只有一列的高度,但有时 
一列的高度无法将资料显示完毕,此时的  minibuffer 就需要 
调整其大小了。至於如何将  minibuffer 的视窗做调整, 
就是下一节所要讨论的重点之一了。 

BBS水木清华站∶精华区