emacs - 如何使用不同的配置启动 emacs

标签 emacs configuration homebrew emacs-prelude

我经常遇到以下流行的 emacs 构建:

  • graphene
  • prelude
  • emacs-live

  • 目前我正在运行一个自定义配置,但我想在不破坏我当前的 ~/.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)
    基本上,这就是我想知道的:
  • 在这些构建以及我当前的自定义配置之间切换的最简单方法是什么?
  • 鉴于我当前的设置,是否可以启动多个 emacs session ,每个 session 都有各自的配置/缓冲区?
  • 最佳答案

    ( 编辑: 我已经将这种方法封装到一个 shell 脚本中,我已经添加到了 EmacsWiki 中。)

    我倾向于使用 $HOME环境变量:

  • 首先将'distribution'(为了更好的术语)复制到子目录.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
    
  • 然后你可以使用 env 启动 emacs设置HOME该命令的本地环境变量:
    $ env HOME=$HOME/emacs/prelude emacs
    $ env HOME=$HOME/emacs/emacs-live emacs
    

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

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

    这种技术的缺点是 Emacs 不会看到所有其他点文件(因为它会在 $HOME 中查找),因此从 Emacs 中运行其他进程不一定能正常工作;但如果您只是在试验,这不太可能是一个大问题,并且您始终可以符号链接(symbolic link)或复制您需要的位。

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

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

    关于emacs - 如何使用不同的配置启动 emacs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21568042/

    相关文章:

    Emacs 和 ispell : error loading german8

    c# - PRISM 模块 app.config 配置设置

    .net - 如何更改 "Generate Method Stub"以在 VS 中抛出 NotImplementedException?

    c++ - 在 Mac 上使用 Homebrew 安装特定版本的 Boost

    emacs 流浪模式不尊重远程目录中的 .clang 格式

    emacs - Elisp - 在交互功能中避免提示

    c++ - 有没有办法在 Emacs 中同时启用 Objective-C 模式和 C++ 模式?

    configuration - 木兰CMS : Multivalue field containing a composite field issue

    macos - 酒窖的 Homebrew 大小

    node.js - brew安装 Node 错误