Apertura di un nuovo file la cui directory principale non esiste ancora


9

Quando apro un nuovo file la cui directory principale non esiste ancora, apro una finestra della shell o un buffer della shell Emacs e quindi mkdirla directory in esso. Lo trovo ingombrante. C'è un modo più semplice?

Risposte:


16

Non è necessario farlo, se questa è la tua domanda.

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

Emacs stampa un messaggio per farvi sapere che la directory /some/new/directory/non esiste ancora: Use M-x make-directory RET RET to create the directory and its parents.

Inserisci il testo nel nuovo buffer per il nuovo file newfile.txt.

C-x C-s per salvare il file.

Emacs ti chiede se vuoi creare le directory intermedie mancanti (ad esempio, new/directory/hai premuto yper "sì".

Non molto ingombrante, IMO. L'interfaccia utente deve chiederti conferma, perché potresti aver sbagliato a digitare il nome di una directory esistente.


Puoi anche usare M-x make-dir tab(testato emacs -Qper essere sicuro che RET RETfunzioni ) e creerà la directory senza ulteriori richieste.
Jonathan Leech-Pepin,

1
@ JonathanLeech-Pepin: Sì, certo. (Questo è quello che dice il messaggio.) Ma se hai già aperto il nuovo buffer di file, prova a salvarlo e conferma la creazione di dir y.
Ha

7

Per gli idoutenti

  • Fai C-x C-f(che dovrebbe chiamare ido-find-file) e inserisci un percorso inesistente.
  • Premi M-m(mnemonico per make new dir?). Hit RET.
  • Continuare a digitare il nuovo nome file che si desidera creare in quella nuova directory. Hit RET.

1

In questa situazione, emacs avrebbe dovuto dirti qualcosa del tipo:

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

È ingombrante?

Dirò, sì lo è.


0

Se vuoi davvero find-filecreare automaticamente le directory principali quando non esistono già, puoi fare quanto segue nel tuo 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)

Dopotutto, Emacs è stato progettato per essere estensibile e personalizzabile.

Riferimento:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.