打开其父目录尚不存在的新文件


9

当打开一个其父目录还不存在的新文件时,我要么打开一个shell窗口,要么打开一个Emacs shell缓冲区,然后mkdir打开其中的目录。我觉得这很麻烦。有没有更简单的方法?

Answers:


16

如果这是您的问题,则无需这样做。

C-x C-f /some/new/directory/newfile.txt

Emacs会显示一条消息,通知您该目录/some/new/directory/尚不存在:Use M-x make-directory RET RET to create the directory and its parents

将文本插入新文件的新缓冲区中newfile.txt

C-x C-s 保存文件。

Emacs询问您是否要创建缺少的中间目录(例如,new/directory/您打y“是”。

IMO,不是很麻烦。用户界面需要询问您是否确认,因为您很容易输入了现有目录的名称。


您也可以只使用M-x make-dir tab(经过测试emacs -Q以确保可以正常使用)RET RET,它将在没有任何进一步提示的情况下创建目录。
乔纳森·里奇·佩平2014年

1
@ JonathanLeech-Pepin:是的,当然。(这就是消息的意思。)但是,如果您已经打开了新的文件缓冲区,只需尝试保存它并使用确认目录创建y
Drew

7

对于ido用户

  • 执行C-x C-f(应调用ido-find-file)并输入不存在的路径。
  • 按下M-m(获取m新目录的助记符?)。打RET
  • 继续输入要在该新目录中创建的新文件名。打RET

1

在这种情况下,emacs应该告诉您以下信息:

use M-x make-directory RET RET to create the directory and its parents

麻烦吗?

我会说,是的。


0

如果确实要find-file在尚不存在的情况下自动创建父目录,则可以在init文件中执行以下操作。

(defun my-find-file (orig-fun &rest args)
  (let* ((filename (car args))
         (directory (file-name-directory filename)))
    (if (not (file-directory-p directory))
        (make-directory directory t))
    (apply orig-fun args)))

(advice-add 'find-file :around 'my-find-file)

毕竟,Emacs被设计为可扩展和可定制的。

参考:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.