windows - 有没有办法在 emacs 启动时指定自定义初始化文件?

标签 windows emacs

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

错误(初始化):无效的用户名 d:\path\to\init\.emacs

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

最佳答案

我猜您的最终目标是从可以随身携带的 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)

  • running hook 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 创建指向要共享包目录的符号链接(symbolic link)。

在 USB 驱动器上运行 Emacs 的注意事项:

Emacs 将其部分功能外包给外部工具。 Grepping 和比较外包给 grep 和 diff,因此您可能至少在系统上安装了 GnuWin32 Grep 和 GnuWin32 DiffUtils。并且部分拼写检查外包给aspell,也是单独安装的。加密外包给 GPG,因此 Gpg4Win 需要另外单独安装。为了使您的可移植 Emacs 具有所有这些功能,所有这些外部工具也应该在您的 USB 驱动器上。幸运的是,GnuWin32 和 aspell 是可移植的。我不知道GPG是不是。 lgrep 和 rgrep 只依赖 eshell 自己的 grep 的版本,可能会消除对外部 grep 的依赖,但似乎没有人这样做过,所以制作这样的 lgrep/rgrep 是大胆地去以前没有人去过的地方.

关于windows - 有没有办法在 emacs 启动时指定自定义初始化文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17146844/

相关文章:

python - 用于 Python 编程的 Emacs : module/class outline/browser

emacs - 使用 ido 插入文件名

c++ - Windows应用程序因纯虚函数调用而崩溃

windows - Windows GUI 中的 Unix 工具

c - Windows 中文件夹及其子文件夹中所有文件的列表

emacs - exec-path 设置正确,但 emacs 找不到可执行文件

emacs - 打开 dired 并选择与前一个缓冲区关联的文件?

Emacs 和公司自动补全。全局添加头目录

c++ - winapi用鼠标点击事件在屏幕上显示图标

windows - 从 ipconfig 获取 MAC 和 DHCP 服务器