Öffnen einer neuen Datei, deren übergeordnetes Verzeichnis noch nicht vorhanden ist

9

Wenn ich eine neue Datei öffne, deren übergeordnetes Verzeichnis noch nicht existiert, öffne ich entweder ein Shell-Fenster oder einen Emacs-Shell-Puffer und dann mkdirdas Verzeichnis darin. Ich finde das umständlich. Gibt es einen einfacheren Weg?

Tim
quelle

Antworten:

16

Sie müssen das nicht tun, wenn das Ihre Frage ist.

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

Emacs druckt eine Nachricht, um Sie darüber zu informieren, dass das Verzeichnis /some/new/directory/noch nicht vorhanden ist : Use M-x make-directory RET RET to create the directory and its parents.

Fügen Sie Text in den neuen Puffer für eine neue Datei ein newfile.txt.

C-x C-s um die Datei zu speichern.

Emacs fragt Sie, ob Sie die fehlenden Zwischenverzeichnisse erstellen möchten (z new/directory/. B. Sie drücken yauf "Ja".

Nicht sehr umständlich, IMO. Die Benutzeroberfläche muss Sie um Bestätigung bitten, da Sie den Namen eines vorhandenen Verzeichnisses leicht falsch eingegeben haben könnten.

Drew
quelle
Sie können auch einfach verwenden M-x make-dir tab(getestet von emacs -Q, um sicherzustellen, dass es funktioniert) RET RETund es wird das Verzeichnis ohne weitere Aufforderung erstellen.
Jonathan Leech-Pepin
1
@ JonathanLeech-Pepin: Ja natürlich. (Das steht in der Nachricht.) Wenn Sie den neuen Dateipuffer bereits geöffnet haben, versuchen Sie einfach, ihn zu speichern und die Erstellung des Verzeichnisses mit zu bestätigen y.
Drew
7

Für idoBenutzer

  • Do C-x C-f(was aufrufen sollte ido-find-file) und geben Sie einen nicht existierenden Pfad ein.
  • Drücken Sie M-m(Mnemonik für ein mneues Verzeichnis?). Hit RET.
  • Fahren Sie mit der Eingabe des neuen Dateinamens fort, den Sie in diesem neuen Verzeichnis erstellen möchten. Hit RET.
Kaushal Modi
quelle
1

In dieser Situation hätte Emacs Ihnen etwas sagen sollen wie:

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

Ist es umständlich?

Ich werde sagen, ja, das ist es.

Nsukami _
quelle
0

Wenn Sie wirklich find-fileautomatisch übergeordnete Verzeichnisse erstellen möchten, wenn diese noch nicht vorhanden sind, können Sie in Ihrer Init-Datei Folgendes tun.

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

Schließlich wurde Emacs so konzipiert, dass es erweiterbar und anpassbar ist.

Referenz:

Lei Zhao
quelle