【问题标题】:How to start up emacs with different configurations如何使用不同的配置启动 emacs
【发布时间】:2014-03-01 08:10:22
【问题描述】:

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

【问题讨论】:

  • 听起来你已经超越了它们——是时候构建你自己的了:stackoverflow.com/questions/21241967/… 通过 Macports 安装 Bazaar 并安装 Apple 开发人员工具,并处理如果你得到的任何可能丢失的东西尝试构建时出现错误消息。只是第一次很可怕,一旦你拥有了构建自己的 Emacs 所需的工具,你就再也回不去了。或者,只需使用emacsformacosx.com,如果您不打算自己构建,则忘记所有其他内容。
  • 在库方面,就像注释掉你现在不想使用的任何东西然后重新启动 Emacs 一样简单——例如,在你的初始化文件中注释掉 (require 'prelude...——例如,.emacsinit.el

标签: emacs configuration homebrew emacs-prelude


【解决方案1】:

编辑:我已将此方法封装到一个 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 配置保留在新的/备用位置,以备不时之需。

【讨论】:

  • 感谢您的回复。使用这种方法,如何在发行版之间切换?是否像将我的 $HOME 变量改回原来的值一样简单?
  • 我喜欢这个。从命令行创建独特的 emacs 会话的能力正是我正在寻找的解决方案。
【解决方案2】:

你可以符号链接~/.emacs.d,我就是这样做的

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

2) 然后我有一个 ~/emacs_configs 文件夹,所有配置 文件夹 (基本上是一个带有 init.el 和其余配置的文件夹)都在其中,所以我的个人配置文件夹将是 @987654327 @,前奏分布将在~/emacs_configs/prelude

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

希望对你有帮助

【讨论】:

  • 这正是我所做的,一直到 ~/emacs_configs 位置。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多