我已经尝试了runemacs --user d:\path\to\init\.emacs
,但它提供了
Error (initialization): Invalid user name d:\path\to\init\.emacs
我的意思是自定义位置中的自定义文件,例如我的pendrive等,而不是我在用户文件夹中的默认位置。我尝试创建一个带有相应init的cmd文件,用于不同的配置。
答案 0 :(得分:26)
我猜你的最终目标是从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)
您可能必须在备用init文件中添加初始化后的内容。
此外,如果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,评估(查找文件“〜/ .emacs.d / init.el”)将打开您自己的可移植init.el
,而不是通常用户目录中的init文件。你可能想要删除--xrm "emacs.Background: light green"
部分,我包含它,因为我总是忘记哪个是Emacs。
陷阱:这个Emacs在自己的.emacs.d
目录中有自己的包目录。这可能是也可能不是你想要的。如果要共享包目录,可以使用Link Shell Extension更改package-user-dir
或创建指向要共享包目录的符号链接。
在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是大胆地去到没有人去过的地方
答案 1 :(得分:8)
您可以通过在命令行上键入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
...