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