Add New Notes

This commit is contained in:
geekard
2012-08-08 14:26:04 +08:00
commit 5ef7c20052
2374 changed files with 276187 additions and 0 deletions

View File

@@ -0,0 +1,139 @@
Content-Type: text/x-zim-wiki
Wiki-Format: zim 0.4
Creation-Date: 2011-08-17T23:11:14+08:00
====== Dired ======
Created Wednesday 17 August 2011
http://www.fengyj.net/emacs/Dired.html
Dired
在 dired 中移动
在 dired 中删除文件(Flags)
一次性标记很多文件
在Dired中访问文件
在Dired中用Mark
操作文件
在 dired 中使用shell命令
dired 中的文件比较
==== 在 dired 中移动 ====
C-n,n,<space>向下移动一行。
C-p,p,<del>向上移动一行。<del>同时还会去掉之前的标记。
j:dired-goto-file,移动到指定目录或文件所在的行。
==== 在 dired 中删除文件(Flags) ====
d:给文件作一个删除标记(flag)。
u:删除文件的删除标记。
<del>:移动到上一行,然后移除上一行的删除标记。
x:执行删除指令。
被删除标记标记的文件或目录前会有一个 D 标记。
一般情况下不能直接删除非空目录,除非变量 dired-recursive-deletes 不为空。
==== 一次性标记很多文件 ====
~:标记所有备份文件,形如“~文件名”的文件。
% d REGEXP <REG>o:为符合正则表达式的文件作标记。
==== 在Dired中访问文件 ====
f:直接访问当前行所指示的文件。 <return>,e:和f一样。
o:和f相似,但在另一个窗口打开文件,光标移到新窗口。
c-o:和f相似,但在另一个窗口打开文件,光标还是在旧窗口。
__^__:访问父级目录,相当于移到当前目录的".."行,然后按f键。
v:和 f 类似,但是打开的文件是只读的。
==== 在Dired中用Mark ====
dired的删除标记叫做 flag,一般的标记则为 mark,dired-mark。
* mark
用*给当前文件作标记。如果提供一个正数作为参数N,则标记从当前文件( 包括当前文件)开始向下的N个文件,如 C-u 3 * m 顺序标记3个文件,如果是负数则向上标记N个文件。
* *
标记所有可执行文件,如果有个参数,则 unmark 这些可执行文件。
* @
标记所有 链接 文件,如果有个参数,则 unmark 这些链接文件。
* /
标记所有目录文件,**除了"."和".."目录**,如果有个参数,则 unmark 这些目录。
__* s__
标记该目录下的所有文件及目录,除了"."和".."目录。
* u
删除当前行的标记
* <del>
移动到上一行,并删除那一行的 mark。
U
移除当前 dired buffer 中的所有 mark,即当前目录中的所有 mark。
__M-}__
移动到下一个 marked file。(dired-next-marked-file)
M-{
移动到上一个 marked file。(dired-prev-marked-file)
* t
mark 开关,也就是 marked files 在执行完命令后变成 unmarked files,而 unmarked files 变成 marked files。(dired-toggle-files)
__* c__ OLD-CHARACTOR NEW-CHARACTOR
改变 marked 标记,用 new charactor 的 mark 替换 old character 的 mark,例如: * c * a,则所有星号的标记都会变成字符 a。用该命令可以实现将任意字符作为标记,包括空格字符,空格字符也代表 unmarked files。
__* %__ REGEXP <enter>
标记所有文件名满足正则表达式的文件。这个和 % d 很类似,% d 是为了给文件作上删除标记。
__* g__ % REGEXP
如果正则表达式匹配了 dired buffer 中的文件的__内容__,则标记该文件。(dired-mark-files-containing-regexp)
C-/
dired undo,取消设定的 mark。
==== 操作文件 ====
在命令前加入数字参数 N,就会操作以当前光标所在的行为基准,向下连续的N个文件,如果N是负数,则操作反方向的连续N个文件。
如果文件被 * 号标记,则操作所有被星号标记的文件。 再者就操作当前行的文件。
下面是操作dired中文件的命令:
`C new <ret>'
复制特定文件(`dired-do-copy')。类似shell命令 cp,变量 `dired-recursive-copies' 控制是否遍历复制子目录,就像 cp -r,默认情况是 `nil',意味不能复制子目录。
`D'
删除指定文件(`dired-do-delete')。和shell中的 rm 命令类似。
`R NEW <RET>'
重命名指定文件(`dired-do-rename')。如果指定的是单个文件,则仅仅完成重命名功能,如果指定的是多个文件,则 NEW 指示的是一个文件夹,命令会把指定的文件剪切到文件夹里,就像shell里的 mv 指令。
`H NEW <RET>'
制作特定文件的硬链接(`diref-do-hardlink')。和shell命令的 ln 类似。
`S NEW <RET>'
制作特定文件的符号链接(`dired-do-symlink')。和shell命令的 ln -s 类似。
__`M__ MODESPEC <RET>'
改变文件的权限(`dired-do-chmod')。
`G NEWGROUP <RET>'
改变文件所属的组为 NEWGROUP。(`dired-do-chgrp')。
`O NEWOWNER <RET>'
改变文件的所有者为 NEWOWNER。(`dired-do-chown')。
`T TIMESTAMP <RET>'
将文件的修改时间调整到当前时间,和shell命令中的 touch 类似(`dired-do-touch')。
`P COMMAND <RET>'
(`dired-do-print')。
__`Z'__
压缩特定的文件(`dired-do-compress')。如果文件已经是压缩文件,则Z会给该文件解压缩。
`L'
装载特定的 Emace Lisp。
==== 在 dired 中使用shell命令 ====
dired 的命令 ! 会在 minibuffer 中提示你輸入 shell 命令,用此命令来操作指定的文件。
有两种方式可以让shell command操作多个文件:
* 命令行包含两边有空格的星号*
如果星号两边为空格,__命令只会执行一次__,* 号会代替当前dired buffer 中__标记__的所有文件名,文件名的顺序即为dired buffer中文件名的顺序。
因此,命令 `! tar czvf zip.tar.gz *' 将当前dired buffer 中的所有文件压缩到 *zip.tar.gz* 中。
* 如果命令行不包括星号,命令会在__每个文件上执行一次__。
例如:`! uudecode <return>'会用uudecode命令依次执行每个文件。
* 命令行上有星号,但两边没有空格,这时会将该星号传给shell当作通配符使用。匹配的文件会和标记的文件一起传给命令 如:
* wl -l "*.cpp~" * //会将当前目录下的所有以.cpp~结尾的文件与当前标记的所有文件一起传给wl命令。
* wl -l "*cpp~" //会将当前目录下的所有以.cpp~结尾的文件与当__前标记的文件一次一个__按先后顺序传给wl命令。
* 命令行包括两边为空格的 ? 用指令操作当前文件,当前行的文件名会替代?。例如:
! chmod 777 ? <return> 会将当前行的文件的权限改为777。
! 用命令行执行的指令不会立即改变dired buffer,但可以用g强制刷新 dired buffer。
==== dired 中的文件比较 ====
有两个 dierd 命令用 diff 比较特定的文件:
` = '
用当前文件(the file at the point)来比较另外一个文件(the file at the mark),利用的是dired的diff程序(`dired-diff')。用 mark标记的文件不是dired的mark,而是__emacs的标准mark__,用快捷键 C-SPACE或C-@所作的mark。
`M-='
用当前文件的备份文件于当前文件进行比较。(`dired-backup-diff')。

View File

@@ -0,0 +1,135 @@
Content-Type: text/x-zim-wiki
Wiki-Format: zim 0.4
Creation-Date: 2011-08-17T23:28:57+08:00
====== Emacs的文件管理器Dired ======
Created Wednesday 17 August 2011
详细的用法说明可以参照Emacs的info文件,这里只是介绍一些常用的功能。
M-x dired 或者 C-x d,可以进入dired-mode,这样便可以对文件进行操作了,作为一个文件管理器还是挺不错的。
在.emacs里加入以下语句。
(setq dired-recursive-deletes t) ; 可以递归的删除目录
(setq dired-recursive-copies t) ; 可以递归的进行拷贝
(require 'dired-x) ; 有些特殊的功能
(global-set-key "/C-x/C-j" 'dired-jump) ; 通过 C-x C-j 跳转到当前目录的 Dired
(setq dired-guess-shell-alist-user
(list
(list "//.chm$" "xchm")
(list "//.rm$" "gmplayer")
(list "//.rmvb$" "gmplayer")
(list "//.avi$" "gmplayer")
(list "//.asf$" "gmplayer")
(list "//.wmv$" "gmplayer")
(list "//.htm$" "w3m")
(list "//.html$" "w3m")
(list "//.mpg$" "gmplayer")
)
) ; 设置一些文件的默认打开方式,此功能必须在(require 'dired-x)之后
一些常用的命令
和文件一样打开目录或通过 C-x d 都可以进入目录的 Dired 缓冲中。这里是打开 Dired-x 之后默认的绑定。说明后面[]中的符号的意义:
[*] 作用在已标记的所有文件(目录)或光标所在当前文件(目录)上。
[p] 用前缀参数表示文件个数,从当前文件开始,正数向下、负数向上。
[u] 用前缀参数改变默认行为。对于设置标记的命令一般变为去掉标记。
[x] 需要加载 dired-x。
查看帮助
? 简单帮助
h 模式帮助
移动光标
n, p, SPC 上、下移动光标 [p]
C-n, C-p 上、下移动光标 [p]
M-{, M-} 已标记的文件之间移动 [p]
C-M-p, C-M-n 缓冲中的子目录间移动 [p]
<, > 缓冲中的目录行间移动 [p]
C-M-u 缓冲中的目录树上移动 [p]
M-g 光标移动到某个文件上
M-G 光标移动到某个缓冲中的子目录上,(用 i 插入的)
标记文件
m 标记文件,下移一行 [p]
u 去掉标记,下移一行 [p]
U 去掉缓冲中所有的标记
M-Backspace 去掉缓冲中所有的某个标记,缺省为 * 标记
Backspace 并去掉上一行标记,并上移一行 [p]
t 标记/未标记互换
D 删除所有标记的文件/目录 [*]
d 设置“删除标记”(字符D),并且光标下移一行 [p]
x 删除用 d 标记的文件/目录
~ 将缓冲中备份文件做删除标记 [u]
& 没用的文件,做删除标记
# 将缓冲中自动保存的文件做删除标记 [u]
. 按备份文件版本,将备份文件做删除标记 [u]
% g 标记所有“含有”regexp 的文件 [u]
* * 标记所有可执行文件 [u]
* . 标记所有同扩展名文件 [ux]
* / 标记所有目录 [u]
* @ 标记所有符号连接 [u]
* c 改变标记的符号
% d 通过匹配 regexp 标记删除
% m 通过匹配 regexp 标记 [u]
复制、移动、创建 文件或目录以及连接
C-x C-f 创建文件
+ 创建目录
R 文件的重命名/移动 [p*]
C 复制文件 [*]
S 创建文件的 Symbol link (绝对路径) [p*]
Y 创建文件的 Symbol link (相对路径) [px*]
H 创建文件的 Hard link [p*]
% C 复制匹配 regexp 的文件 [p*]
% S 创建匹配 regexp 的 Symbol link (绝对路径) [p*]
% Y 创建匹配 regexp 的 Symbol link (相对路径) [p*]
% H 创建匹配 regexp 的 Hark link [p*]
修改文件名、属性
M 修改文件 rwx 权限属性 [*]
G 修改文件 Group 属性 [p*]
O 修改文件 Owner 属性 [p*]
T 修改文件的时间戳 [p*]
% l 文件名逐一改为小写 [p*]
% u 文件名逐一改为大写 [p*]
% R, % r 重命名/移动匹配 regexp 的文件 [p*]
访问文件,目录
e, f, RET 打开文件或目录
a 打开文件或目录,并替换当前缓冲
v 使用 view 模式查看文件,q 退出,有些文件使用外部查看程序调用
o 另一个窗口中,打开文件或目录
C-o 另一个窗口中,打开文件或目录,但当前窗口不变
F 打开(多个)文件 [x*]
I 使用 Info 模式查看文件
N 使用 man 模式查看文件,若有前缀参数,提示输入处理命令 [ux*]
V 使用 RMAIL 模式查看文件 [x]
退出
^ 访问目录的父目录,若有前缀参数在另外的窗口中打开 [u]
q 退出缓冲,若有前缀参数则关闭缓冲 [u]
隐藏/刷新缓冲中内容
s 互换缓冲中“文件名/时间”排序 [u]
C-u s 修改传递给 ls 的参数,即修改每行的内容
i 把当前行的子目录插入缓冲中
M-o 隐藏/显示部分次要文件,使缓冲更简便,若有前缀参数标记隐藏的文件 [ux]
$ 隐藏/显示当前目录中内容 [p]
M-$ 隐藏/显示缓冲中所有目录内容
k 隐藏文件,按 g 可以再显示出来 [p*]
l 刷新缓冲文件 [p*]
g 刷新缓冲所有文件
C-/, C-_, C-x u dired 模式的 undo
其他
= 比较文件
M-= 文件和备份之间比较,若有前缀参数,提示输入 diff 选项 [u]
w 复制文件名到 kill-ring [p*]
Z 压缩/解压缩文件 [p*]
X 在文件上执行 shell 命令 [p*]
B 编译(Emacs Lisp)文件 [p*]
L 加载(Emacs Lisp)文件 [p*]
y 给出文件类型信息 (通过 file 命令)
P 打印文件 [p*]
dired-x.el 中的其他有用的函数
dired-mark-extension 按后缀标记
dired-flag-extension 按后缀标记删除
dired-clean-patch 标记删除 patch 文件
dired-clean-tex 标记删除 tex 编译文件
dired-very-clean-tex 标记删除 tex 编译文件
dired-jump 跳转到当前缓冲所在目录
dired-jump-other-window 在另一个窗口中跳转到当前缓冲所在目录
dired-omit-here-always 在当前目录生成 .dired 文件