Apakah ada keuntungan menggunakan ~ / .emacs.d / init.el daripada ~ / .emacs?

108

Saya biasanya menggunakan ~/.emacsfile konfigurasi saya, tetapi saya perhatikan orang lain menggunakan ~/.emacs.d/init.el. Apakah ada keuntungan init.ellokasi? Kerugian?

Larry Coleman
sumber
4
Emacs (atau setidaknya beberapa versi emacs) menulis barang di .emacs secara otomatis.
Vivi
4
@Vivi Kecuali Anda berbicara tentang versi yang sangat lama, Emacs menulis semuanya user-init-file. Ini akan menjadi .emacsjika Anda sudah memiliki .emacs, dan init.eljika Anda menggunakannya.
Radon Rosborough
Orang-orang fokus pada keuntungan ~/.emacs.d/init.elmengabaikan kerugian. Saya akan menjawab bagian itu: tidak ada kerugian sama sekali!
Omar
Tangensial, mulai dari versi rilis 27,1 Emacs akan lebih memilih XDG config jalan ~/.config/emacs/lebih ~/.emacs.d/. IIUC, jika yang pertama ada , yang terakhir tidak akan dilihat.
phils

Jawaban:

103

Ya ada. Mengutip lunaryorn di Reddit :

  • Itu membuat $HOMEdirektori tidak berantakan, karena semua file Emacs tertata rapi dalam satu direktori. Untuk alasan yang sama, semua paket Emacs modern menuliskan cache, sejarah, dll ~/.emacs.d/.

  • Itu membuat kontrol versi lebih mudah, terutama jika Anda membagi init.el Anda menjadi file yang berbeda di ~/.emacs.d. Anda dapat melakukan init.elseperti semua file lainnya, dan git clone /my/emacs/config.git ~/.emacs.dpada sistem baru memberi Anda semua konfigurasi Emacs Anda, tanpa harus menautkan file ke dalamnya $HOME.

nicael
sumber
3
Bagaimana cara membuat kontrol versi lebih mudah? Anda dapat membagi file init Anda tanpa menggunakan .emacs.d.
Gilles
3
Itu tidak membuat kontrol versi lebih mudah jika Anda hanya memiliki file .emacs, tetapi jika Anda memiliki file emacs lain di .emacs.d, itu. Misalnya custommenyimpan file ke .emacs.d dan jika Anda tetap init.el di semua file emacs versi terkontrol Anda berada dalam satu direktori.
Ted Roden
4
Dengan mengversi direktori .emacs.d / Anda sepenuhnya, Anda juga dapat tetap mengontrol versi dari paket yang Anda instal melalui paket.el (ELPA, MELPA ...). Ini memudahkan Anda untuk berbagi konfigurasi di antara banyak komputer dan untuk menemukan tempat regresi diperkenalkan dalam konfigurasi Anda (Anda melacak dependensi Anda). Sisi buruknya adalah membuat repositori yang cukup berat.
tuxella
11
Sistem kontrol versi tidak hanya versi satu file - mereka ingin versi folder. Jadi Anda versi ~/, dan tambahkan saja .emacs. Tapi sekarang, Anda harus memastikan Anda tidak melakukan file lain, jadi Anda .hgignore atau .gitignore setiap file lain di ~/. Tetapi sekarang Anda tidak dapat melacak file lain di ~/, suka ~/.bashrcatau ~/.bash_aliases.
zck
Terkait: github.com/RichiH/vcsh
wchargin
37

Satu keuntungan tambahan: jika semuanya ada .emacs.d, Anda dapat menyimpan konfigurasi Emacs Anda di Dropbox (atau alternatif) dan menghubungkan seluruh konfigurasi ke direktori home Anda. Itu membuat sinkronisasi di seluruh komputer sepele.

shosti
sumber
25

Jika semua yang Anda butuhkan untuk mengatur Emacs seperti yang Anda suka adalah file init, itu tidak membuat perbedaan apakah itu ~/.emacsatau ~/.emacs.d/init.el. Tetapi masuk akal untuk membuat direktori saat Anda mulai membelah file init Anda, atau menambahkan konfigurasi terkait Emacs, file Tong misalnya. Juga, itu adalah tempat di mana Anda akan menyimpan file dengan definisi singkatan, file untuk opsi khusus ( M-x customize), dll.

Simpan semuanya dengan rapi ~/.emacs.d.

Daniel Szmulewicz
sumber
6

Emacs 27 akan memperkenalkan file inisialisasi baru di early-init-filebawah user-emacs-directory, yaitu di ~/.emacs.d/early-init.el. Jadi manfaat lebih lanjut untuk menggunakan ~/.emacs.d/init.elbukan ~/.emacsuntuk user-init-fileyang pertama akan menempatkan kedua file inisialisasi di bawah atap yang sama, untuk konsistensi.

Sampai Emacs 27 dirilis, Anda dapat menemukan dokumentasi untuk fitur baru ini di file berikut dari pohon sumber Emacs:

Kemangi
sumber
2

Tidak yakin apakah ini benar-benar membuat perbedaan dalam hal kecepatan, tetapi Anda bisa meng-compile pengaturan Anda dengan lebih mudah jika konfigurasi Anda ada di .emacs.d/init.el(mis. Buat .emacs.d/init.elc)

armando.sano
sumber
1
Perhatikan bahwa ~/.emacs.elini juga nama file init yang valid.
phils
1

Anda menggunakan ~/.emacs.d/init.eldan hanya menyinkronkan file itu ke ~/.emacs, untuk berjaga-jaga jika beberapa program / plugin lain berharap menemukan .emacs.

Pada sistem macOS atau GNU / Linux, perintahnya adalah:

ln -s ~/.emacs.d/init.el ~/.emacs

Dengan cara ini Anda mendapatkan semua manfaat VC dari ~/emacs.dstruktur direktori Anda dan Anda akan dapat menggunakan nama yang lebih pendek ketika Anda perlu mengedit file init.el melalui ~/.emacsalih-alih mengetik ~/emacs.d/init.el👍

cseder
sumber
Apakah "program / plugin lain" yang misterius ini yang "diharapkan akan ditemukan .emacs"? Saya tidak berpikir itu masalah nyata.
phils
1
Salah satu contohnya adalah Quicklisp, jika Anda melakukan (ql: add-to-init-file) defaultnya adalah ~ /
.emacs
Penasaran sekali. Saya akan mengatakan bahwa setiap kasus seperti itu akan menjamin laporan bug - Emacs telah mendukung berbagai nama file init untuk waktu yang sangat lama, dan urutan prioritas didokumentasikan dengan jelas, jadi tidak ada alasan yang baik untuk program lain untuk tidak mendapatkan yang benar . Tapi saya tidak mengantisipasi contoh yang sebenarnya sama sekali :) Ceria.
phils