Dans emacs, je crée un fichier en le visitant avec Cx Cf. Disons que j'aimerais créer /home/myself/new_directory/file.txt
.
Si new_directory n'existe pas encore, existe-t-il un moyen de le faire créer lors de la création de file.txt
sans étapes supplémentaires? (Je pense à quelque chose comme utiliser le -p
drapeau mkdir
sous Linux.)
J'ai l'impression qu'il y a une frappe différente au lieu de Cx Cf qui peut le faire, mais je ne me souviens pas de quoi il s'agit.
:!mkdir -p ~/new_dir/to/some/crazy/path
M-!
par exemple.Réponses:
Vous pouvez également conseiller à la fonction
find-file
de créer de manière transparente les répertoires nécessaires.Mettez-le simplement
.emacs
quelque part et utilisez-le C-x C-fcomme d'habitude.la source
defadvice
auparavant).Lorsque je fournis un nom de chemin avec un composant inexistant
find-file
(par exemple Cx Cf ), il me donne un message supplémentaire qui ditÉtant donné que le fichier n'est pas créé tant que vous n'avez pas enregistré le tampon pour la première fois, vous pouvez soit l'exécuter
make-directory
juste après la création de votre nouveau tampon, soit le faire à tout autre moment avant d'enregistrer le fichier. Ensuite, à partir du tampon qui a besoin d'un répertoire, tapez Mx make-directory RET RET (il demandera au répertoire de créer (la valeur par défaut est dérivée du nom de chemin du tampon); la seconde RET consiste à accepter la valeur par défaut).la source
Le mode Ido fournit
ido-find-file
un remplacementfind-file
et vous offre beaucoup plus de fonctionnalités. Par exemple, il vous permet de créer un nouveau répertoire pendant que vous ouvrez le fichier.Tapez C-x C-fcomme d'habitude (qui est remappé
ido-find-file
),fournir le chemin inexistant,
appuyez sur M-mce qui vous invite à créer le nouveau répertoire,
puis spécifiez le nom de fichier à visiter dans le répertoire nouvellement créé.
la source
M-m
à un moment donné, etC-x C-f
du tout si cela ne crée pas tout automatiquement? Si être invité à créer le répertoire,M-! mkdir
ou dired fera également du bon travail…ido-find-file
créer automatiquement le répertoire? Ou encore mieux, demandez-moi si je veux le créer? J'ai essayé d'utiliser les conseils de la réponse de Török Gábor, mais je n'ai pas pu déterminer à quelle fonction l'appliquer (car ido n'appelle pasfind-file
directement.Ma solution est livrée avec un bonus: si vous tuez le tampon sans l'enregistrer, Emacs vous proposera de supprimer les répertoires vides qui ont été créés (mais seulement s'ils n'existaient pas avant que vous les invoquiez
find-file
):Version canonique ici .
la source
En plus de la suggestion de @Chris de Mx make-directory, vous pouvez écrire une courte fonction elisp qui fera find-file puis make-directory ... Vous pouvez essayer ceci:
Ce n'est pas joli, et il affiche le "it MX make-directory ...." avant de dire "Création d'un répertoire ..." mais si rien d'autre, cela devrait vous donner un début.
la source
find-file
fonction d' origine au lieu d'en définir une nouvelle afin que d'autres fonctions appelantfind-file
directement puissent même bénéficier du comportement modifié.Si vos répertoires existent déjà, un simple avertissement s'affichera.
Dans le
C-h f make-directory RET
manuel ( ):la source