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