У меня есть emacs24 и emacs25 на моей машине. Я хочу использовать spacemacs с emacs24 и оставить emacs25... ну... как emacs. Когда я устанавливаю spacemacs, мои файлы ~/.emacs и ~/.emacs.d меняются. Оба emacs начинают использовать spacemacs, чего я не хочу. Есть ли способ иметь spacemacs и emacs одновременно. Пытался найти решение и нашел решение для хранения отдельных файлов конфигурации. Но как заставить emacs искать определенный файл конфигурации. Кстати, если вы еще не догадались... я нуб.
Имейте два emacs. Хотите использовать spacemacs с одним и оставить другой нетронутым
Ответы (3)
На одном уровне это довольно легко сделать. Однако, в другом, могут быть некоторые сложности, в зависимости от того, что вы действительно хотите сделать.
Emacs поддерживает ключ командной строки -l, чтобы сообщить emacs, где найти файл конфигурации. Таким образом, с очень простой точки зрения вы можете просто создать два скрипта-оболочки my-spacemacs.sh и my-plainemacs.sh, и внутри них скрипты будут вызывать emacs с определенным параметром -l /path/to/config. Вы можете передать $*, чтобы получить другие аргументы командной строки, если хотите.
Потенциальная проблема с этим подходом заключается в том, что emacs по-прежнему будет использовать .emacs.d для хранения всех видов другой информации, включая, возможно, пакеты elpa, и это может вызвать проблемы. Чтобы быть в большей безопасности, лучше хранить вещи отдельно друг от друга.
Если вам не нужно запускать обе версии одновременно, простое решение состоит в том, чтобы разделить каталоги, такие как ~/.spacemacs-emacs.d и ~/plain-emacs.d, а затем создать символическую ссылку с именем .emacs.d, который указывает на любую версию, которую вы хотите запустить. Две основные проблемы с этим подходом заключаются в том, что вам нужно сбрасывать символическую ссылку всякий раз, когда вы хотите изменить варианты emacs, и это не сработает, если вы хотите запустить обе версии одновременно.
Я думаю, нам действительно нужно знать о вашем фактическом сценарии использования — зачем вам две разные конфигурации? Знание этого может помочь определить лучший подход.
Например, я использую режим org и babel для управления конфигурацией emacs. У меня есть несколько разных версий и простой скрипт, который я могу запустить для создания любого файла init.el, который я хочу, из разных файлов org. У меня есть файл Minimum.org, который имеет самую минимальную конфигурацию emacs, которую я могу обнажить, и у меня есть мой стандартный init.org, который генерирует мой рабочий init.el, а затем у меня есть Experiment.org, который используется для создания init.el файл, который я использую для экспериментов с новыми конфигурациями или пакетами. Переключение конфигураций тривиально, но мне никогда не нужно запускать две разные конфигурации одновременно.
Мне часто нравится проверять некоторые другие предварительно подготовленные настройки emacs, такие как spacemacs, prelude и т. д. Для них я просто беру текущую версию git и использую символическую ссылку, чтобы указать .emacs.d на корень для git репо, с которым я хочу поэкспериментировать.
вы также можете использовать следующий подход:
создайте каталог ~/spacemacs. извлеките/скопируйте файл spacemacs .emacs.d в ~/spacemacs (чтобы это был ~/spacemacs/.emacs.d). создайте ссылку на рабочий стол под названием Spacemacs (или пункт меню) и введите следующую команду:
HOME=$HOME/spacemacs emacs
Вы также можете запустить spacemacs из оболочки с помощью этой команды. Таким образом, вы можете одновременно запускать vanilla emacs и spacemacs, каждый со своим собственным каталогом конфигурации и репозиторием elpa. Единственным недостатком может быть то, что вам нужно изменить уровень каталога вверх, чтобы добраться до вашего реального домашнего каталога, а не «поддельного», установленного через переменную. Кстати, именно так я запускаю несколько версий и конфигураций emacs по мере необходимости для разных вещей.
Кажется, лучшим решением является использование chemacs: https://github.com/plexus/chemacs