emacs 文件管理Dired, the Directory Editor

发布时间:2026/11/4 12:14:42
emacs 文件管理Dired, the Directory Editor

Dired:目录编辑器

Dired 会创建一个 Emacs Buffer,其中包含某个目录的文件列表,并且还可以选择性地包含该目录下的一些子目录的内容。
你可以使用 Emacs 的常规命令在这个 Buffer 中移动和浏览,也可以使用 Dired 专用命令对列表中的文件进行操作。
Dired 既支持本地目录,也支持远程目录。

Dired 缓冲区通常是只读的,不允许在其中插入文本。(不过,Wdired 模式允许这样做,详情请参阅《编辑 Dired 缓冲区》章节。)
普通的可打印字符(例如 d 和 x)被重新定义为 Dired 的专用命令。

一些 Dired 命令会对当前文件(即光标所在行对应的文件)进行标记(mark)或删除标记(flag);其他命令则对已标记的文件进行操作。

你可以先标记某些文件,以便通过一条命令对它们进行批量操作。Dired-X 扩展包为 Dired 模式提供了各种额外功能。
详情请参阅《Dired 扩展用户手册》(Dired Extra User’s Manual)中的 Dired-X 章节。

你也可以使用 C-x C-d(list-directory 命令)查看某个目录中的文件列表。
与 Dired 不同,这个命令不允许你对列出的文件进行操作。
详情请参阅 File Directories(文件目录) 章节。

Emacs Dired 操作速查表

Dired(Directory Editor)是 Emacs 内置的文件管理器。以下整理日常使用中最实用的快捷键,适用于 GUI 和 TUI。

1. 目录导航

快捷键功能
C-x d打开 Dired
C-x C-j定位当前文件(需加载 dired-x)
RET打开文件 / 进入目录
^返回上一级目录
n/p下一个 / 上一个文件
j按文件名跳转
g刷新目录
q退出当前 Dired 视图

2. 文件操作

快捷键功能
+创建目录
C-x C-f新建文件(保存时创建)
C复制文件(Copy)
R移动 / 重命名(Rename)
D删除文件(需确认)
d标记待删除
x执行标记的删除
M修改文件权限(chmod)
O修改文件所有者(chown)
G修改文件所属组(chgrp)

3. 文件标记与批量操作

快捷键功能
m标记文件(Mark)
u取消当前标记
U取消所有标记
t反转标记
% m按正则表达式标记文件
* /标记所有目录
* .按扩展名标记文件
* !取消所有标记

标记多个文件后,可以直接按C批量复制、R批量移动。

4. 搜索与排序

快捷键功能
C-s搜索当前文件列表
s切换名称 / 时间排序
M-x find-name-dired递归搜索文件名
M-x find-grep-dired递归搜索文件内容
M-x dired-hide-details-mode隐藏 / 显示文件详细信息

5. 高级操作

快捷键功能
C-x C-q进入 Wdired,直接编辑文件名
C-c C-c确认 Wdired 批量重命名
C-c C-k取消 Wdired 修改
!对文件执行 Shell 命令
&异步执行 Shell 命令
Z压缩或解压文件
i在当前 Buffer 插入子目录列表
=比较当前文件与另一个文件
h查看 Dired 简要帮助
C-h m查看 Dired 模式完整帮助

6. 最值得记住的 10 个快捷键

快捷键功能
^上一级目录
RET打开文件 / 目录
+创建目录
C复制
R移动 / 重命名
m标记
u取消标记
d → x标记并执行删除
g刷新
C-x C-q批量重命名

使用提示: Dired 的快捷键区分大小写。例如d是标记待删除,而D是直接执行删除命令。

如果你想保存到 Org Mode 笔记,我也可以帮你将这份速查表转换成标准的.org表格格式,方便直接复制到 Emacs。

Dired 图标插件和配套字体

需要一个 Dired 图标插件和配套字体。推荐 nerd-icons-dired,它依赖的 nerd-icons 会随安装自动装上。插件说明 (https://github.com/rainstormstudio/nerd-icons-dired)

你的配置目前没有额外的软件包源,可以按下面配置:

  1. 在 init.el 中加入 MELPA 源,并执行这段代码:
(require'package) (add-to-list 'package-archives '("melpa"."https://melpa.org/packages/")t)
  1. 依次运行以下命令,刷新软件包列表并安装:
M-x package-refresh-contents M-x package-install RET nerd-icons-dired RET
  1. 在 init.el 中加入启用配置:
(use-package nerd-icons-dired :hook(dired-mode.nerd-icons-dired-mode))

终端版还需要设置字体:将终端字体设为 Nerd Font,例如 JetBrainsMono Nerd Font。图形版可以用 M-x nerd-icons-install-fonts 安装图标字体。字体说明 (https://github.com/rainstormstudio/nerd-icons.el#installing-fonts)

如果通过 SSH 使用 Emacs,字体应安装在显示终端的那台电脑上。配置量大约十行,主要工作是首次安装插件和设置字体。

官方文档:
https://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html