我猜你的最终目标是从你可以随身携带的 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 根本没有经过初始化,这意味着跳过了以下初始化后的步骤:
您可能需要在备用初始化文件中添加初始化后的内容。
另外,如果 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 是大胆地去以前没有人去过的地方.