Есть ли преимущества использования ~ / .emacs.d / init.el вместо ~ / .emacs?
108
Я обычно использовал ~/.emacsдля моего файла конфигурации, но я заметил, что другие используют ~/.emacs.d/init.el. Есть ли преимущества для init.elместоположения? Есть ли недостатки?
Emacs (или, по крайней мере, некоторые версии emacs) автоматически записывают данные в .emacs.
Виви
4
@Vivi Если вы не говорите об очень старых версиях, Emacs записывает вещи в user-init-file. Это будет, .emacsесли у вас уже есть .emacs, и init.elесли вы использовали это вместо.
Радон Росборо
Люди сосредоточились на преимуществах ~/.emacs.d/init.elпренебрежения недостатками. Я отвечу на это: у него нет недостатков!
Омар
Тангенциально, начиная с версии релиз 27.1 Emacs предпочтут конфигурационный путь XDG ~/.config/emacs/более ~/.emacs.d/. IIUC, если первый существует , последний не будет рассматриваться.
Он сохраняет $HOMEкаталог в беспорядке, потому что все файлы Emacs аккуратно содержатся в одном каталоге. По той же причине все современные пакеты Emacs записывают свои кэши, истории и т ~/.emacs.d/. Д. В.
Это облегчает контроль версий, особенно если вы разделяете свой init.el на разные файлы в ~/.emacs.d. Вы можете просто зафиксировать, init.elкак любой другой файл, и git clone /my/emacs/config.git ~/.emacs.dв новой системе вы получите всю свою конфигурацию Emacs, без необходимости связывать файл с $HOME.
Как это облегчает контроль версий? Вы можете разделить ваш файл инициализации без использования .emacs.d.
Жиль
3
Это не делает управление версиями проще, если у вас есть только файл .emacs, но если у вас есть другие файлы emacs в .emacs.d, это так. Например, customсохраняет файлы в .emacs.d, и если вы сохраняете init.el в них, все ваши файлы emacs, контролируемые версиями, находятся в одном каталоге.
Тед Роден
4
Полностью контролируя версию вашего каталога .emacs.d /, вы также можете контролировать версии пакетов, которые вы устанавливаете через packages.el (ELPA, MELPA…). Это облегчает разделение вашей конфигурации между несколькими компьютерами и позволяет определить, где в вашей конфигурации был введен регресс (вы отслеживаете свои зависимости). Плохая сторона в том, что он делает довольно тяжелое хранилище.
смокинг
11
Системы контроля версий не создают версии только одного файла - они хотят создать версию папки. Так что вы версия ~/, и добавьте только свою .emacs. Но теперь вам нужно убедиться, что вы не фиксируете никаких других файлов, так что вы .hgignore или .gitignore все остальные файлы в ~/. Но теперь вы не можете отслеживать другие файлы ~/, например, ~/.bashrcили ~/.bash_aliases.
Еще одно преимущество: если все в порядке .emacs.d, вы можете сохранить свою конфигурацию Emacs в Dropbox (или в качестве альтернативы) и поставить символическую ссылку всей конфигурации в свой домашний каталог. Это делает синхронизацию между компьютерами тривиальной.
Если все, что вам нужно для настройки Emacs так, как вам нравится, это файл инициализации, это не имеет значения, если это ~/.emacsили ~/.emacs.d/init.el. Но имеет смысл создать каталог, как только вы начнете разделять файл инициализации или добавляете конфиги, связанные с Emacs, например, файл Cask. Кроме того, это место, где вы сохраните файл с определениями сокращений, файл для пользовательских опций ( M-x customize) и т. Д.
Emacs 27 будет ввести новый файл инициализации early-init-fileпод user-emacs-directory, а именно в ~/.emacs.d/early-init.el. Таким образом, дальнейшее преимущество использования ~/.emacs.d/init.elвместо ~/.emacsfor user-init-fileзаключается в том, что первый будет помещать оба файла инициализации под одной крышей для согласованности.
До выпуска Emacs 27 документацию по этой новой функции можно найти в следующих файлах исходного дерева Emacs:
Не уверен, что это действительно имеет значение с точки зрения скорости, но вы можете легче скомпилировать ваши настройки, если ваша конфигурация находится в .emacs.d/init.el(то есть, создать .emacs.d/init.elc)
Обратите внимание, что ~/.emacs.elэто также допустимое имя файла инициализации.
Филс
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-file), по умолчанию это ~ / .emacs
cseder
Как любопытно. Я бы сказал, что любые такие случаи будут оправдывать сообщения об ошибках - Emacs в течение очень долгого времени поддерживает различные имена файлов инициализации, а последовательность приоритетов четко задокументирована, поэтому у других программ нет веских причин не понимать это правильно. , Я не ожидал фактического примера вообще :) Приветствия.
user-init-file
. Это будет,.emacs
если у вас уже есть.emacs
, иinit.el
если вы использовали это вместо.~/.emacs.d/init.el
пренебрежения недостатками. Я отвечу на это: у него нет недостатков!~/.config/emacs/
более~/.emacs.d/
. IIUC, если первый существует , последний не будет рассматриваться.Ответы:
Да это так. Цитирование lunaryorn на Reddit :
источник
.emacs.d
.custom
сохраняет файлы в .emacs.d, и если вы сохраняете init.el в них, все ваши файлы emacs, контролируемые версиями, находятся в одном каталоге.~/
, и добавьте только свою.emacs
. Но теперь вам нужно убедиться, что вы не фиксируете никаких других файлов, так что вы .hgignore или .gitignore все остальные файлы в~/
. Но теперь вы не можете отслеживать другие файлы~/
, например,~/.bashrc
или~/.bash_aliases
.Еще одно преимущество: если все в порядке
.emacs.d
, вы можете сохранить свою конфигурацию Emacs в Dropbox (или в качестве альтернативы) и поставить символическую ссылку всей конфигурации в свой домашний каталог. Это делает синхронизацию между компьютерами тривиальной.источник
Если все, что вам нужно для настройки Emacs так, как вам нравится, это файл инициализации, это не имеет значения, если это
~/.emacs
или~/.emacs.d/init.el
. Но имеет смысл создать каталог, как только вы начнете разделять файл инициализации или добавляете конфиги, связанные с Emacs, например, файл Cask. Кроме того, это место, где вы сохраните файл с определениями сокращений, файл для пользовательских опций (M-x customize
) и т. Д.Держите все аккуратно заправленным
~/.emacs.d
.источник
Emacs 27 будет ввести новый файл инициализации
early-init-file
подuser-emacs-directory
, а именно в~/.emacs.d/early-init.el
. Таким образом, дальнейшее преимущество использования~/.emacs.d/init.el
вместо~/.emacs
foruser-init-file
заключается в том, что первый будет помещать оба файла инициализации под одной крышей для согласованности.До выпуска Emacs 27 документацию по этой новой функции можно найти в следующих файлах исходного дерева Emacs:
etc/NEWS
doc/emacs/custom.texi
узел(emacs) Early Init File
источник
Не уверен, что это действительно имеет значение с точки зрения скорости, но вы можете легче скомпилировать ваши настройки, если ваша конфигурация находится в
.emacs.d/init.el
(то есть, создать.emacs.d/init.elc
)источник
~/.emacs.el
это также допустимое имя файла инициализации.Вы используете
~/.emacs.d/init.el
и просто символическую ссылку на этот файл~/.emacs
, на случай, если некоторые другие программы / плагины ожидают найти .emacs.В системе MacOS или GNU / Linux команда будет выглядеть так:
Таким образом, вы получите все преимущества VC вашей
~/emacs.d
структуры каталогов и сможете использовать более короткое имя, когда вам нужно будет отредактировать файл init.el~/.emacs
вместо того, чтобы вводить~/emacs.d/init.el
👍источник