Dalam emacs, saya membuat file dengan mengunjunginya dengan Cx Cf. Katakanlah saya ingin membuat /home/myself/new_directory/file.txt
.
Jika direktori baru belum ada, apakah ada cara untuk membuatnya dibuat selama pembuatan file.txt
tanpa langkah tambahan? (Saya sedang memikirkan sesuatu seperti menggunakan -p
flag mkdir
di Linux.)
Saya merasa ada keystroke yang berbeda daripada Cx Cf yang bisa melakukan ini, tapi saya tidak ingat apa itu.
:!mkdir -p ~/new_dir/to/some/crazy/path
M-!
misalnya.Jawaban:
Anda juga dapat menyarankan fungsi
find-file
untuk membuat direktori yang diperlukan secara transparan.Cukup letakkan ini di
.emacs
tempat Anda dan gunakan C-x C-fseperti biasa.sumber
defadvice
sebelumnya).Ketika saya memberikan nama path dengan komponen yang tidak ada,
find-file
(yaitu Cx Cf ), memberi saya pesan tambahan yang mengatakanKarena file tidak dibuat sampai Anda pertama kali menyimpan buffer, Anda dapat menjalankannya
make-directory
tepat setelah buffer baru muncul atau Anda dapat melakukannya di lain waktu sebelum Anda perlu menyimpan file tersebut. Kemudian dari buffer yang membutuhkan direktori, ketik Mx make-directory RET RET (itu akan meminta direktori untuk membuat (default berasal dari pathname buffer); RET kedua adalah untuk menerima default).sumber
The Ido modus memberikan
ido-find-file
yang merupakan pengganti darifind-file
dan memberi Anda lebih banyak fitur. Sebagai contoh, ini memungkinkan Anda untuk membuat direktori baru sementara Anda membuka file.Ketik C-x C-fseperti biasa (yang dipetakan ulang ke
ido-find-file
),menyediakan jalur yang tidak ada,
tekan M-myang akan meminta direktori baru untuk dibuat,
dan kemudian tentukan nama file untuk dikunjungi di direktori yang baru dibuat.
sumber
M-m
di beberapa titik, danC-x C-f
sama sekali jika itu tidak membuat semuanya secara otomatis? Jika diminta untuk membuat direktori,M-! mkdir
atau dired akan melakukan pekerjaan yang adil juga ...ido-find-file
otomatis membuat direktori? Atau bahkan lebih baik, tanyakan apakah saya ingin membuatnya? Saya mencoba menggunakan saran dalam jawaban Török Gábor, tapi saya tidak tahu fungsi mana yang akan diterapkan (karena ido tidak meneleponfind-file
langsung.Solusi saya datang dengan bonus: jika Anda membunuh buffer tanpa menyimpannya, Emacs akan menawarkan untuk menghapus direktori kosong yang dibuat (tetapi hanya jika mereka tidak ada sebelum Anda dipanggil
find-file
):Versi kanonik di sini .
sumber
Selain saran @Chris tentang direktori-make Mx, Anda dapat menulis fungsi elisp pendek yang akan melakukan find-file dan kemudian membuat-direktori ... Anda dapat mencoba ini:
Itu tidak cantik, dan itu mem-flash "itu direktori make MX ...." sebelum mengatakan "Membuat direktori ..." tetapi jika tidak ada yang lain, itu harus memberi Anda permulaan.
sumber
find-file
fungsi asli daripada mendefinisikan yang baru sehingga fungsi lain yang meneleponfind-file
langsung bahkan dapat mengambil manfaat dari perilaku yang dimodifikasi.Jika direktori Anda sudah ada, itu hanya akan memunculkan peringatan.
Dari manual (
C-h f make-directory RET
):sumber