同时维护多个emacs配置

Arc*_*hit 13 emacs elisp

我想在同一台PC上的同一用户帐户上同时维护多个emacs配置,如emacs-prelude,emacs-starter-kit和我自己的自定义emacs配置.
因为我有安装目录,如.emacs1.d,.emacs2.d,.emacs3.d.

每个emacs用户目录都有一个init.el文件,应该在启动时加载.而不是.emacs文件,我更喜欢使用init.el文件.

如何加载这些自定义配置目录?

我试过跑步 emacs --eval '(setq user-emacs-directory "~/.emacs1.d/")'

它只是设置user-emacs-directory的值,但不加载它的文件

abo*_*abo 7

如果你想从控制台调用东西,我会把它放在 .bashrc 中:

export emacs1=~/.emacs1.d/init.el
export emacs2=~/.emacs2.d/init.el
export emacs3=~/.emacs3.d/init.el
Run Code Online (Sandbox Code Playgroud)

然后像这样调用它们:

emacs -q -l $emacs1
emacs -q -l $emacs2
emacs -q -l $emacs3
Run Code Online (Sandbox Code Playgroud)

您甚至可以在 bash 中的 $ 符号之后完成。

你甚至可以给这些东西起别名,像这样:

alias emacs1='emacs -q -l ~/.emacs1.d/init.el'
alias emacs2='emacs -q -l ~/.emacs2.d/init.el'
alias emacs3='emacs -q -l ~/.emacs3.d/init.el'
Run Code Online (Sandbox Code Playgroud)

并像这样调用它们:

emacs1
emacs2
emacs3
Run Code Online (Sandbox Code Playgroud)

当然,

(setq user-emacs-directory "~/.emacs1.d/")
Run Code Online (Sandbox Code Playgroud)

仍然必须在每个init.el


jua*_*eon 6

我会尝试类似的东西

emacs -q --eval '(load-file "~/.emacs1.d/init.el")'
Run Code Online (Sandbox Code Playgroud)

然后你会在init.el文件的开头做一些事情:

(setq user-emacs-directory "~/.emacs1.d/")
Run Code Online (Sandbox Code Playgroud)

(或者您也可以将两者作为命令行参数进行评估)


Mar*_*ahl 5

chemacs是一个用于管理多种 Emacs 配置的软件。请参阅https://github.com/plexus/chemacs