mirror of
https://github.com/beyondx/Notes.git
synced 2026-06-18 01:19:18 +08:00
update ZIM
This commit is contained in:
@@ -9,11 +9,10 @@ dired 是 Emacs 自带的文件管理器,操作非常方便,再加上一些
|
||||
===== Mark & Flag =====
|
||||
|
||||
dired 最方便的一点就是可以**对许多文件进行标记,并进行批量操作**。标记的方法有很多,最普通的标记就是 __d __为当前文件贴上删除标签,之后可以使用 __x__ 来真正删除所有贴上删除标签的文件。
|
||||
dired 还提供了许多预定义的方便的标记操作(当使用__ C-u 传递一个前缀参数时,他们执行相反操作__,即去掉标记),例如:
|
||||
|
||||
通常这些命令可以方便地帮你清理垃圾,如果还不满意,可以使用__ % d __REGEXP <RET> 来输入自己的正则表达式,匹配到的文件会被贴上删除标签。
|
||||
|
||||
当然,能用的标签并不止是 __D (即删除标签)__,几乎任何一个字符都可以使用(但需要通过转换,默认的为D和*标签),不过__最常用的还是 *__ , m 命令即是以 * 标记当前文件。同样,dired 提供了很多方便的标记操作(这些命令在传递一个前缀参数的时候都会执行相反的操作,例如 C-u * * 会去掉所有可执行文件的标记):
|
||||
当然,能用的标签并不止是 __D (即删除标签)__,几乎任何一个字符都可以使用(但需要通过转换,默认的为D和*标签),不过__最常用的还是 *__ , m 命令即是以 * 标记当前文件。同样,dired 提供了很多方便的标记操作(这些命令在传递一个前缀参数C-u的时候都会执行__相反__的操作,例如 C-u * * 会去掉所有可执行文件的标记):
|
||||
|
||||
dired 可以使用更多的字符进行标记,只是没有提供相应的快捷键操作而已,你可以先以 * 标记,然后使用 * c OLD-MARKCHAR NEW-MARKCHAR 来把 * 标记变换成其他标记,几乎任何字符(当然不包括中文这种多字节的字符)都可以作为标记,不过空格被特殊对待,用于表示所有未标记的文件。
|
||||
|
||||
@@ -34,9 +33,9 @@ dired 还提供了许多预定义的方便的标记操作(当使用__ C-u 传递
|
||||
|
||||
dired 内建了很多文件操作,对于操作的文件有一个统一的约定,按照顺序是:
|
||||
|
||||
__如果你通过 C-u 传递一个前缀参数 N ,那么它对从当前行开始的 N 行执行操作( N 也可以是负数)。__
|
||||
__ 如果有被标记为 * 的文件,则以这些文件为操作对象。__
|
||||
__ 只对当前光标所在的文件进行操作。__
|
||||
* __如果你通过 C-u 传递一个前缀参数 N ,那么它对从当前行开始的 N 行执行操作( N 也可以是负数)。__
|
||||
* __如果有被标记为 * 的文件,则以这些文件为操作对象。__
|
||||
* __只对当前光标所在的文件进行操作。__
|
||||
|
||||
这些命令全部__绑定到大写字母__上,记忆也非常方便:
|
||||
|
||||
@@ -65,7 +64,7 @@ __ 只对当前光标所在的文件进行操作。__
|
||||
以上命令的标记为D
|
||||
a 在当前buffer打开目录(默认是在新的buffer打开目录)
|
||||
i 在当前buffer尾部打开目录,并设置标记
|
||||
k 隐藏标记为*的文件
|
||||
k 隐藏标记为__*__的文件
|
||||
o 在新buffer中打开当前文件,并将光标移到其中
|
||||
q 关闭当前窗口(不是文件编辑窗口)
|
||||
n 下移一行
|
||||
@@ -89,41 +88,35 @@ __ 只对当前光标所在的文件进行操作。__
|
||||
__w 复制文件名,如果通过 C-u 传递一个前缀参数 0 ,则复制决定路径名,如果只是 C-u 则复制相对于 dired 当前目录的相对路径。__
|
||||
I 把当前文件以 info 文档的格式打开。
|
||||
N 把当前文件以 man 格式打开(使用 WoMan)。
|
||||
Y 为所有标记的文件创建一个到指定目录的相对符号连接(即使用相对路径进行引用,而不是绝对路径)。
|
||||
|
||||
|
||||
===== *命令 =====
|
||||
** 标记所有可执行文件
|
||||
*@ 标记所有符号链接文件
|
||||
*/ 标记所有目录文件
|
||||
*s 标记所有文件为*
|
||||
*. 标记具有给定扩展名的文件
|
||||
* % REGEXP <RET>标记所有__文件名__匹配到给定的正则表达式的文件
|
||||
*s 标记__所有文件__为*
|
||||
* % REGEXP <RET>标记所有__文件名__匹配到给定的正则表达式的文件,等效的命令为%m
|
||||
*? MARKCHAR 或 M-<DEL> __去除所有以 MARKCHAR 标记的文件的标记__,如果传递一个前缀参数,则会对每一个文件要求你确认是否去除标记。
|
||||
__* c OLD-MARKCHAR NEW-MARKCHAR__ 把 * 标记变换成其他标记
|
||||
以上命令的标记为*
|
||||
*! 去除所有文件的标记,等效的命令为U
|
||||
以上命令的标记为*,它们为Dired其它命令的默认操作文件。
|
||||
|
||||
===== %命令(一般和正则表达式有关) =====
|
||||
%d REGEXP <RET> 把__文件名__符合正则表达式的文件标记为删除D
|
||||
% m REGEXP <RET> >标记所有__文件名__匹配到给定的正则表达式的文件
|
||||
% g REGEXP <RET> 标记所有__文件 内容__ 匹配到给定的正则表达式的文件
|
||||
% m REGEXP <RET> >标记所有__文件名__匹配到给定的正则表达式的文件
|
||||
% g REGEXP <RET> 标记所有__文件内容__ 匹配到给定的正则表达式的文件
|
||||
正则表达式语法为grep而非egrep
|
||||
|
||||
===== 强大的重命名功能 =====
|
||||
|
||||
dired 有一个文件名转换的理念,所以转换,并不一定是重命名,还可以是复制和创建链接。所以,除了 % u 和 % l 重命名原文件为大写、小写外,一个使用正则表达式进行转换的命令提供了四个选项: __% X 其中 X 可以是 R , C , H 和 S __,分别代表重命名、复制、创建硬链接和创建软链接,他们使用匹配和替换的机制,这有点像 rename 这个程序,例如: % R \.[^.]*$ <RET> .1\& <RET> 给原来的文件名加个标号 1 ,把 foo.txt 变成 foo.1.txt 。
|
||||
|
||||
另外,dired 还有一个叫做 __Wdired__ 的扩展可以直接在 dired 的 buffer 里面编辑文件名来达到重命名的效果。使用 __M-x wdired-change-to-wdired-mode__ 进入编辑模式,这个时候可以直接像编辑普通文本一样编辑文件名,还可以添加路径来实现把文件移动到其他目录(可以通过保存文件的方式来使更改生效)。除了文件名可以编辑以外,其他部分被标记为只读,但是如果把 __wdired-allow-to-change-permissions__ 设为 t 的话,还可以编辑文件的权限位。编辑完成之后使用 C-c C-c 来应用所做的编辑。非常方便。
|
||||
|
||||
===== 排序和过滤 =====
|
||||
|
||||
dired 有方便的排序功能,这里介绍了如何方便地使用排序功能。另外 dired 还有一个 __k__ 用于去掉不想显示出来的文件,它并不删除磁盘上的文件,只是临时从 dired 的 buffer 中去掉他们,__ g __刷新一下它们又会显示出来,这样,首先用强大的标记功能进行标记,然后使用 k 去掉,就实现了过滤的功能。
|
||||
子目录操作
|
||||
|
||||
===== 同时操作当前目录和子目录 =====
|
||||
dired 允许同时操作当前目录和子目录。在 dired-listing-switches 里面加入 R 选项就可以显示子目录,如果只是想临时显示某个子目录的内容,对该目录执行__ i __操作就会把该子目录的内容添加到 dired __当前 buffer 的末尾__并把光标移动到那里,dired 在__移动之前会先设置一个 mark__ ,所以可以使用 C-u C-<SPC> (对于我来说,我把 set-mark-command 绑定到了 M-<SPC> 上,这里自然就是使用 C-u M-<SPC> 了)回到原来的位置。
|
||||
|
||||
|
||||
还有一些方便的功能,我把几个常用的命令列在这里:
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user