1 特性
~~~~~~~
* 过滤不需要的文件显示
* 在Dired buffer中猜测需要执行的shell命令
* virtual-Dired,根据非Dired Buffer的内容模拟Dired Buffer
* 大量的文件标记命令
* 根据光标所处文本作为文件名来打开文件
2 启用Dired-X
~~~~~~~~~~~~~~
(add-hook 'dired-load-hook (lambda () (load "dired-x") ;; Set dired-x global variables here. For example: ;; (setq dired-guess-shell-gnutar "gtar") ;; (setq dired-x-hands-off-my-keys nil) )) (add-hook 'dired-mode-hook (lambda () ;; Set dired-x buffer-local variables here. For example: ;; (dired-omit-mode 1) ))
3 过滤不需要的文件显示
~~~~~~~~~~~~~~~~~~~~~~~
3.1 命令
=========
* * O
(dired-mark-omitted)标识哪些文件不需要显示的
* M-o
(dired-omit-mode)是否显示被标记为无需显示的文件
3.2 变量
=========
* dired-omit-files
文件名匹配该正则表达式的文件被认为是无需显示的
* dired-omit-extensions
文件扩展名在其中的文件被认为是无需显示的
4 猜测应该执行的shell命令
~~~~~~~~~~~~~~~~~~~~~~~~~~
Dired会根据文件名猜测你想要执行的shell命令. 当按下"!"键后,Dired会将猜测的shell命令作为mini-buffer的默认项
Dired只会对单个文件进行猜测shell命令,而不会对多个mark的文件进行猜测
4.1 命令
=========
* !
对指定文件允许shell命令.该shell命令使用Dired-buffer的最顶端目录作为执行shell命令的工作目录
* M-!
类似!,但是该shell命令使用当前目录作为执行shell的工作目录,当一个Dired-buffer中使用i命令插入了多个子目录时,两者有差别
4.2 变量
=========
* dired-guess-shell-alist-default
预定义好的猜测规则,设为nil则不做猜测
* dired-guess-shell-alist-user
用户自定义的猜测规则,会覆盖dired-guess-shell-alist-default中的值.
该list中各元素的格式为(REGEXP COMMAND...),这里COMMAND可以是字符串或者返回值为字符串的LISP表达式,可以提供多个COMMAND以供选择.
COMMAND中可以用*来替代文件名称.
* dired-guess-shell-gnutar
指明使用的tar命令是否是gnu的tar命令,不同点在于z选项. 如果为nil则表示不用gnu的tar命令,否则应该为gnu tar命令名
* dired-guess-shell-gzip-quiet
指明是否給gzip命令使用-q命令
* dired-guess-shell-znew-switches
传递給znew命令的选项
* dired-shell-command-history
该列表保存了所有读取过的dired-shell命令
5 Virtual Dired
~~~~~~~~~~~~~~~~
若buffer中的内容刚好符合Dired-mode的格式,则可以用M-x dired-virtual入dired-virtual-mode中,该mode根据buffer的内容生成Dired-mode,我们可以在其中进行操作,所进行的操作会影响到真实的文件系统.
6 高级文件标记命令命令
~~~~~~~~~~~~~~~~~~~~~~~
* F
打开所有marked的文件,并且同时显示他们出来
* M-(
该命令会提示输入一个判断式,Emacs根据该判断式来标记文件,若加了前缀参数,则取消这些标记. 这些判断式是一个Lisp表达式
;;找所有空的文件
(equal 0 size)
;;查找所有没有对应elc文件的el文件
(not (file-exists-p (concat name "c")))
其中表达式中可以是包含如下这些符号
+ inode
integer型,表示文件的inode
+ s
integer型,表示文件的大小
+ mode
string型,表示文件的属性,类似'-rw-r--r--'这样的格式
+ nlink
integer型,表示文件拥有link的个数
+ uid
string型,表示文件的所有者
+ qid
string型,表示文件的所有组
+ size
integer型,表示文件的大小
+ time
string型,为ls命令显示的时间
+ name
string型,为文件的名称
+ sym
string型,如果文件是一个软链接,则为被链接的文件名,否则为""
* dired-mark-extension
为指定扩展名的所有文件加Mark标记,需要明确写"."
* dired-flag-extension
为指定扩展名的所有文件加Delete标记.
* dired-clean-patch
为patch命令产生的临时文件加Delete标记.
* dired-clean-tex
为Tex,LaTeX和texinfo命令产生的临时文件加Delete标记.
* dired-very-clean-tex
为TeX,LaTeX,texinfo产生的临时文件,和*.dvi文件加Delete标记
7 根据光标所处文本作为文件名来打开文件
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
如果想要使用该项功能,需要在dired-load-hook时,设置`dired-x-hands-off-my-keys`为nil
* dired-x-find-file
dired-x-find-file跟find-file一样,但是若加了prefix argument(即在执行命令前执行C-u),则使用光标出处文本作为默认的文件名
* dired-x-find-file-other-window
类似dired-x-find-file,但在另一个窗口显示
* dired-x-hands-off-my-keys
是否用dired-x-find-file替代find-file,用dired-x-find-file-other-window替代find-file-other-window的标志,t表示不替代,否则表示替代.
该变量需在加载dired-x.el之前赋值,若在加载了dired-x.el之后更改了该变量,请执行命令dired-x-bind-find-file
* dired-x-bind-find-file
该命令根据dired-x-hands-off-my-keys的值来决定是否使用dired-x-find-file和dired-x-bind-file-other-window替代find-file和find-file-other-window
9 其他说明
~~~~~~~~~~~
* dired-jump
绑定到C-x C-j,跳转到当前buffer 文件所处的dired处
* dired-jump-other-window
绑定到C-x 4 C-j,类似dired-jump,但是打开的dired处于另一个窗口
* dired-vm
对当前文件执行VM命令,若dired-bind-vm变量为t则绑定到dired-mode的V命令中
* dired-rmail
对当前文件执行Rmail命令,若dired-bindvm为nil则绑定到dired-mode的V命令中
* dired-info
对当前文件执行Info命令,若dired-bind-info为nil则绑定到dired-mode的I命令中
* dired-man
对当前文件执行man命令,若dired-bind-man为nil则绑定到dired-mode的N命令中
* dired-do-relsymlink
对dired-mode中做了mark标记的文件或光标所在的文件创建相对链接,绑定到dired-mode的Y命令