如何启动具有不同配置的emacs

时间:2014-02-05 03:25:07

标签: emacs configuration homebrew emacs-prelude

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

3 个答案:

答案 0 :(得分:8)

您可以符号链接~/.emacs.d,这就是我的工作

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

2)然后我有一个~/emacs_configs文件夹,其中所有config 文件夹(基本上是一个带有init.el和其他配置的文件夹)都是实时的,所以我的个人配置文件夹将是~/emacs_configs/iqbal,前奏发行版将位于~/emacs_configs/prelude

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

希望这有帮助

答案 1 :(得分:7)

编辑:我已将此方法包装到我已添加到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. 然后,您可以使用env启动emacs,为该命令在本地设置HOME环境变量:

    $ env HOME=$HOME/emacs/prelude emacs
    $ env HOME=$HOME/emacs/emacs-live emacs
    
  3. 它们不应该相互交互,因此您可以一起运行它们并拥有多个并排的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直到您确信一切正常,并且您可以编辑新配置而不会有破坏现有配置的风险。或者翻转它,而是将原始配置保留在新/备用位置,以防您需要它作为备份。

答案 2 :(得分:1)

我创建~/.emacs.1.d/init.el文件,并为其提供内容:

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

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

成功!

  • -q意味着跳过默认配置~/.emacs.d/init.el
  • -l是指加载新配置