En emacs, creo un archivo al visitarlo con Cx Cf. Digamos que me gustaría crear /home/myself/new_directory/file.txt.
Si new_directory aún no existe, ¿hay alguna forma de que se cree durante la creación file.txtsin ningún paso adicional? (Estoy pensando en algo como usar la -pbandera mkdiren Linux).
Siento que hay una combinación de teclas diferente en lugar de Cx Cf que puede hacer esto, pero no puedo recordar qué es.

:!mkdir -p ~/new_dir/to/some/crazy/pathM-!por ejemplo.Respuestas:
También puede aconsejar a la función
find-fileque cree de forma transparente los directorios necesarios.Simplemente ponga esto en su
.emacslugar y úselo C-x C-fcomo siempre.fuente
defadviceantes).Cuando proporciono un nombre de ruta con un componente inexistente
find-file(es decir, Cx Cf ), me da un mensaje adicional que diceDado que el archivo no se crea hasta que guarde el búfer por primera vez, puede ejecutarlo
make-directoryinmediatamente después de que aparezca su nuevo búfer o puede hacerlo en cualquier otro momento antes de que necesite guardar el archivo. Luego, desde el búfer que necesita un directorio, escriba Mx make-directory RET RET (solicitará que se cree el directorio (el valor predeterminado se deriva del nombre de ruta del búfer); el segundo RET es aceptar el valor predeterminado).fuente
El modo Ido proporciona
ido-find-fileque es un reemplazofind-filey le ofrece muchas más funciones. Por ejemplo, le permite crear un nuevo directorio mientras abre el archivo.Escriba C-x C-fcomo de costumbre (que se reasigna a
ido-find-file),proporcionar el camino inexistente,
presione M-mque le pedirá que cree el nuevo directorio,
y luego especifique el nombre del archivo para visitar en el directorio recién creado.
fuente
M-men algún momento, yC-x C-fen absoluto si eso no crea todo automáticamente? Si se le solicita que cree el directorio,M-! mkdiro dired también hará un trabajo justo ...ido-find-filecrear automáticamente el directorio? O mejor aún, pregúntame si quiero crearlo. Traté de usar el consejo en la respuesta de Török Gábor, pero no pude averiguar a qué función aplicarlo (ya que ido no llamafind-filedirectamente.)Mi solución viene con una ventaja: si elimina el búfer sin guardarlo, Emacs le ofrecerá eliminar esos directorios vacíos que se crearon (pero solo si no existían antes de que lo invoque
find-file):Versión canónica aquí .
fuente
Además de la sugerencia de @Chris de Mx make-directory, puede escribir una función corta de elisp que hará find-file y luego make-directory ... Puede intentar esto:
No es bonito, y muestra "it MX make-directory ...." antes de decir "Creando directorio ...", pero si nada más, debería comenzar.
fuente
find-filefunción original en lugar de definir una nueva para que otras funciones que llamenfind-filedirectamente puedan incluso beneficiarse del comportamiento modificado.Si sus directorios ya existen, solo generará una advertencia.
Del
C-h f make-directory RETmanual ( ):fuente