Как запустить emacs с разными конфигурациями
Я часто сталкиваюсь со следующими популярными сборками Emacs:
В настоящее время я использую пользовательскую конфигурацию, но я бы хотел поэкспериментировать с этими сборками, не забивая мою текущую ~/.emacs.d
,
Вот некоторая предыстория моей текущей установки:
Я установил Emacs через Homebrew, поэтому он находится здесь: /usr/local/Cellar/emacs/HEAD/Emacs.app
Моя текущая версия Emacs: GNU Emacs 24.3.50.1 (i386-apple-darwin13.0.0, NS apple-appkit-1265.00)
Вот что я хотел бы знать:
Какой самый простой способ переключения между этими сборками, а также моей текущей пользовательской конфигурацией?
Учитывая мои текущие настройки, возможно ли запустить несколько сессий Emacs, каждый со своей конфигурацией / буферами?
4 ответа
(Изменить: я включил этот подход в сценарий оболочки, который я добавил в EmacsWiki.)
Я был бы склонен использовать $HOME
переменная окружения:
Сначала скопируйте "дистрибутив" (если нет лучшего термина) в подкаталог
.emacs.d
каталога, который будет служить заменой$HOME
для этого распределения. т.е./path/to/(distribution)/.emacs.d
:$ git clone https://github.com/bbatsov/prelude.git ~/emacs/prelude/.emacs.d $ git clone https://github.com/overtone/emacs-live.git ~/emacs/emacs-live/.emacs.d
Тогда вы можете запустить Emacs, используя
env
установитьHOME
переменная окружения локально для этой команды:$ env HOME=$HOME/emacs/prelude emacs $ env HOME=$HOME/emacs/emacs-live emacs
Они не должны взаимодействовать друг с другом, поэтому вы можете запускать их вместе и иметь несколько параллельных экземпляров emacs, каждый из которых использует свою конфигурацию.
Я вижу, что графен на самом деле является пакетом ELPA, поэтому он не имеет init.el
файл и должен быть установлен через менеджер пакетов; но вы все равно можете использовать тот же метод для установки его в отдельной чистой конфигурации: просто создайте структуру каталогов, аналогичную другим, затем создайте файл init.el (например, ~/emacs/graphene/.emacs.d/init.el
) содержащий код из инструкции по установке графена, затем запустите emacs (например, env HOME=$HOME/emacs/graphene emacs
) и завершите оставшуюся часть инструкции по установке.
Недостатком этой техники является то, что Emacs не увидит все остальные ваши точечные файлы (потому что он будет искать в $HOME
), и поэтому запуск других процессов из Emacs не обязательно будет работать как обычно; но это вряд ли будет большой проблемой, если вы просто экспериментируете, и вы всегда можете использовать символическую ссылку или скопировать нужные биты.
Вы можете даже предпочесть это таким образом - преимущество в том, что если что-то в пробном дистрибутиве записывает файлы в домашний каталог, оно не будет загромождать ваши настоящие файлы.
Это также может быть полезным подходом при обновлении Emacs до нового выпуска (если вы можете запускать как старые, так и новые версии одновременно), так как вы можете настроить копию существующей конфигурации для использования с новым Emacs до тех пор, пока вы не ' Убедитесь, что все работает, и вы можете редактировать новую конфигурацию, не рискуя сломать существующую. Или переверните это, и вместо этого сохраните исходную конфигурацию в новом / альтернативном месте, на случай, если она понадобится вам в качестве резервной копии.
Я создаю ~/.emacs.1.d/init.el
файл и дайте ему содержимое:
(setq user-emacs-directory "~/.emacs.1.d/")
затем запустите emacs вот так emacs -q -l ~/.emacs.1.d/init.el
, теперь emacs использует новую конфигурацию.
успех!!
-q
означает пропустить настройку по умолчанию~/.emacs.d/init.el
-l
означает загрузку новой конфигурации
Вы можете символическую ссылку ~/.emacs.d
, вот что я делаю
1) Попробуй сохранить мою конфигурацию emacs ~/.emacs.d
ориентированные, т.е. все файлы конфигурации должны находиться в этой папке. Например я использую workgroups2
по умолчанию он сохраняет конфигурацию рабочей группы в ~/.emacs_workgroups
но я настроил его для сохранения конфигурации в ~/.emacs.d/workgroups
, так что вся моя конфигурация emacs находится в одной папке.
2) Тогда у меня есть ~/emacs_configs
папка, в которой находятся все папки конфигурации (в основном это папка с init.el и остальной частью конфигурации), поэтому моя личная папка конфигурации будет ~/emacs_configs/iqbal
будет распространяться прелюдия ~/emacs_configs/prelude
3) Тогда наконец я символическую ссылку ~/.emacs.d
к конфигурации, которую я действительно хочу использовать, например. использовать мою конфигурацию я сделаю ln -s ~/emacs_configs/iqbal .emacs.d
, Если вы хотите попробовать некоторую конфигурацию, просто скопируйте папку конфигурации в ~/emacs_configs/whatever_name
и изменить символическую ссылку
Надеюсь это поможет
Вы можете сделать это с помощью chemacs2. Это основной (единственный?) вариант использования chemacs2.