BBS水木清华站∶精华区
在 Emacs 中如何加入与显示文件
EMACS 允许输入文件时,将资料直接输入在 point 所在位置
的正前方,此方法称为 insert mode;或将输入的资料以覆盖的
方式取代 point 所在位置的字元,此方法则称为 overwrite mode。
现举一实例来说明 insert mode 与 overwrite mode 的异同。
o 字串 food, point 所在位置为 d 处,此时的状态为
insert mode。
在 point 所在的 d 处键入 t ,原字串变为
footd。
o 字串 food, point 所在位置为 d 处,此时的状态为
overwrite mode。
在 point 所在的 d 处键入 t ,原字串变为
foot。
EMACS 对输入模式的预设值是 insert mode,若想将模式转换成
overwrite mode,
指令 `` Meta-x overwrite-mode RET'' 可满足此一需求。若想恢复
insert mode,只需再使用一次 `` Meta-x overwrite-mode RET''就可以了
。当输入模式转为 overwrite mode 时,萤幕下方的 mode line 会显示
``Ovwrt'' 的讯息,用以提示目前是使用 overwrite 的模式。
指令 `` Meta-x overwrite-mode''是用来转换 insert mode 与
overwrite mode
。在此前提下,原为 insert mode ,经转换
则为 overwrite mode。反之,若原为 overwrite mode 则转换成
insert mode。
EMACS 的 overwrite mode 只针对从键盘输入的文件有效,
若文件不是从键盘输入,而是以别的方式产生的,则一律失去
overwrite的效用。例如,拷贝而来的文件或以 `` Ctrl-x i'' 得来的文件,
EMACS 一律使用insert mode。
除了 insert 与 overwrite 的显示方法外, EMACS 还允许
使用者输入一些从键盘上无法输入的字,那就是一些控制码
和八进位超过 200 的字元。要输入这些特殊的文字时,只要在
这些字的前方加上 `` Ctrl-q''即可。例如,要输入分页码
(formfeed ,ASCII Ctrl-L, octal code 014),
则输入 ``Ctrl-q Ctrl-l'' 即可。此时萤幕会出现 C此时萤幕会出现
^L 的符号。当输入文件的长度,超过 EMACS 视窗宽度所能显示
的□围,EMACS 对此情形的处理如下所示:
o 若文件太长需要换列时,在换列处键入 RET ,其後的文字
会自动转到下一列且以第一个栏位为新列的起始点。若其後没有
文件而键入 RET ,游标会会停在下一列的第一个栏位。
o 不理会文件是否会超过视窗的宽度,也就是不键入 RET 而
继续输入文字。 EMACS 会自动在视窗的最後加上 ``\'' ,而将其馀
的文字移至下一列;若下一列还是无法显示出所有的文字,会在
此列的最後再加上一个 ``~续将多馀的文字移至下一列。 EMACS
就是不断重复如此的动作,直到所有的文字都能完全显示出来为止。
所代表的意思与键入RET 并不相同。键入 RET 表示重新使用
一个新列;不键入 RET 而令 EMACS 自动加入所产生的文件,
仍代表著同一列,只是这一列太长, EMACS 无法以其视窗的
宽度来一次穷尽,必须分为数次来表示。
o 不键入 RET ,也不使 EMACS 自动产生 ,而使超过萤幕宽度
的部份暂时隐藏起来。EMACS 处理这种情形,是在视窗的最後
加上一个 ``$'' 。 ``$'' 表示其後的内容在视窗上暂时看不到,
但仍安在缓冲区内。EMACS 的基本预设是自动加入 ``\''。要使
多馀的文字隐藏起来,必须设定 ``truncate-lines'' 变数的值为正值。
变数设定的方法请参考 4.4 节。
4.4 节曾谈过一个视窗可以分成左右二个小视窗,此视窗可以
做水平的卷动,此情形下的视窗在处理太长的列时,就是将
truncate-line 变数的值设成正值,使超过宽度的文件隐藏起来。
前面所谈的都是「文字」的插入方式,但如何插入一个「非文字」
的空白列呢?在编辑的过程中,若想在某列之前加入一个新列,
只需将游标移至此列的最前端
,随後再按下 RET 即可。此时 EMACS 会在游标所在处的前一列,
加入一空白列。 EMACS 为何要将空白列加在游标之前而不是游标
之後呢?因为将空白列加在游标之前,有一个最大好处,就是可以
很轻易的在缓冲区的最前端加入一个空白列。
此时所键入的 ``RET'' ,代表著 newline 。若不键入 RET, 也可以
使用 EMACS 所提供的 Hotkey ,也就是 Ctrl-j (tex-terminate-paragraph)
来获得新的一列。
BBS水木清华站∶精华区