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