相关疑难解决方法(0)

同时维护多个emacs配置

我想在同一台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的值,但不加载它的文件

emacs elisp

13
推荐指数
3
解决办法
2603
查看次数

如何使用特定的 user-init-file 和 user-emacs-directory 启动 emacs?

我希望能够启动多个具有不同配置的并行 emacs 实例。我还希望能够将相应的目录符号链接到~/.emacs.d(或在我的情况下~/.config/emacs),而无需忽略符号链接init.el目录内的文件或写入额外的 lisp 代码init.el来处理此问题。在我列出了可能但(对我来说)不令人满意的解决方案之后,最后一部分将变得清晰,我发现:

  1. 解决方案:

    env HOME=$HOME/path/to/a/pseudo/home/directory emacs
    
    Run Code Online (Sandbox Code Playgroud)

    找到如何使用不同的配置启动 emacs?

    问题:

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

  2. 解决方案:

    alias emacs='emacs -q --load "/path/to/init.el"'
    
    Run Code Online (Sandbox Code Playgroud)

    每个init.el文件都是这样开始的,以正确设置user-init-fileuser-emacs-directory变量:

    (setq user-init-file (or load-file-name (buffer-file-name)))
    (setq user-emacs-directory (file-name-directory user-init-file))
    
    Run Code Online (Sandbox Code Playgroud)

    找到如何使用自定义用户 emacs 目录启动 emacs?

    问题:

    • 它打破了emacs-init-time[...]。
    • 它不等同于正常启动[...]:
      • after-init-hook在加载 init 文件之前运行。
      • 缓冲区*scratch*是在加载 init 文件之前创建的。您必须显式更改其模式(而不是使用initial-major-mode)。
      • 您需要显式调用package-initialize; 它不会自动完成
  3. 也许是一个解决方案:

    以下不起作用。

    alias emacs='emacs -q …
    Run Code Online (Sandbox Code Playgroud)

emacs startup

5
推荐指数
1
解决办法
1881
查看次数

标签 统计

emacs ×2

elisp ×1

startup ×1