7

我经常遇到以下流行的 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 会话,每个会话都有各自的配置/缓冲区?

4

3 回答 3

10

编辑:我已经将这种方法封装到我添加到EmacsWiki的 shell 脚本中。)

我倾向于使用$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. 然后,您可以启动 emacs用于在本地为该命令env设置环境变量:HOME

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

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

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

这种技术的缺点是 Emacs 不会看到你所有的其他点文件(因为它会在$HOME. 但如果您只是在试验,这不太可能是一个大问题,并且您始终可以符号链接或复制您需要的位。

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

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

于 2014-02-05T05:38:43.540 回答
9

你可以符号链接~/.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并更改符号链接

希望这可以帮助

于 2014-02-05T04:59:15.477 回答
5

我创建~/.emacs.1.d/init.el文件,并给它内容:

(setq user-emacs-directory "~/.emacs.1.d/")

然后,像这样启动 emacs emacs -q -l ~/.emacs.1.d/init.el,现在 emacs 使用了新的配置。

成功!!

  • -qis 表示跳过默认配置~/.emacs.d/init.el
  • -lis 表示加载新配置
于 2019-09-21T11:05:25.787 回答