Emacs 通过编辑创建目录

Emacs 通过编辑创建目录,emacs,dir,Emacs,Dir,当我在Emacs dirmode中键入r时,它会进入一种模式,允许通过编辑列表进行目录操作(例如重命名、移动、删除) 我有一个特定的文件,比如说,foo,我想在其原始目录下创建一个新目录,将该目录命名为foo,然后将该文件移动到该目录中,并给它一个不同的名称,比如说bar: /path/to/the/file/foo ↓ /path/to/the/file/foo/bar 我在此模式下编辑了列表,并进行了保存,但操作失败。看起来这样的编辑不允许创建目录。我能做些什么让这成为可能吗 我有很多类似

当我在Emacs dirmode中键入r时,它会进入一种模式,允许通过编辑列表进行目录操作(例如重命名、移动、删除)

我有一个特定的文件,比如说,
foo
,我想在其原始目录下创建一个新目录,将该目录命名为
foo
,然后将该文件移动到该目录中,并给它一个不同的名称,比如说
bar

/path/to/the/file/foo
↓
/path/to/the/file/foo/bar
我在此模式下编辑了列表,并进行了保存,但操作失败。看起来这样的编辑不允许创建目录。我能做些什么让这成为可能吗


我有很多类似的任务要做,在emacs dirmode上编辑对我来说比编写shell脚本要容易得多。

好吧,你不能用这种方式创建目录,也就是说,在
wdired
模式下(当Dired缓冲区可编辑时就是这样)

但是,您可以退出
wdired
C-x C-q
),然后使用
+
创建目录


(顺便说一句,我认为您有一个输入错误:
C-r
在Dired中不切换
wdired
模式,即可编辑性/只读。它只调用
isearch backward
。您可以使用
C-x C-q
切换只读。)

您可以覆盖
wdired的实现,如下所示(想法是在重命名之前创建每个目标文件的父目录):


来源:Joakim Verona via(我刚刚清理了一点补丁)

听起来像是一个非常有用的功能,可以添加到wdired中,因此我建议您
M-x report emacs bug
要求使用此新功能。
diff --git a/lisp/wdired.el b/lisp/wdired.el
index 2e53944..cc838cf 100644
--- a/lisp/wdired.el
+++ b/lisp/wdired.el
@@ -490,6 +490,7 @@ non-nil means return old filename."
               (require 'dired-aux)
               (condition-case err
                   (let ((dired-backup-overwrite nil))
+                    (wdired-create-parentdirs file-new)
                     (dired-rename-file file-ori file-new
                                        overwrite))
                 (error
@@ -499,6 +500,10 @@ non-nil means return old filename."
                             err)))))))))
     errors))

+(defun wdired-create-parentdirs (file-new)
+  "Create parent directories of destination filename."
+  (message "create dir for file %s" file-new)
+  (make-directory (file-name-directory file-new) t))

 (defun wdired-exit ()
   "Exit wdired and return to dired mode.