~ / .Emacs yerine ~ / .emacs.d / init.el kullanmanın avantajları var mı?


108

Normalde ~/.emacsconfig dosyam için kullandım , ancak diğerlerinin de kullanıldığını fark ettim ~/.emacs.d/init.el. init.elKonumun avantajları var mı? Herhangi bir dezavantaj var mı?


4
Emac'ler (veya en azından bazı emac sürümleri) .emac'lere otomatik olarak şeyler yazar.
Vivi,

4
@Vivi Çok eski versiyonlardan söz etmediğiniz sürece, Emacs bir şeyler yazıyor user-init-file. Bu olacak .emacszaten bir olsaydı .emacsve init.eleğer yerine kullandık.
Radon Rosborough

İnsanlar ~/.emacs.d/init.eldezavantajları ihmal etmenin avantajlarına odaklandı . Bu kısmı cevaplayacağım: hiç dezavantajı yok!
Omar,

Yüzeysel olarak, serbest bırakma sürüm 27.1 Emacs başlayarak XDG Yapılandırma yolu tercih edecektir ~/.config/emacs/üzerinde ~/.emacs.d/. IIUC, eğer eski varsa , sonuncusuna bakılmayacak.
phils

Yanıtlar:


103

Evet var. Reddit’de ay cinsinden alıntı :

  • $HOMETüm Emacs dosyaları düzenli bir şekilde tek bir dizinde bulunduğundan , dizini düzenli tutar . Aynı nedenle, tüm modern Emacs paketler vb önbelleklerini, geçmişleri, içine yazma ~/.emacs.d/.

  • Özellikle init.el dosyanızı farklı dosyalara bölerseniz sürüm denetimini kolaylaştırır ~/.emacs.d. init.elDiğer her dosya gibi işlem yapabilirsiniz ve git clone /my/emacs/config.git ~/.emacs.dyeni bir sistemde bir dosyayı bağlamak zorunda kalmadan size tüm Emacs yapılandırmalarınızı verir $HOME.


3
Sürüm kontrolünü nasıl kolaylaştırır? Init dosyanızı kullanmadan bölebilirsiniz .emacs.d.
Gilles

3
Yalnızca .emacs dosyanız varsa sürüm denetimini kolaylaştırmaz, ancak .emacs.d dosyasında başka emacs dosyalarınız varsa, bunu yapar. Örneğin custom, dosyaları .emacs.d dosyasına kaydeder ve init.el dosyasını sürüm denetimli emacs dosyalarının hepsinde tutarsanız, bir dizinde bulunur.
Ted Roden

4
.Emacs.d / dizininizi tamamen sürümlendirerek, paketleri.el (ELPA, MELPA…) aracılığıyla kurduğunuz paketleri sürüm kontrolü altında da tutabilirsiniz. Bu, yapılandırmanızı birden fazla bilgisayar arasında paylaşmayı ve yapılandırmanızda bir regresyonun nerede ortaya çıktığını bulmayı kolaylaştırır (bağımlılıklarınızı izlersiniz). Kötü yanı, oldukça ağır bir depo oluşturması.
smokin

11
Sürüm kontrol sistemleri yalnızca bir dosyayı sürümlendirmez - bir klasörün sürümünü isterler. Yani sürüm ~/ve sadece kendi ekleyin .emacs. Fakat şimdi, başka dosyalar işlemediğinizden emin olmalısınız, bu nedenle .hgignore veya .gitignore içindeki diğer tüm dosyalara ~/. Ancak, şimdi veya ~/benzeri başka dosyaları izleyemezsiniz . ~/.bashrc~/.bash_aliases
zck


37

Ek bir avantaj: eğer her şey mevcutsa .emacs.d, Emacs konfigürasyonunuzu Dropbox'ta saklayabilir (veya bir alternatif) ve tüm konfigürasyonu ana dizininize bağlayabilirsiniz. Bu bilgisayarlar arasında senkronize önemsiz hale getirir.


25

Emacs kurmak için gereken tüm sizin gibi yolu bir init dosyası ise o ise, bir fark yapmaz ~/.emacsya ~/.emacs.d/init.el. Ancak, init dosyanızı bölmeye başladığınız anda veya Emacs ile ilgili yapılandırmaları eklerken, örneğin bir Cask dosyası olarak bir dizin oluşturmak mantıklı olacaktır. Ayrıca, dosyayı kısaltmalar, özel seçenekler için dosya ( M-x customize) vb. İle kaydedeceğiniz yerdir .

Her şeyi düzgünce içine sokun ~/.emacs.d.


6

Emacs 27 early-init-filealtında user-emacs-directory, altında yeni bir başlangıç ​​dosyası sunacaktır ~/.emacs.d/early-init.el. Yani kullanmanın bir başka yararı ~/.emacs.d/init.elyerine ~/.emacsilişkin user-init-fileeski tutarlılığı için, aynı çatı altında hem başlatma dosyaları yerleştirmek olacaktır.

Emacs 27 piyasaya sürülmeden önce, bu yeni özelliğin belgelerini Emacs kaynak ağacının aşağıdaki dosyalarında bulabilirsiniz:


2

Bu gerçekten hız açısından bir fark yaratıyor, ancak eğer emin değil bayt-derleme yapılandırma ise daha kolay kurulum .emacs.d/init.el(yaratmak yani .emacs.d/init.elc)


1
~/.emacs.elAyrıca geçerli bir init dosya adı olduğuna dikkat edin .
phils

1

Siz kullanın ~/.emacs.d/init.elve ~/.emacsbaşka bir programın / eklentinin .emacs komutunu bulmasını beklemesi durumunda, sadece bu dosyayı işaretleyin .

Bir macOS veya GNU / Linux sisteminde, komut şöyle olacaktır:

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

Bu şekilde, ~/emacs.ddizin yapınızın VC'sinin tüm avantajlarını elde edersiniz ve init.el dosyasını ~/.emacsyazarak ~/emacs.d/init.eldeğiştirmek yerine kısa bir ad kullanabilirsiniz.


".Emacs bulmayı bekleyen" bu gizemli "diğer programlar / eklentiler" nelerdir? Bunun gerçek bir endişe olduğunu sanmıyorum.
phils

1
Bir örnek Quicklisp olabilir, eğer bir (ql: add-init-file dosyası)
yaparsanız

Ne kadar meraklı. Bu tür davaların hata raporlarını garanti edeceğini söyleyebilirim - Emacs çok uzun süredir çeşitli init dosya isimlerini destekledi ve öncelik sırası açıkça belgelendi, bu nedenle diğer programların bu sorunu çözmemesi için iyi bir neden yok. . Aslında gerçek bir örnek beklemiyordum, :) Şerefe.
phils
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.