มีข้อได้เปรียบอะไรบ้างในการใช้ ~ / .emacs.d / init.el แทน ~ / .emacs?


108

ผมเคยใช้ตามปกติ~/.emacsสำหรับไฟล์ config ของฉัน ~/.emacs.d/init.elแต่ฉันได้สังเกตเห็นคนอื่นใช้ มีข้อได้เปรียบในinit.elที่ตั้งหรือไม่ ข้อเสียใด ๆ


4
Emacs (หรืออย่างน้อย emacs บางรุ่น) เขียนเนื้อหาลงใน. emacs โดยอัตโนมัติ
Vivi

4
@Vivi ถ้าคุณกำลังพูดคุยเกี่ยวกับรุ่นเก่ามาก Emacs user-init-fileเขียนสิ่งที่เป็น นี่จะเป็น.emacsถ้าคุณมีแล้ว.emacsและinit.elถ้าคุณใช้มันแทน
Radon Rosborough

ผู้คนให้ความสำคัญกับข้อดีของการ~/.emacs.d/init.elละเลยข้อเสีย ฉันจะตอบส่วนนั้น: มันไม่มีข้อเสียเลย!
โอมาร์

สัมผัสเริ่มต้นจากการเปิดตัวรุ่น 27.1 Emacs จะชอบเส้นทาง XDG การกำหนดค่ามากกว่า~/.config/emacs/ ~/.emacs.d/IIUC หากอดีตมีอยู่แล้วหลังจะไม่ถูกมอง
phils

คำตอบ:


103

ใช่แล้วล่ะ. การอ้างอิงlunaryorn บน Reddit :

  • มันทำให้$HOMEไดเรกทอรีไม่กระจัดกระจายเพราะไฟล์ Emacs ทั้งหมดมีอยู่ในไดเรกทอรีเดียวอย่างเรียบร้อย ด้วยเหตุผลเดียวกันกับแพคเกจที่ทันสมัย Emacs เขียนแคชของพวกเขาประวัติศาสตร์ ฯลฯ ~/.emacs.d/เข้า

  • มันทำให้การควบคุมเวอร์ชันง่ายขึ้นโดยเฉพาะถ้าคุณแยก init.el เป็นไฟล์~/.emacs.dต่างๆ คุณก็สามารถกระทำinit.elเช่นทุกไฟล์อื่น ๆ และgit clone /my/emacs/config.git ~/.emacs.dระบบใหม่ช่วยให้คุณทั้งหมดของการกำหนดค่า Emacs $HOMEของคุณได้โดยไม่ต้องเชื่อมโยงไฟล์ลงใน


3
มันทำให้การควบคุมเวอร์ชันง่ายขึ้นได้อย่างไร คุณสามารถแยกไฟล์ init .emacs.dของคุณโดยไม่ต้องใช้
Gilles

3
มันไม่ได้ทำให้การควบคุมเวอร์ชันง่ายขึ้นหากคุณมีไฟล์. emacs เท่านั้น แต่ถ้าคุณมีไฟล์ emacs อื่น ๆ ใน. emacs.d ตัวอย่างเช่นcustomบันทึกไฟล์ลงใน. emacs.d และหากคุณเก็บ init.el ไว้ในไฟล์ emacs ที่ควบคุมเวอร์ชันทั้งหมดของคุณจะอยู่ในไดเรกทอรีเดียว
Ted Roden

4
โดยการกำหนดเวอร์ชัน. emacs.d / ไดเรกทอรีของคุณโดยสมบูรณ์คุณยังสามารถควบคุมเวอร์ชันของแพ็คเกจที่คุณติดตั้งผ่านทาง packages.el (ELPA, MELPA …) วิธีนี้ทำให้ง่ายต่อการแชร์การกำหนดค่าระหว่างคอมพิวเตอร์หลายเครื่องและเพื่อค้นหาว่ามีการนำการถดถอยมาใช้ในการกำหนดค่าของคุณอย่างไร (คุณติดตามการอ้างอิงของคุณ) ด้านที่ไม่ดีคือมันทำให้พื้นที่เก็บข้อมูลหนักมาก
tuxella

11
ระบบควบคุมเวอร์ชันไม่ได้มีเพียงไฟล์เดียว - พวกเขาต้องการสร้างโฟลเดอร์ ดังนั้นคุณรุ่นและเพิ่มเพียงของคุณ~/ .emacsแต่ตอนนี้คุณต้องให้แน่ใจว่าคุณไม่ได้กระทำไฟล์อื่น ๆ เพื่อให้คุณ .hgignore หรือ .gitignore ทุกไฟล์อื่น ~/ๆ แต่ตอนนี้คุณไม่สามารถติดตามไฟล์อื่น ๆ ใน~/เหมือนหรือ~/.bashrc ~/.bash_aliases
zck

ที่เกี่ยวข้อง: github.com/RichiH/vcsh
wchargin

37

ข้อดีอีกข้อหนึ่ง: หากทุกอย่างอยู่ใน.emacs.dนั้นคุณสามารถเก็บการกำหนดค่า Emacs ของคุณไว้บน Dropbox (หรือทางเลือก) และเชื่อมโยงการกำหนดค่าทั้งหมดเข้ากับโฮมไดเร็กตอรี่ของคุณ ทำให้การซิงค์ในคอมพิวเตอร์เป็นเรื่องเล็กน้อย


25

หากสิ่งที่คุณต้องการในการตั้งค่า Emacs ในแบบที่คุณชอบคือไฟล์ init มันจะไม่สร้างความแตกต่างหากเป็น~/.emacsหรือ ~/.emacs.d/init.elแต่มันก็เหมาะสมที่จะสร้างไดเรกทอรีทันทีที่คุณเริ่มแบ่งไฟล์ init ของคุณหรือเพิ่มการกำหนดค่าที่เกี่ยวข้องกับ Emacs ซึ่งเป็นไฟล์ Cask นอกจากนี้ยังเป็นสถานที่ที่คุณจะบันทึกไฟล์ด้วยคำจำกัดความย่อไฟล์สำหรับตัวเลือกที่กำหนดเอง ( M-x customize) และอื่น ๆ

~/.emacs.dให้ทุกอย่างเรียบร้อยในซุก


6

Emacs 27 จะแนะนำไฟล์ initialisation ใหม่early-init-fileภายใต้คือที่user-emacs-directory ~/.emacs.d/early-init.elดังนั้นผลประโยชน์ต่อไปเพื่อใช้~/.emacs.d/init.elแทน~/.emacsสำหรับuser-init-fileเป็นว่าอดีตจะวางไฟล์ initialisation ทั้งภายใต้หลังคาเดียวกันเพื่อความมั่นคง

จนกว่า Emacs 27 จะวางจำหน่ายคุณสามารถค้นหาเอกสารสำหรับคุณสมบัติใหม่นี้ได้ในไฟล์ต่อไปนี้ของแผนผังซอร์สของ Emacs:


2

ไม่แน่ใจว่าสิ่งนี้สร้างความแตกต่างในแง่ของความเร็วจริง ๆ หรือไม่ แต่คุณสามารถรวบรวมการตั้งค่าของคุณได้ง่ายขึ้นหากการกำหนดค่าของคุณอยู่ใน.emacs.d/init.el(เช่นสร้าง.emacs.d/init.elc)


1
โปรดทราบว่า~/.emacs.elยังเป็นชื่อไฟล์เริ่มต้นที่ถูกต้อง
phils

1

คุณใช้~/.emacs.d/init.elและ symlink ไฟล์~/.emacsนั้นในกรณีที่โปรแกรม / ปลั๊กอินอื่น ๆ คาดว่าจะหา. emacs

บนระบบ macOS หรือ GNU / Linux คำสั่งจะเป็น:

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

วิธีนี้คุณจะได้รับประโยชน์ทั้งหมดจาก VC ของ~/emacs.dโครงสร้างไดเรกทอรีของคุณและคุณจะสามารถใช้ชื่อที่สั้นลงเมื่อคุณต้องการแก้ไขไฟล์ init.el ผ่าน~/.emacsแทนที่จะพิมพ์~/emacs.d/init.el👍


อะไรคือ "โปรแกรม / ปลั๊กอินอื่น ๆ " ที่ "ลึกลับ" ซึ่งคาดว่าจะพบ. emacs " ฉันไม่คิดว่าเป็นเรื่องจริง
phils

1
ตัวอย่างหนึ่งอาจเป็น Quicklisp ถ้าคุณทำ (ql: add-to-init-file) มันจะมีค่าเริ่มต้นเป็น ~ /
.emacs

ช่างสงสัยจริงๆ ฉันจะบอกว่ากรณีดังกล่าวจะรับประกันรายงานข้อผิดพลาด - Emacs ได้สนับสนุนชื่อไฟล์ init หลากหลายเป็นเวลานานมากและลำดับความสำคัญได้รับการบันทึกไว้อย่างชัดเจนดังนั้นจึงไม่มีเหตุผลที่ดีที่โปรแกรมอื่น ๆ จะไม่ได้รับสิทธินั้น . ฉันไม่ได้คาดหวังตัวอย่างที่แท้จริงเลย :) ไชโย
phils
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.