Emacs的配置文件有三种格式:.emacs文件、_emacs文件或者.emacs.d目录下的init.el(22或者更高版本)文件,但是,不管哪种格式,必须放对正确的目录Emacs才能找到,这个正确的目录就是HOME目录。
熟悉Linux的朋友一般都知道home目录,简单的用~表示,或者用全路径表示为/home/<xxx>,其中xxx表示用户名字,所以,在Linux下将.emacs和.emacs.d放到这个目录下就行了,但windows没有home目录的概念,所以,Emacs就按如下方式来查找配置文件:
如果设置了HOME环境变量,那么就用它的值作为home目录~
如果存在注册表键值HKCU\SOFTWARE\GNU\Emacs\HOME,就用它的值作为home目录~
如果存在注册表键值HKLM\SOFTWARE\GNU\Emacs\HOME,就用它的值作为home目录~(和2的区别是,2只是针对当前用户的注册表路径,3则是针对所有用户)
如果存在C:\.emacs,就用C:\作为home目录~
如果以上都不存在的话,就使用<system root>\Users\<user name>\AppData\Roaming作为home目录~(对于XP和较早windows用户,需要到Documents and Settings目录下去找)
对于windows系统来说,手工设置HOME环境变量并不是很好的方法。由于不光是Emacs会使用HOME这个环境变量,会使用这个变量的至少还有以下程序或者插件:
VIM,VIM会把_viminfo文件放在这个目录;
VIM的neocomplcache插件,它会放置一个.neocon目录进去;
firefox的pentadactyl插件,它会放一个pentadactyl目录进去。
所以,个人建议:
如果你希望有一个公共的目录存放这些配置,就像Linux下的~目录一样,那么设置HOME这个环境变量最适合不过;
如果你希望这个目录只存放Emacs的配置,那么,还是不要用HOME环境变量了,去注册表里面添加一个HOME键值吧(字符串值)。
参考:
1、https://blog.csdn.net/lihenair/article/details/19050479
2、https://blog.csdn.net/superwen_go/article/details/8241409