Відкриття нового файлу, батьківський каталог якого ще не існує


9

Відкриваючи новий файл, батьківський каталог якого ще не існує, я відкриваю вікно оболонки або буфер оболонки Emacs, а потім mkdirкаталог у ньому. Я вважаю це громіздким. Чи є простіший спосіб?

Відповіді:


16

Вам не потрібно цього робити, якщо це ваше питання.

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

Emacs друкує повідомлення , щоб повідомити , що каталог /some/new/directory/ще не існує: Use M-x make-directory RET RET to create the directory and its parents.

Вставте текст у новий буфер для нового файлу newfile.txt.

C-x C-s щоб зберегти файл.

Emacs запитує вас, чи хочете ви створити відсутні проміжні каталоги (наприклад,. new/directory/Ви натискаєте yна "так".

Не дуже громіздкий, ІМО. Користувальницький інтерфейс повинен попросити вас підтвердження, оскільки ви могли легко ввести ім'я існуючої каталогу.


Ви також можете просто скористатися M-x make-dir tab(перевірено, emacs -Qщоб бути впевненим, що це працює), RET RETі це створить каталог без будь-яких подальших підказок.
Джонатан Ліч-Пепін

1
@ JonathanLeech-Pepin: Так, звичайно. (Ось що йдеться у повідомленні.) Але якщо ви вже відкрили новий буфер файлів, просто спробуйте зберегти його та підтвердити створення dir y.
Дрю

7

Для idoкористувачів

  • Зробіть C-x C-f(що повинно викликати ido-find-file) і введіть неіснуючий шлях.
  • Прес M-m(мнемонічний для make new dir?). Удар RET.
  • Продовжуйте вводити нове ім’я файлу, яке ви хочете створити в новому режимі. Удар RET.

1

Коли в цій ситуації, emacs повинен був сказати вам щось на кшталт:

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

Це громіздко?

Я скажу, так.


0

Якщо ви дійсно хочете зробити find-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)

Зрештою, Emacs був розроблений як розширюваний, так і налаштований.

Довідка:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.