如何以不同的配置启动emacs

问题描述 投票:0回答:5

我经常遇到以下流行的 emacs 版本:

目前我正在运行自定义配置,但我想尝试这些构建而不破坏我当前的

~/.emacs.d

这是我当前安装的一些背景:

我通过 Homebrew 安装了 Emacs,所以它位于这里:

/usr/local/Cellar/emacs/HEAD/Emacs.app
我当前的 emacs 版本是:
GNU Emacs 24.3.50.1 (i386-apple-darwin13.0.0, NS apple-appkit-1265.00)

基本上,这是我想知道的:

  1. 在这些构建以及我当前的自定义配置之间切换的最简单方法是什么?

  2. 鉴于我当前的设置,是否可以启动多个 emacs 会话,每个会话都有各自的配置/缓冲区?

emacs configuration homebrew emacs-prelude
5个回答
14
投票

我创建

~/.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
    表示加载新配置

11
投票

编辑:我已将这种方法包装到 shell 脚本中,并将其添加到 EmacsWiki 中。)

我倾向于使用

$HOME
环境变量:

  1. 首先将“发行版”(为了需要一个更好的术语)复制到目录的子目录

    .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
    
  2. 然后您可以使用

    env
    启动 emacs 为该命令在本地设置
    HOME
    环境变量:

    $ env HOME=$HOME/emacs/prelude emacs
    $ env HOME=$HOME/emacs/emacs-live emacs
    

它们不应该相互交互,因此您可以一起运行它们并拥有多个并排的 emacs 实例,每个实例使用不同的配置。

我看到graphene实际上是一个ELPA包,所以它没有

init.el
文件,需要通过包管理器安装;但您仍然可以使用相同的技术将其安装在单独的干净配置中:只需制作与其他目录结构类似的目录结构,然后创建一个包含石墨烯安装说明中的代码的 init.el 文件(例如
~/emacs/graphene/.emacs.d/init.el
),然后运行 emacs(例如
env HOME=$HOME/emacs/graphene emacs
),并完成剩余的安装说明。

此技术的缺点是 Emacs 不会看到所有其他点文件(因为它将查找

$HOME
),因此从 Emacs 内运行其他进程不一定能正常工作;但如果您只是进行试验,那么这不太可能是一个大问题,并且您始终可以符号链接或复制您需要的位。

您甚至可能更喜欢这种方式 - 好处是,如果您正在试用的发行版中的任何内容将文件写入主目录,它不会破坏您的真实文件。

将 Emacs 升级到新版本时(如果您可以同时运行旧版本和新版本),这也可能是一种有用的方法,因为您可以设置现有配置的副本以与新 Emacs 一起使用,直到您确信一切正常,您可以编辑新配置,而无需担心破坏现有配置的风险。或者翻转过来,将 original 配置保留在新/备用位置,以防您需要它作为备份。


9
投票

你可以符号链接

~/.emacs.d
,这就是我所做的

1) 尝试保持我的 emacs 配置

~/.emacs.d
导向,即所有配置文件都应位于该文件夹中。例如,我使用
workgroups2
,默认情况下它将工作组配置存储在
~/.emacs_workgroups
中,但我已将其配置为将配置存储在
~/.emacs.d/workgroups
中,因此我的整个 emacs 配置仅位于一个文件夹中。

2)然后我有一个

~/emacs_configs
文件夹,其中包含所有配置 folders (基本上是一个带有 init.el 和其余配置的文件夹),所以我的个人配置文件夹将是
~/emacs_configs/iqbal
,前奏发行版将是在
~/emacs_configs/prelude

3)最后我将

~/.emacs.d
符号链接到我实际想要使用的配置,例如。要使用我的配置,我会做
ln -s ~/emacs_configs/iqbal .emacs.d
。如果您想尝试某些配置,只需将配置文件夹复制到
~/emacs_configs/whatever_name
并更改符号链接

希望这有帮助


0
投票

您可以使用 chemacs2 来完成此操作。这是 chemacs2 的主要(唯一?)用例。


0
投票

正如在其他地方回答的那样

在 Emacs 29+ 中,使用标志

user-emacs-directory
设置
--init-directory

© www.soinside.com 2019 - 2024. All rights reserved.