BBS水木清华站∶精华区

 
有关目录的编辑方法 
 
Dired 是专门针对目录来运作的编辑功能。进入Dired mode 後, 
EMACS 会根据使用者所指定的目录来列出其下的档案及次目录, 
此时可根据需要EMACS 对这些档案及次目录作些运作。 
 
     EMACS 所提供可操作  Dired 的种类如下: 
 
  1. 可阅读、编辑  Dired 所列举出来的档案 
  2.  操作  Dired 下的档案 
 
     (a)在  Dired 可以删除(delete)档案 
          此功能可以很容易的将EMACS 的备份档(其档名以 ~结尾)、 
          暂存档(档名在两个 # 中间)或具某一特殊档名模式的档案 
          删除。 
 
     (b) 档案的拷贝 
 
     (c) 档名的更新 
 
     (d) 改变档案的 mode 
 
     (e) 改变 gid、uid 
 
     (f) 档案的列印 
 
     (g) 档案的压缩、解压缩 
 
     (h) 载入、编绎 EMACS 的 LISP file 
 
     (i) 可产生 hard links 与 symbolic links 
 
     (j) 可将档名换成大写或小写的英文字母 
 
  3.  可在  Dired 中执行 shell 的指令 
  4.  可使用 UNIX 的 diff 指令比较档案间的异同 
  5.  可隐藏次目录 
  6.  可使用 find 的公用程式来寻找档案 
 
以上所列举的就是Dired的功能,有人说它类似 PC 上的 PCTOOLS, 
读者是否有相同的感觉呢? 
 
进入 Dired 模式的方法很简单,只要键入 
``ESC-x dired''即可。此时的  minibuffer 会显示出如下 
的文字: 
 
        Dired (directory): 
 
``:'' 之後是目前所在的目录,此时可以修改目录名。确定所要 
使用的目录,按下 RET 後,系统会另开启一个视窗来显示此 
目录下的所有档案。之後就可以对这些档案做运作。 Dired 所使用 
的缓冲区是一个唯读(read-only)的缓冲区,所以 mode line 
会出现二个 %% 来表示其为唯读的状态。如果要缓冲区的唯读 
状态改为可读,可以键入Ctrl-x Ctrl-q 的指令,将缓冲区的状态改变。 
运作此缓冲区有其特别的方法,因此对此缓冲区做编辑并无实质上 
的作用。以下就介绍运作 Dired 的方法: 
 
   *  在 Dired 中删除档案 
     Dired 最基本的指令,就是将要删除的档案做上旗标(flag)之後, 
     再将有旗标的档案删除。 
 
 
 
        o   d 
             将游标移至所欲删除的档案列,键入 d。此列的最前方会出现 
             D,这就是删除的旗标。此时的游标会移至此列的下一列。 
 
        o   u 
             若想放弃已定好的旗标,可以键入 u 使萤幕上的 D 消失。 
 
        o   x 
             键入指令 d 只是将要删除的档案先做上旗标,并未真正执行 
             删除的动作。只有键入 x 才会将所有做上旗标的档案删除。 
             执行删除档案之前,会先询问是否真要删除的意见。此时如果 
             回答 ``yes''则执行删除的动作,若回答 ``no'' 不执行删除的动作, 
             但旗标依然存在著。 
 
 
   *  在 Dired 中将多个档案同时做上旗标 
 
 
 
        o   -# 
             键入 #,系统会自动将所有的自动储存的档案(auto-save file) 
             做上删除的旗标。 
 
        o  ~ 
             键入 ~,系统会自动将所有的备份档(backup file)做上删除 
             的旗标。 
 
        o   %d  regexp RET 
             将所有适合的  regular expression 档案做上删除的旗标。 
 
        o  所有做上旗标的档案要执行删除的动作,都必需执行指令  x。 
 
   *  在 Dired 中访问档案 
 
 
 
        o  f(dired-find-file) 
             如果想要访问目前游标所在列的档案,只要在此列上键入 f 即可。 
             此时,档案的内容会显示在原先显示 Dired 缓冲区的视窗上。 
             使用此方法访问档案,就如同以  Ctrl-x Ctrl-f 访问档案一样。 
 
        o   o(dired-find-file-other-window) 
             此方法也是用来访问档案,但与键入 f 有些不同之处。键入 
             o 後,所访问的档案会出现在另一个视窗上而游标也会移至 
             所访问的视窗,显示 Dired 缓冲区的视窗并未消失在萤幕上。 
 
        o   Ctrl-o(dired-display-file) 
             此方法与键入 o 雷同,二者不同之处在於键入  Ctrl-o 
             後所访问的档案会出现在另一个视窗上,但游标不会移至所访问 
             档案的视窗,依然留在显示 Dired 缓冲区的视窗上。 
 
        o   v(dired-view-file) 
             此指令仅供流□档案之用,因为以此而开启的档案是唯读档案。 
 
 
   *  将 Dired 的档案做上标记 
 
 
 
        o   m(dired-mark) 
             将目前游标所在的档案做上标记 ``*''。如果给予数值引数, 
             则做上标记的档案数目会依所给予的数目而定。 
 
        o   *(dired-mark-exectables) 
             将所有的可执行档(executable files)做上标记 ``*,若给予 
             数值引数。则会将所有做上标记的可执行档的标记取消(unmark)。 
 
        o   @(dired-mark-symlinks) 
             将所有的 symbolic files 做上标记 ``*,若给予数值引数。则会将 
             所有做上标记的 symbolic files 档的标记取消(unmark)。 
 
        o   /(dired-mark-directories) 
             将所有为目录的档名,但除了 ``.'' 与 ``..'' 之外, 
             均做上标记 ``* 。若给予数值引数,则会将所有做上标记的 
             目录名称的标记取消(unmark)。 
 
        o   ESC-DEL  markchar(dired-unmark-all-files) 
             消除所有以字元(character)( markchar) 做为标记的记号。 
             如果给予数值引号,则在消除每一个记号时,会询问是否要 
             消除记号。 
             回答 ``y'' 则表示要将记号消除,回答 ``n'' 则表示 
             不要消除已做好的记号。若此时键入 !,则表示消除其馀的记号 
             不再询问意见。 
 
        o c  old new(dired-change-marks) 
             使用此指令,可将原本以  old 为标记的记号,换成以 new 
             为标记的记号。 
 
        o  %m  regexp RET(dired-mark-files-regexp) 
             可使用regular expression ,将具有某一类型的档案做上标记。 
 
 
   *  在 Dired 中的运作方式,有几件事情必需注意: 
 
       1.  如果给予指令数值引数  n 时,此时指令所运作的档案是从 
          目前游标所在的档案起往後算  n 个档案(包括游标所在的档案)。 
          如果给予负数的数值,则往游标所在处之前算  n 个档案(包括 
          游标所在的档案)。 
       2.  如果不给予任何的数值引数,则指令的运作□围会以做了 
          标记的档案为主。 
 
       3.  如果不给予数值引数也不对任何档案做标记,则指令只对 
          目前游标所在列的档案运作。 
 
       4. 所有运作 Dired 缓冲区的指令都是大写的英文字母,所有的 
          指令都是使用minibuffer 来接收所需的讯息。 
 
     以下就是运作 Dired 缓冲区的指令: 
 
        o   C  new RET (dired-do-copy) 
          拷贝档案。若有多个档案同时要拷贝,则引数  new 代表 
          档案所要拷贝到的目录。若只拷贝一个档案,可利用此引数 
          new 将档案从新命名。 
        o   R  new RET (dired-do-rename) 
          更换档名。若有多个档案同时要换档名,则引数  new 代表档案 
          换名称後所要放置的目录。若只有一个档案,此引数  new 
          代表更换的档名。当档名更换完毕, Dired 缓冲区的档案名称 
          会自动跟著更换。 
        o   H  new RET (dired-do-hardlink) 
          将档案标上 hard links 的标记。引数  new 代表 hard links所要连接 
          的目录。若只有一个连接时,此引数  new 代表连结的名称。 
        o   S  new RET (dired-do-symlink) 
          将档案标上 symbolic links 的标记。引数  new 代表 symbolic links 
          所要连接的目录。若只有一个连接时,此引数 new 代表连结的名称。 
        o   M  midespec RET (dired-do-chmod) 
          更改特定档案的模式(mode,permission bits)。此程式使用 
          chmod 的程式,所以 式适用的引数。 
        o   G  newgroup RET (dired-do-chgrp) 
          改变特定档案的团体(group)为新的团体( newgroup)。 
        o   O  newowner RET (dired-do-chown) 
          改变特定档案的拥有者(owner)为新的拥有者( owner)。 
        o   P  command RET (dired-do-print) 
          列印特定的档案,可利用  minibuffer 输入列印的指令 command。 
        o   Z (dired-do-compress) 
          压缩或反压缩特定的档案。如果档案已被压缩则将其反压缩, 
          反之则将档案压缩。 
        o   L (dired-do-load) 
          载入特定的 EMACS Lisp 档案。 
        o   B (dired-do-byte-compile) 
          位元编译(byte compile)特定的 EMACS Lisp 档案。 
 
 
   *  Dired 在编辑远方档案与使用 ftp 的用法 
           使用 EMACS 的远方编辑或使用 EMACS 来做 ftp 时,若只 
     给予目录名,系统会进入 Dired 的模式。此时可使用运作 Dired 
     缓冲区的指令来操作所要的档案。至於何为远方的编辑会在下一节 
     中讨论。 

BBS水木清华站∶精华区