BBS水木清华站∶精华区
如何载入档案与储存档案
使用编辑器最基本的需求,就是要能载入档案以便编辑。
现在就先来看看 EMACS 是如何处理档案的载入。
EMACS 载入档案的方法很简单,只要在键入 "Ctrl-x Ctrl-f"
之後,再利用 minibuffer 输入所要编辑的档名即可。
档名的输入可以与 completion 相互搭配。
键入 ``Ctrl-x Ctrl-f'' 命令之後,在 mininbuffer 处输入
已存在硬碟的档案, EMACS 会执行如下的过程:
1. 产生一个新的缓冲区。
2. 将所欲编辑档案的内容,拷贝至缓冲区内。
3. 将缓冲区的内容显示出来,以便编辑。
这整个事件的过程,在 EMACS 的编辑系统中称为「访问档案」
( visiting file )。
虽然载入档案的方法很简单,但仍有几件事情值得讨论的,
现说明如下:
* 键入 ``Ctrl-x Ctrl-f'' 後, echo area 会显示目前缓冲区
的目录,此时若编辑档案的目录与 echo area 所显示的目录
相同,可迳在其後输入档名即可。
* 若档案所在的目录与目前缓冲区的目录不同,输入档名的方法
有如下几种:
o 档案在同一个机器上的做法:
+ 无视 echo area 所显示的目录,由使用者重新输入档名。
键入新档名的方法,是在 echo area 显示目录的最後方键入
``/'' ,``/'' 代表, 忽略``/'' 之前面的路径,新的路径从 ``的路径
必须键入绝对路径(absolute file name)。
现举一实例说明。
Find file: ~/work/emacs/emacs.tex
所要编辑的档案在 ~/work/doc/text.tex
此时输入正确档名的做法如下所示:
Find file:~/work/emacs/emacs.tex//~/work/doc/text.tex
+ 以 EMACS 提供的删除功能,将不必要的字删除之後,
再输入正确的资料.
除非显示的目录与所欲编辑的目录相差无几,使用删除的方法
才有意义,否则不如放弃所显示目录,重新开始新的生涯才是正途。
至於如何删字,会在 5.2.5 一节中说明,此处就不赘言。
所欲编辑的档案,不在目前所在的机器上的做法,如下所示:
前已述及 EMACS 可以 FTP 的方式来编辑远方的档案,但 EMACS
是如何以 FTP 的方法来编辑远方□档案呢?想要编辑远方的档案,
只要给予正确的语法, EMACS 就会根据其语法来决定是否要使用
FTP 来编辑此档案了。其语法很简单,只有 /host:filename 而已。
如何来使用其语法呢?
由其语法可知,其语法是由四组元素所组成的字串,包括二组子字串
(host 和 filename)以及二个符号(/ 和 :)。在 minibuffer 处
输入 / 後,紧接给予档案所在的机器名称(host),在其後立即给予
``:'' ,在 ``:'' 後则输入所欲编辑档案,整个访问档案的过程就完成。
注意此四组资料间,不可以留有任何的的空白。现举一实例子来说明之。
Find file:~/work/emacs.tex//hsko@gate.sinica.edu.tw:~/work/text.tex
o 键入 ``Ctrl-x Ctrl-f'' 当 echo area 显示出目前缓冲区
的目录後,只给予 RET 而别无它物时, EMACS 以目前缓冲区
所使用的档案为预设档案。
o 键入 ``Ctrl-x Ctrl-f'' 後,突然改变心意,想知此目录以外
其它目录的档名,除了使用 ``Ctrl-x d''(使用目录的编辑指令-dired)
指令外,还可以利用现有的目录名称来得到想要的讯息。其作法
是直接修改 echo area 所显示的目录,直到所要的目录
出现後,键入 RET,此时会另开启一个视窗来显示出此目录下
的所有档名。若想操作这些档案,其操作方式与运作 Dired 的
方式相同。若对 Dired 的印象已经模□的人,请参阅 3.2 节 。
以上是介绍档名的输入方式。在编辑资料的同时,是否
可以轻易查得目前所在的目录?" Meta-x pwd" 指令可以满足
这种需求。键入 " Meta-x pwd" 後, EMACS 会假借
echo area将目前所在的目录显示出来。
以上谈的都是 EMACS 输入档案的方式,但 EMACS
又是如何为其缓冲区命名的呢?其实使用者并不需要为缓冲区命名,
因为 EMACS 会自动给予缓冲区合适的名称。EMACS 为缓冲区的
命名,可以从 mode line上得知。
EMACS 命名缓冲区的方式是根据所键入的档案名称而来,
它舍弃了所有的目录名称只保留编辑档案的档名。所以若全名为
``/user/work/emacs.tex'' 的档案,其缓冲区的名称则为 ``emacs.tex'' 。
除了将档案从硬碟直接载入缓冲区外,在编辑档案的同时,
有时需要参考其它的档案,甚至需要引进其它的档案到目前所使用
的缓冲区内。 EMACS 的 `` Ctrl-x i'' 指令,就是让使用者能随时
引进其它的档案到目前的缓冲区内。 ``Ctrl-x i'' 的 `` i'' 是 insert
的意思,相信了解意思後,对於该指令应有较深刻的印象,否则
怎有知已知彼,百战百胜之说呢?
以下是 EMACS 有关档案载入指令的整理:
o Ctrl-x Ctrl-f(find-file)
o Ctrl-x i(insert-file)
o Meta-x pwd
文件编辑完後,最重要的事情就是要能将其保留下来。以下就
来谈谈文件储存的方法。档案储存不外乎将缓冲区的内容以原名
或易名存回磁碟;此储存方式可以选择一次存一个档案或一次
存数个档案;最後的考量是存完档案後是否要直接离开 EMACS。
下面就来看看EMACS 所提供的相关指令。
o 存档但不离开 EMACS
+ Ctrl-x Ctrl-s(save-buffer
将目前缓冲区的内容,存回磁碟中。存回的档案名称与缓冲区
的名称相同
。此指令只对目前所使用的缓冲区做存档的动作。若缓冲区
的内容未有任何的变动则 echo area 会显示如下的文字:
(No changes need to be saved)
+ Ctrl-x Ctrl-w(write-file)
此指令与上一个指令相似,不同之处在於可以使用与缓冲区
不同的档案名称存档。。换言之,可另行指定存回磁碟的档名。
键入 ``Ctrl-x Ctrl-w'' 後, echo area 会显示出目前
缓冲区所在的目录,
此时,使用者可根据需要输入档名。若不输入任何档名只键入 RET ,
系统仍会将缓冲区内的资料存回原先访问的档案中。此指令
也只对目前所使用的缓冲区做存档的动作。
+ Ctrl-x s(save-some-buffers)
此指令可用来储存所有被修改过的缓冲区。使用此指令时,
echo area 除了显示 档案名称外,还会在档名之後出现
(y, n, !, ., q, C-r or C-h)
这些讯息是提供给使用者做参考的。现在就告诉使用者这些
讯息所代表的意义。
1. y
同意对 echo area 所显示的缓冲区存档,进一步
徵询其它档案是否存档的意见。
2. n
放弃对 echo area 所显示的缓冲区存档,但徵询
其它档案是否 存档的意见。
3. !
同意对 echo area 所显示的缓冲区存档且一并
对其它的缓冲区存档,此时不再一一徵询其它档案是否
存档的意见。
4. .
同意对 echo area 所显示的缓冲区存档,但放弃
对其它未存档的缓冲区存档,且直接离开此存档的状态。
5. q
离开存档的状态而不执行任何存档的动作。
6. C-r
可以此指令流□目前所要储存的档案内容,当离开此流□
状态即回复存档的模式,系统会再度询问与存档有关的讯息。
7. C-h
对於以上的选项若有不明白的地方,可以此功能查阅其意思。
o 存档後直接离开 EMACS
Ctrl-x Ctrl-c(save-buffers-kill-emacs)
此指令容许用者在决定是否将缓冲区的内容存档後,立即
离开 EMACS。此指令实际上是先执行 ``save-some-buufers''
的动作再离开 EMACS。
讨论完了载入与储存档案的功能之後,相信已经迫不急待想要
知道如何编辑一份心目中想要的文件。现在就是介绍如何编辑
档案的时候了。
BBS水木清华站∶精华区