क्या ~ / .emacs के बजाय ~ / .emacs.d / init.el का उपयोग करने के कोई लाभ हैं?


108

मैंने सामान्य रूप ~/.emacsसे अपनी कॉन्फ़िग फ़ाइल के लिए उपयोग किया है , लेकिन मैंने दूसरों का उपयोग करने पर ध्यान दिया है ~/.emacs.d/init.el। क्या init.elलोकेशन के फायदे हैं ? कोई नुकसान?


4
Emacs (या कम से कम कुछ संस्करण emacs) स्वचालित रूप से .emacs पर सामान लिखते हैं।
विवि

4
@Vivi जब तक आप बहुत पुराने संस्करणों के बारे में बात कर रहे हैं, Emacs चीजों को लिखते हैं user-init-file। यह तब होगा .emacsजब आप पहले से ही एक थे .emacs, और init.elयदि आप इसके बजाय इसका इस्तेमाल करते थे।
रेडॉन रोसबोरो

लोगों ~/.emacs.d/init.elने नुकसान की उपेक्षा करने के फायदों पर ध्यान केंद्रित किया । मैं उस भाग का उत्तर दूंगा: इसका कोई नुकसान नहीं है!
उमर

स्पर्शरेखीय, रिलीज़ संस्करण 27.1 Emacs से शुरू XDG config पथ को प्राथमिकता देगी ~/.config/emacs/से अधिक ~/.emacs.d/। IIUC, यदि पूर्व मौजूद है , तो बाद की ओर ध्यान नहीं दिया जाएगा।
फिल्स

जवाबों:


103

हां, वहां हैं। Reddit पर चंद्राकार उद्धरण :

  • यह $HOMEनिर्देशिका को अप्रभावित रखता है , क्योंकि Emacs की सभी फाइलें बड़े करीने से एकल निर्देशिका में समाहित हैं। इसी कारण से, सभी आधुनिक एमएसीएस पैकेज में उनके कैश, इतिहास आदि लिखे जाते हैं ~/.emacs.d/

  • यह संस्करण नियंत्रण को आसान बनाता है, खासकर यदि आप अपने init.el को अलग-अलग फ़ाइलों में विभाजित करते हैं ~/.emacs.d। आप बस init.elहर दूसरी फ़ाइल की तरह कमिट कर सकते हैं , और git clone /my/emacs/config.git ~/.emacs.dएक नई प्रणाली में आप अपने सभी एमएसीएस कॉन्फ़िगरेशन को देते हैं, बिना किसी फाइल को लिंक किए $HOME


3
यह संस्करण नियंत्रण को कैसे आसान बनाता है? आप उपयोग किए बिना अपनी इनिट फ़ाइल को विभाजित कर सकते हैं .emacs.d
गिलीस

3
यदि आपके पास केवल .emacs फ़ाइल है, तो यह संस्करण नियंत्रण को आसान नहीं बनाता है, लेकिन यदि आपके पास .emacs.d में अन्य emacs फ़ाइलें हैं, तो यह करता है। उदाहरण के लिए customफ़ाइलों को .emacs.d में सहेजता है और यदि आप init.el को अपने सभी संस्करण में नियंत्रित करते हैं तो emacs फ़ाइलें एक निर्देशिका में होती हैं।
टेड रोडेन

4
अपने .emacs.d / निर्देशिका को पूरी तरह से संस्करण करके, आप संकुल नियंत्रण को उन संकुल नियंत्रण में भी रख सकते हैं जिन्हें आप संकुल के माध्यम से संस्थापित करते हैं। (ELPA, MELPA…)। यह आपके कॉन्फ़िगरेशन को कई कंप्यूटरों के बीच साझा करना और यह पता लगाना आसान बनाता है कि आपके कॉन्फ़िगरेशन में एक प्रतिगमन कहाँ शुरू किया गया था (आप अपनी निर्भरता ट्रैक करते हैं)। बुरा पक्ष यह है कि यह एक बहुत भारी भंडार बनाता है।
tuxella

11
संस्करण नियंत्रण प्रणाली सिर्फ एक फ़ाइल का संस्करण नहीं है - वे एक फ़ोल्डर संस्करण करना चाहते हैं। तो आप संस्करण ~/, और सिर्फ अपने जोड़ें .emacs। लेकिन अब, आपको यह सुनिश्चित करना होगा कि आप कोई अन्य फाइल न करें, इसलिए आप .hignignore या .ignignore की हर दूसरी फाइल को अंदर करें ~/। लेकिन अब आप किसी भी अन्य फ़ाइल को ट्रैक नहीं कर सकते ~/, जैसे ~/.bashrcया ~/.bash_aliases
zck

संबंधित: github.com/RichiH/vcsh
wchargin

37

एक अतिरिक्त लाभ: यदि सब कुछ अंदर है .emacs.d, तो आप ड्रॉपबॉक्स (या एक वैकल्पिक) पर अपने एमएसीएस कॉन्फ़िगरेशन को रख सकते हैं और अपने घर की निर्देशिका में पूरे कॉन्फ़िगरेशन को सिमिलिंक कर सकते हैं। यह संपूर्ण कंप्यूटरों में समन्वय बनाता है।


25

यदि आप सभी को Emacs सेट करने की आवश्यकता है, जैसे कि आप एक init फ़ाइल है, तो यह एक फर्क नहीं पड़ता अगर यह ~/.emacsया है ~/.emacs.d/init.el। लेकिन यह एक निर्देशिका बनाने के लिए समझ में आता है कि जिस क्षण आप अपनी init फ़ाइल को विभाजित करना शुरू करते हैं, या Emacs- संबंधित कॉन्फ़िगरेशन जोड़ते हैं, उदाहरण के लिए एक Cask फ़ाइल। इसके अलावा, यह वह जगह है जहां आप फ़ाइल को एब्बर की परिभाषाओं के साथ सहेजेंगे, कस्टम विकल्पों के लिए फ़ाइल ( M-x customize), आदि।

सब कुछ बड़े करीने से टक कर रखें ~/.emacs.d


6

Emacs 27 एक नई इनिशियलाइज़ेशन फ़ाइल के early-init-fileतहत user-emacs-directory, अर्थात् पर पेश करेगा ~/.emacs.d/early-init.el। तो ~/.emacs.d/init.elइसके बजाय का उपयोग करने के ~/.emacsलिए एक और लाभ यह user-init-fileहै कि पूर्व दोनों संगति फ़ाइलों को एक ही छत के नीचे रखेगा, संगति के लिए।

Emacs 27 जारी होने तक, आप Emacs स्रोत ट्री की निम्न फ़ाइलों में इस नई सुविधा के लिए दस्तावेज़ पा सकते हैं:


2

सुनिश्चित नहीं है कि यह वास्तव में गति के मामले में अंतर करता है, लेकिन आप अपने सेटअप को अधिक आसानी से बाइट-संकलित कर सकते हैं यदि आपका कॉन्फ़िगरेशन .emacs.d/init.el(यानी बनाएँ .emacs.d/init.elc) है


1
ध्यान दें कि ~/.emacs.elएक वैध इनिट फ़ाइलनाम भी है।
फिल्स

1

आप का उपयोग करें ~/.emacs.d/init.elऔर बस उस फ़ाइल को सिमिलिंक करें ~/.emacs, बस कुछ अन्य कार्यक्रमों / प्लगइन्स को .emacs को खोजने की उम्मीद है।

एक macOS या GNU / Linux सिस्टम पर, कमांड होगी:

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

इस तरह आप अपने के कुलपति के सभी लाभ प्राप्त ~/emacs.dनिर्देशिका संरचना और आप एक छोटे नाम का उपयोग करने के लिए जब आप के माध्यम से init.el फ़ाइल को संपादित करने की जरूरत है सक्षम हो जाएगा ~/.emacsलिखने के बजाय ~/emacs.d/init.el👍


ये रहस्यमय "अन्य कार्यक्रम / प्लगइन्स" क्या हैं जो ".emacs" खोजने की उम्मीद करते हैं? मुझे नहीं लगता कि यह एक वास्तविक चिंता है।
फिल्स

1
एक उदाहरण क्विकलिस्प हो सकता है, यदि आप एक करते हैं (ql: एड-टू-फाइल) यह डिफॉल्ट को ~ / /
-मैक्स

कितनी उत्सुकता है। मैं कहूंगा कि इस तरह के किसी भी मामले में बग की रिपोर्ट दर्ज की जाएगी - Emacs ने बहुत लंबे समय के लिए कई प्रकार के init फ़ाइल नामों का समर्थन किया है, और प्राथमिकता क्रम स्पष्ट रूप से प्रलेखित है, इसलिए अन्य कार्यक्रमों के सही न होने का कोई अच्छा कारण नहीं है। । मैं बिल्कुल भी वास्तविक उदाहरण का अनुमान नहीं लगा रहा था, हालांकि :) चीयर्स।
फिल्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.