Answers:
如手册所述,Emacs在多个地方查找init文件。如果要自定义Emacs,则必须从这些文件之一开始。
一种常见的方法是使用文件init.el
在你的user-emacs-directory
,而不是有.emacs
你的home目录。
该user-emacs-directory
默认~/.emacs.d
,所以它仍然是相对于你的家,但这种方法的好处是你可以保持在一个地方关系到你的Emacs配置应有尽有。该目录可以在版本控制下,备份,在多台计算机之间共享等。您可以使用符号链接(mklink
在Windows上)将文件保留在其他位置。
例如,经常看到人们在Github上维护其Emacs配置。通过在Github中搜索带有init.el文件的elisp项目,您可以找到很多示例。
user-emacs-directory
在使用Emacs的每个Windows安装上,我.emacs
在列出的位置的文件中都有以下代码:
;; Place this file in C:\Users\Username\AppData\Roaming and point to the appropriate files
(setq user-init-file "C:/path/to/.emacs")
(setq user-emacs-directory "C:/path/to/.emacs.d/")
(setq default-directory "C:/whatever/you/want/to/start/in")
(setenv "HOME" "D:/my/home/directory")
(load user-init-file)
这样我可以把我.emacs
和.emacs.d/
任何地方我想要的。
您的.emacs文件位于HOME
目录中。从Emacs手册中:
Windows的HOME等效项是用户特定的应用程序数据目录。实际位置取决于Windows版本...
您可以通过显式设置环境变量HOME指向系统上的任何目录来覆盖HOME的默认值。可以从命令外壳提示符或“我的电脑”的“属性”对话框中设置HOME。也可以在系统注册表中设置HOME,请参阅MS-Windows注册表。
HOME
目录更改为完全不同的目录。因此,为什么我称其为hack。将其设置为适当的值显然可以。
为了完整起见,我提供了以下链接:
https://www.gnu.org/software/emacs/manual/html_node/efaq-w32/Location-of-init-file.html
这表示您可以HOME
在注册表路径中设置一个值:
HKCU\SOFTWARE\GNU\Emacs\HOME
但是该值被环境变量覆盖HOME
。
认为您可以将(setq user-init-file "C:/path/to/.emacs")
@ryan建议的其他内容和其他内容放到site-start.el中
您的站点可能还具有站点启动文件;如果存在,则将其命名为site-start.el。像default.el一样,Emacs通过Lisp库的标准搜索路径找到该文件。Emacs会先加载该库,然后再加载您的init文件。
site-start.el
来完全控制自己的安装,init.el
而不再需要一个.emacs
。在此示例中,您无需摆弄主目录(除非计算机上的其他人在其中放置会影响您所做工作的内容)。换句话说,它可以为空白,而您无需触摸它。