Ouverture d'un nouveau fichier dont le répertoire parent n'existe pas encore


9

Lorsque j'ouvre un nouveau fichier dont le répertoire parent n'existe pas encore, j'ouvre soit une fenêtre shell, soit un tampon shell Emacs, puis mkdirle répertoire qu'il contient . Je trouve cela lourd. Existe-t-il un moyen plus simple?

Réponses:


16

Vous n'avez pas besoin de faire cela, si telle est votre question.

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

Emacs imprime un message pour vous faire savoir que le répertoire /some/new/directory/n'existe pas encore: Use M-x make-directory RET RET to create the directory and its parents.

Insérez du texte dans le nouveau tampon pour le nouveau fichier newfile.txt.

C-x C-s pour enregistrer le fichier.

Emacs vous demande si vous souhaitez créer les répertoires intermédiaires manquants (par exemple new/directory/,. Vous frappez ypour "oui".

Pas très encombrant, OMI. L'interface utilisateur doit vous demander une confirmation, car vous pourriez facilement avoir mal tapé le nom d'un répertoire existant.


Vous pouvez également simplement utiliser M-x make-dir tab(testé à partir de emacs -Qpour être sûr que cela fonctionne) RET RETet il créera le répertoire sans autre invite.
Jonathan Leech-Pepin

1
@ JonathanLeech-Pepin: Oui, bien sûr. (C'est ce que dit le message.) Mais si vous avez déjà ouvert le nouveau tampon de fichiers, essayez simplement de l'enregistrer et confirmez la création du répertoire avec y.
Drew

7

Pour les idoutilisateurs

  • Faites C-x C-f(qui devrait appeler ido-find-file) et entrez un chemin inexistant.
  • Appuyez sur M-m(mnémonique pour un mnouveau dir?). Frappez RET.
  • Continuez à taper le nouveau nom de fichier que vous souhaitez créer dans ce nouveau répertoire. Frappez RET.

1

Dans cette situation, emacs aurait dû vous dire quelque chose comme:

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

Est-ce encombrant?

Je dirai que oui.


0

Si vous voulez vraiment find-filecréer automatiquement des répertoires parents alors qu'ils n'existent pas déjà, vous pouvez effectuer les opérations suivantes dans votre fichier 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)

Après tout, Emacs a été conçu pour être extensible et personnalisable.

Référence:

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.