- Когда мы добавляем все больше и больше строк
~/.emacs.d/init.el
для различных целей (для режима python, для emacs-eclim, для ...), файл становится длинным и менее читаемым. Есть ли способ помочь организовать его содержание? Мой нынешний
~/.emacs.d
выглядит так$ ls * init.el auto-save-list: elisp: python-mode.el-6.1.3 elpa: archives auctex-readme.txt s-20140910.334 auctex-11.87.7 emacs-eclim-20140809.207 eshell: history
python-mode.el-6.1.3
был установлен вручную, в то время какemacs-eclim-20140809.207
был установленelpa
, и я не уверен на 100%, что другие вещи подelpa/
былиelpa
. Как я могу организовать содержание~/.emacs.d/
?
28
.emacs
и.wl
не достаточно длинные.Классический способ сделать это - разделить ваши
.emacs
файлы на отдельные. Например, вы можете переместить все свои веб-материалы~/.emacs.d/web-config.el
и затем загрузить их внутрьinit.el
:Если вы хотите, чтобы ваша работа
~/.emacs.d
была более организованной, вы также можете переместить эти файлы конфигурации в их собственный каталог:Теперь вы можете просто перейти к соответствующему файлу при внесении изменений в вашу конфигурацию.
Единственное, чего здесь не хватает - это переменные, установленные через систему настройки. Они все еще будут в вашем главном init.el. По-видимому, есть небольшая утилита под названием init split, которая позволяет вам создавать правила, в которых указываются настройки, но я никогда не использовал ее сам. Кроме того, система «Настройка» может быть настроена на использование отдельного файла для своих настроек. Задайте
custom-file
переменную, чтобы указать, куда следует читать и записывать настройки «настройки» .Что касается самого каталога, я всегда был доволен макетом по умолчанию. Основным изменением, которое я сделал, было создание каталога для всех моих собственных пользовательских пакетов и библиотек, которые не управляются
package.el
. Это дает один дом для моего пользовательского elisp, который не связан с конфигурацией.источник
elpa
управляетсяelpa
? Могу ли я переместить их в другое место?custom-file
переменную. ИсточникЕсли вам нравится Org-режим, вы можете использовать его, чтобы организовать,
.emacs
не разбивая его. В моей текущей конфигурации мой.emacs
файл просто загружает файл init.org, который находится под~/.emacs.d/init/init.org
Используя разные файлы, вам нужно
grep
вместо простогоC-s
что-то искать и так далее. Кроме того, проще добавить несколько уровней в вашу организацию.источник
org-babel-load-file
. Милая! (Примеры: github.com/vermiculus/dotfiles/blob/… , github.com/larstvei/dot-emacs )Просто перенесите фрагменты кода из
init.el
отдельных файлов (библиотек), которые вы потомrequire
. (Используйтеprovide
в библиотекахrequire
d.) Поместите эти файлы куда хотите, и обновитеload-path
соответственно.источник
~/.emacs.d/
? Вы не предлагают спецификации , что вы хотите. Вы не ограничены иметь все в одном каталоге. Вы можете положить вещи в любом месте вы хотите, и изменитьload-path
соответствующим образом . Если какая - то программа / инструмент только ставит вещи в~/.emacs.d/
(то есть, если вы не можете сказать ему, куда поместить вещи), затем переместите его туда, куда вы хотите, после того, как эта программа / инструмент будет завершен(require 'foobar)
это пример использованияrequire
.(add-to-list 'load-path "/my/lisp/dir")
пример модификацииload-path
.(provide 'foobar)
это пример использованияprovide
.init.el
можете загружать библиотеки, расположенные где угодно , а не только внутри~/.emacs.d/
.Я использую предложение от targzeta, найденное в каталоге Emacs Wiki: Load .
В основном у меня есть ~ / .emacs.d / load-directory.el:
Затем я просто помещаю отдельные файлы в мой ~ / .emacs.d / config:
И, наконец, у меня есть это в моем ~ / .emacs.d / init.el:
источник
Очевидно, есть несколько способов снять кожу с этой конкретной кошки. Мой текущий фаворит - использовать
outline-minor-mode
с outshine . Выдержка:Обратите внимание, что вам нужно получить затмение из вашего любимого хранилища пакетов.
источник
Я использую следующую структуру для отслеживания пакетов и файлов
Затем я использую
use-package
для управления, какие пакеты загружены и какие настройки установлены для каждого пакета. Только в большинстве случаевhack
иelpa
требуют обновления, остальные папки часто предназначены для одноразовых пакетов, которые я хочу протестировать или использовать кратко, но не нужно загружать (даже праздно).custom.el
предназначен для настройки параметров, которые я предпочитаю не использовать (и не версию, даже если я использую).defaults.el
предназначен для общей конфигурации (строка меню, шрифт, кодировка и т. д.), которая затем может быть перезаписана в любом файле .el,user-config/
чтобы обеспечить систему, которая будет работать, как я ожидаю, но ее можно настроить в соответствии с окружающей средой.Ранее я пытался сохранить
functions
,macros
,advice
в отдельных упаковках , чтобы обеспечить разграничение между содержанием, но натолкнулся на определение / требуют вопросы , поэтому поставили их обратно вinit.el
. В конечном итоге они могут быть возвращены в~/.emacs.d/lisp/
.Я стараюсь поддерживать
init.el
порядок, сортирую контент по функциям и целям, чтобы найти его снова было несложно. У меня был монолитныйinit.el
файл, и я продолжал добавлять новый контент в конце (или там, где я думал, что он мог бы подойти), и в конечном итоге не знал, что я добавил или где я его добавил, когда я пошел искать его (и иногда поиск с помощьюisearch
не помог, так как я не мог вспомнить, как я назвал вещи в то время).источник
Во всех существующих ответах приведены рекомендации по организации созданных вручную файлов, например,
init.el
друзей. Не менее важна организация всех автоматически создаваемых файлов из различных пакетов, и для этого пакетno-littering
превосходен.источник
я добавил
в emacs-lisp-mode-hook. Затем добавьте в файл разделы «Ясниппет», «Упаковка», «Режим Java» и т. Д. Это хорошо работает для моих 1000 строк кода (включая комментарии).
РЕДАКТИРОВАТЬ: Наконец я переключаюсь между разделами с helm-imenu. На самом деле руль автоматически подключается к обычной функции имен, так что все, что мне нужно, это
источник
Я разделил мой относительно маленький
.emacs
файл на три части:emacs-custom.el для настроек, вырывающих много громоздких и бесполезных данных; файл автоматически перезаписывается, не затрагивая основной файл .emacs , предотвращая ложные изменения.
lg-lib.el для кода, а не для конфигурации: загрузка моих собственных библиотек из нестандартных исходных расположений, а не из каталога пакетов и определение различных функций (в основном копируются и взламываются при отсутствии подходящего пакета); это еще одно значительное сокращение числа строк .emacs .
Основной файл .emacs : без громоздкого кода и громоздких переменных настройки, он содержит
require
вызовы для пакетов, переменные, которые не являются частью системы настройки, и различные вызовы функций для загрузки и инициализации пакетов. Я «организовал» его, тщательно собрав все строки, относящиеся к одному и тому же пакету или функции, и дополнительно отделив загрузку пакета и параметры, связанные с пакетом, от «основной» функциональности. Довольно представительный отрывок:Эти разделы крошечные, но они останутся управляемыми с большим количеством строк конфигурации для каждого пакета.
источник
Следуйте настройке мастера Emacs, например, https://github.com/purcell/emacs.d
Например, в отношении того, как организовать вручную установленные пакеты и пакеты, установленные из ELPA, в настройках Стивена Пурселла есть
Зачем следовать за мастером? Основной момент моих «Основных emacs за один год» заключается в том, что новички могут эффективно избежать накладных расходов на установку и «ошибок».
Я понимаю, что многие люди не согласны со мной, но вот мой случай (подробно в моей статье ):
Я начал использовать Emacs, используя уважаемую стабильную (5 лет в разработке) конфигурацию Purcell ( 1403 звезды GitHub по состоянию на ноябрь 2014 года!). Несмотря на это, у меня все еще было много проблем . Стив Перселл помог мне решить все эти проблемы. (Я фактически стал его падаваном более года.) Используя его настройки и используя проблемы его репо для сообщения о проблемах, и используя его опыт, я избегал тратить много времени. Даже сегодня я все еще наблюдаю, как многие люди используют
git submodule
сторонние плагины. И Стив, и я прекратили использоватьgit submodule
это, потому что это может быть такой PITA .Но если вы очень уверены в своих навыках или предпочитаете самообучаться, это не путь для вас.
источник
help-gnu-emacs@gnu.org
, иwww.emacswiki.org
, иemacs-devel@gnu.org
, и дажеdebbugs.gnu.org
. Тем не менее, нет ничего плохого в том, чтобы делиться своим файлом инициализации, чтобы служить другим в качестве пищи для размышлений. Для новичков совет не начинать таким образом; Совет не для людей, чтобы не поделиться своими собственными подходами и советами при запуске.Инновационный и простой способ очистить вашу
.emacs.d
папку - использоватьorg-mode
и обрисовывать все, используя исходные блоки. Затем в вашем.emacs
файле укажите на свойconfig.org
.Замечательный ресурс об этом - Гарри Шварц. У него есть видео на YouTube, которое затрагивает, и пост в блоге, который объясняет детали . Я был в состоянии следовать за ним как за emacs noob и получить все настройки. Работает как шарм. 1 файл для всего моего
init
.источник