Abrir un nuevo archivo cuyo directorio padre aún no existe

9

Cuando abro un nuevo archivo cuyo directorio padre aún no existe, abro una ventana de shell o un búfer de shell de Emacs, y luego mkdirel directorio en él. Me parece engorroso. hay una manera mas facil?

Tim
fuente

Respuestas:

16

No necesita hacer eso, si esa es su pregunta.

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

Emacs muestra un mensaje para informarle de que el directorio /some/new/directory/no existe todavía: Use M-x make-directory RET RET to create the directory and its parents.

Inserte texto en el nuevo búfer para el nuevo archivo newfile.txt.

C-x C-s para guardar el archivo

Emacs le pregunta si desea crear los directorios intermedios que faltan (p new/directory/. Ej . , Pulsa y"sí".

No muy engorroso, en mi opinión. La interfaz de usuario debe pedirle confirmación, ya que fácilmente podría haber escrito mal el nombre de un directorio existente.

Dibujó
fuente
También puede usar M-x make-dir tab(probado desde emacs -Qpara asegurarse de que funciona) RET RETy creará el directorio sin más indicaciones.
Jonathan Leech-Pepin
1
@ JonathanLeech-Pepin: Sí, por supuesto. (Eso es lo que dice el mensaje). Pero si ya ha abierto el nuevo búfer de archivos, intente guardarlo y confirme la creación del directorio con y.
Dibujó
7

Para los idousuarios

  • Do C-x C-f(que debería llamar ido-find-file) e ingrese una ruta inexistente.
  • Presione M-m(¿mnemónico para mun nuevo directorio?). Hit RET.
  • Continúe escribiendo el nuevo nombre de archivo que desea crear en ese nuevo directorio. Hit RET.
Kaushal Modi
fuente
1

En esta situación, emacs debería haberte dicho algo como:

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

¿Es engorroso?

Diré que sí.

Nsukami _
fuente
0

Si realmente desea find-filecrear automáticamente directorios principales cuando aún no existe, puede hacer lo siguiente en su archivo de inicio.

(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)

Después de todo, Emacs fue diseñado para ser extensible y personalizable.

Referencia:

Lei Zhao
fuente