Membuka file baru yang direktori induknya belum ada

9

Ketika membuka file baru yang direktori induknya belum ada, saya membuka jendela shell, atau buffer shell Emacs, dan kemudian mkdirdirektori di dalamnya. Saya menemukan ini rumit. Apakah ada cara yang lebih mudah?

Tim
sumber

Jawaban:

16

Anda tidak perlu melakukan itu, jika itu pertanyaan Anda.

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

Emacs mencetak pesan untuk membiarkan Anda tahu bahwa direktori /some/new/directory/belum ada: Use M-x make-directory RET RET to create the directory and its parents.

Masukkan teks ke dalam buffer baru untuk file baru newfile.txt.

C-x C-s untuk menyimpan file.

Emacs bertanya kepada Anda apakah Anda ingin membuat direktori perantara yang hilang (mis new/directory/. , Anda menekan y"ya".

Tidak terlalu rumit, IMO. UI perlu meminta konfirmasi kepada Anda, karena Anda dapat dengan mudah salah mengetik nama direktori yang ada.

Drew
sumber
Anda juga dapat hanya menggunakan M-x make-dir tab(diuji dari emacs -Quntuk memastikan yang berfungsi) RET RETdan itu akan membuat direktori tanpa diminta lebih lanjut.
Jonathan Leech-Pepin
1
@ JonathanLeech-Pepin: Ya, tentu saja. (Itulah yang dikatakan pesan.) Tetapi jika Anda sudah membuka buffer file baru, coba saja simpan dan konfirmasi pembuatan dengan y.
Drew
7

Untuk idopengguna

  • Lakukan C-x C-f(yang seharusnya memanggil ido-find-file) dan masukkan jalur yang tidak ada.
  • Tekan M-m(mnemonik untuk mmendapatkan dir baru?). Hit RET.
  • Lanjutkan dengan mengetik nama file baru yang ingin Anda buat di dir baru itu. Hit RET.
Kaushal Modi
sumber
1

Ketika dalam situasi ini, emacs seharusnya memberi tahu Anda sesuatu seperti:

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

Apakah ini rumit?

Saya akan mengatakan, ya itu.

Nsukami _
sumber
0

Jika Anda benar-benar ingin membuat find-filesecara otomatis membuat direktori induk ketika belum ada, Anda dapat melakukan hal berikut di file init Anda.

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

Bagaimanapun, Emacs dirancang agar bisa diperluas dan disesuaikan.

Referensi:

Lei Zhao
sumber