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