Чи є якісь переваги використання ~ / .emacs.d / init.el замість ~ / .emacs?


108

Я зазвичай використовую ~/.emacsсвій конфігураційний файл, але я помітив інших, що використовують ~/.emacs.d/init.el. Чи є переваги в init.elрозташуванні? Якісь недоліки?


4
Emacs (або принаймні деякі версії emacs) записують матеріали на .emacs автоматично.
Vivi

4
@Vivi Якщо ви не говорите про дуже старі версії, Emacs записує речі user-init-file. Це буде, .emacsякщо у вас вже було таке .emacs, і init.elякщо ви використовували його замість цього.
Радон Росборо

Люди орієнтувались на переваги ~/.emacs.d/init.elнехтування недоліками. Я відповім на цю частину: вона зовсім не має недоліків!
Омар

Тангенціально, починаючи з версії реліз 27.1 Emacs віддадуть перевагу конфігураційний шлях XDG ~/.config/emacs/більш ~/.emacs.d/. IIUC, якщо перший існує , останні не будуть розглянуті.
філс

Відповіді:


103

Так, є. Цитуючи місячник на 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.
Жиль

3
Це не спрощує керування версіями, якщо у вас є лише файл .emacs, але якщо у вас є інші файли emacs у .emacs.d, це робить. Наприклад, customзберігає файли у .emacs.d, а якщо ви зберігаєте init.el у всіх своїх файлах emacs, що контролюються вашою версією, знаходяться в одному каталозі.
Тед Роден

4
Повністю оновлюючи свій .emacs.d / каталог, ви також можете тримати під контролем версії пакунки, встановлені через пакети.el (ELPA, MELPA…). Це полегшує обмін конфігурацією між декількома комп'ютерами та пошук місця введення регресії у вашу конфігурацію (ви відстежуєте свої залежності). Погана сторона полягає в тому, що він робить досить важке сховище.
tuxella

11
Системи контролю версій не мають лише одного файлу - вони хочуть версію папки. Отже, ви версія ~/та додайте лише свою .emacs. Але тепер ви повинні переконатися, що ви не вводите жодних інших файлів, тому ви .hgignore або .gitignore кожен інший файл у ~/. Але тепер ви не можете відслідковувати жодні інші файли ~/, наприклад, ~/.bashrcабо ~/.bash_aliases.
zck

Пов'язано: github.com/RichiH/vcsh
wchargin

37

Ще одна додаткова перевага: якщо все є в наявності .emacs.d, ви можете зберегти конфігурацію Emacs на Dropbox (або альтернативу) і позначити всю конфігурацію з вашим домашнім каталогом. Це робить синхронізацію на комп’ютерах дрібницею.


25

Якщо все , що вам потрібно налаштувати Emacs так , як вам подобається це файл ініціалізації, він не робить різниці , якщо це ~/.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замість ~/.emacsfor user-init-fileє те, що перший розмістить обидва файли ініціалізації під одним дахом, для послідовності.

Поки Emacs 27 не буде випущений, ви можете знайти документацію для цієї нової функції в наступних файлах дерева джерел Emacs:


2

Не впевнений, чи справді це має значення в швидкості, але ви можете байтом скласти налаштування простіше, якщо ваша конфігурація знаходиться .emacs.d/init.el(тобто створюється .emacs.d/init.elc)


1
Зауважте, що ~/.emacs.elце також дійсне ім'я файлу init.
phils

1

Ви використовуєте ~/.emacs.d/init.elі просто посилаєте цей файл на ~/.emacs, на випадок, якщо деякі інші програми / плагіни очікують знайти .emacs.

У системі macOS або GNU / Linux командою було б:

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

Таким чином ви отримуєте всі переваги VC структури вашої ~/emacs.dдиректорії, і ви зможете використовувати коротше ім’я, коли вам потрібно буде редагувати файл init.el, ~/.emacsа не вводити ~/emacs.d/init.el👍


Що це за загадкові "інші програми / плагіни", які "очікують знайти .emacs"? Я не думаю, що це справжнє занепокоєння.
філс

1
Одним із прикладів може бути Quicklisp, якщо ви робите (ql: add-to-init-файл), він за замовчуванням до ~ / .emacs
cseder

Як цікаво. Я б сказав, що будь-які подібні випадки вимагають звітів про помилки - Emacs підтримує різноманітні імена файлів init надзвичайно довго, а послідовність пріоритетів чітко задокументована, тому немає жодних вагомих причин, щоб інші програми не могли отримати це право . Я взагалі не очікував фактичного прикладу :) Привіт.
філс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.