In Emacs erstelle ich eine Datei, indem ich sie mit Cx Cf. Nehmen wir an, ich würde gerne etwas kreieren /home/myself/new_directory/file.txt
.
Wenn new_directory noch nicht existiert, gibt es eine Möglichkeit, es während der Erstellung file.txt
ohne zusätzliche Schritte erstellen zu lassen ? (Ich denke an so etwas wie mit der -p
Fahne mkdir
in Linux.)
Ich habe das Gefühl, es gibt einen anderen Tastendruck anstelle von Cx Cf, der das kann, aber ich kann mich nicht erinnern, was es ist.
:!mkdir -p ~/new_dir/to/some/crazy/path
M-!
zum Beispiel.Antworten:
Sie können auch die Funktion empfehlen
find-file
, die erforderlichen Verzeichnisse transparent zu erstellen.Einfach
.emacs
irgendwo unterbringen und C-x C-fwie gewohnt verwenden.quelle
defadvice
vorher nicht).Wenn ich einen Pfadnamen mit einer nicht vorhandenen Komponente
find-file
(z. B. Cx Cf ) übergebe, erhalte ich eine zusätzliche Meldung mit der AufschriftDa die Datei erst erstellt wird, nachdem Sie den Puffer zum ersten Mal gespeichert haben, können Sie sie entweder
make-directory
direkt nach dem Aufrufen des neuen Puffers ausführen oder zu einem anderen Zeitpunkt ausführen, bevor Sie die Datei speichern müssen. Geben Sie dann in den Puffer, der ein Verzeichnis benötigt, Mx make-directory RET RET ein (das Verzeichnis wird erstellt (der Standardwert wird vom Pfadnamen des Puffers abgeleitet); der zweite RET übernimmt den Standardwert).quelle
Der Ido- Modus
ido-find-file
ist ein Ersatz fürfind-file
und bietet Ihnen viel mehr Funktionen. So können Sie beispielsweise ein neues Verzeichnis erstellen, während Sie die Datei öffnen.Geben Sie C-x C-fwie gewohnt (das ist neu zugeordnet
ido-find-file
),den nicht existierenden Pfad angeben,
Drücken Sie M-m, um das neue Verzeichnis zu erstellen.
Geben Sie dann den zu besuchenden Dateinamen im neu erstellten Verzeichnis an.
quelle
M-m
irgendwann drücken undC-x C-f
überhaupt, wenn das nicht alles automatisch erzeugt? Wenn Sie aufgefordert werden, das Verzeichnis zu erstellen,M-! mkdir
oder dired wird auch einen fairen Job machen ...ido-find-file
, das Verzeichnis automatisch zu erstellen? Oder noch besser, frag mich, ob ich es schaffen will? Ich habe versucht, den Rat in Török Gábors Antwort zu verwenden, konnte aber nicht herausfinden, auf welche Funktion er angewendet werden soll (da ido nichtfind-file
direkt anruft .Meine Lösung hat einen Bonus: Wenn Sie den Puffer löschen, ohne ihn zu speichern, bietet Emacs an, die leeren Verzeichnisse zu löschen, die erstellt wurden (aber nur, wenn sie vor Ihrem Aufruf noch nicht vorhanden waren
find-file
):Kanonische Version hier .
quelle
Zusätzlich zu @Chris 'Vorschlag für Mx make-directory können Sie eine kurze elisp-Funktion schreiben, die find-file und make-directory ausführt ... Sie können dies versuchen:
Es ist nicht hübsch, und es blitzt das "it MX make-directory ...." auf, bevor es "Creating directory ..." sagt, aber wenn nichts anderes, sollte es Ihnen einen Anfang geben.
quelle
find-file
Funktion zu empfehlen, anstatt eine neue zu definieren, damit andere Funktionen, diefind-file
direkt aufrufen, sogar von dem geänderten Verhalten profitieren können.Wenn Ihre Verzeichnisse bereits vorhanden sind, wird nur eine Warnung ausgegeben.
Aus dem (
C-h f make-directory RET
) Handbuch:quelle