【问题标题】:is there a way to specify custom init file on emacs startup?有没有办法在 emacs 启动时指定自定义初始化文件?
【发布时间】:2013-06-17 11:51:42
【问题描述】:

我试过runemacs --user d:\path\to\init\.emacs,但它给出了

Error (initialization): Invalid user name d:\path\to\init\.emacs

我的意思是自定义位置的自定义文件,例如我的 pendrive 等,而不是我在用户文件夹中的默认位置。我尝试为不同的配置创建一个带有相应初始化的 cmd 文件。

【问题讨论】:

  • Invalid user name 应该给个提示!

标签: windows emacs


【解决方案1】:

我猜你的最终目标是从你可以随身携带的 USB 驱动器上运行 Emacs。有两种方法可以让 Emacs 从不同的 init 文件开始:

(1) -q --load 方式

这只是为了运行

emacs -q --load path-to-your-init.el

在没有任何初始化的情况下启动 Emacs,然后加载 path-to-your-init.el

这种方式的陷阱:在这种情况下,Emacs 并没有真正将 el 文件视为一个 init 文件,实际上 Emacs 根本没有经过初始化,这意味着跳过了以下初始化后的步骤:

  • 启用包,即评估(package-initialize)

  • 运行钩子after-init-hook,即求值(run-hooks after-init-hook)

您可能需要在备用初始化文件中添加初始化后的内容。

另外,如果 Emacs 使用 -q 选项启动,自定义界面将不允许您保存设置。

(2) HOME 方式

使用内容创建 my-emacs.bat:

set HOME=%~dp0
C:\path-to-your\Emacs\bin\runemacs.exe --xrm "emacs.Background: light green"

当您单击该 bat 文件时,Emacs 会创建名为 .emacs.d 的文件夹,而不是在您通常的用户目录中,而是在 bat 文件所在的位置。您可以将自己的init.el 放入该.emacs.d 文件夹中。使用此 Emacs,评估 (find-file "~/.emacs.d/init.el") 会打开您自己的便携式 init.el,而不是您常用用户目录中的 init 文件。您可能想删除 --xrm "emacs.Background: light green" 部分,我将其包括在内是因为我总是忘记哪个 Emacs 是哪个。

问题:这个 Emacs 在自己的 .emacs.d 目录中有自己的包目录。这可能是也可能不是你想要的。如果要共享包目录,可以更改package-user-dir 或使用 Link Shell Extension 创建指向要共享的包目录的符号链接。

在 USB 驱动器上运行 Emacs 需要考虑的事项:

Emacs 将其部分功能外包给外部工具。 grepping 和比较是外包给 grep 和 diff 的,所以你可能在你的系统上至少安装了 GnuWin32 Grep 和 GnuWin32 DiffUtils。并且拼写检查的一部分外包给 aspell,这也是一个单独的安装。加密外包给 GPG,因此 Gpg4Win 是另一个单独的安装。为了让您的便携式 Emacs 拥有所有这些功能,所有这些外部工具也应该在您的 USB 驱动器上。幸运的是,GnuWin32 和 aspell 是便携友好的。不知道是不是GPG。如果您设法制作仅依赖于 eshell 自己的 grep 的 lgrep 和 rgrep 版本,则可以消除对外部 grep 的依赖,但似乎没有人这样做,所以制作这样的 lgrep/rgrep 是大胆地去以前没有人去过的地方.

【讨论】:

  • 太棒了,2020 年仍然可以完美运行。谢谢。
  • 可以设置user-init-file开启自定义保存。 emacs -Q -T FrameTitle --eval "(setq user-init-file \"$INITFILE\")" -l $INITFILE )
【解决方案2】:

您可以通过在命令行中输入emacs --help 来获得有关所有 emacs 选项的帮助。该帮助表明 --user 期望的是用户名,而不是 elisp 文件的路径。

要在启动时加载 lisp 文件,您可以使用 --load 选项:

$ emacs --help
...
--load, -l FILE         load Emacs Lisp FILE using the load function
...

如果你想阻止你的默认初始化文件被加载,你可以使用这个选项:

$ emacs --help
...
--no-init-file, -q          load neither ~/.emacs nor default.el
...

【讨论】:

  • 这都引出了一个问题:为什么在 2022 年没有一个简单的选项 --init DIR 可以指向不同的 .emacs.d 目录?叹息。
猜你喜欢
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多