我用Emacs for Windows 27, Spacemacs.
Spacemacs配置文件在C:\Users\AppData\Roaming\.spacemacs.d
用prompt和bash分别查看环境变量是一样的:C:User\you
用Command prompt调Emacs会自动加载spacemacs。但是用Git bash调用却是vanilla Emacs,它会反复在C:\Users\ .emacs.d建立和调用这个空dotfile。请教一下为什么偏偏Git bash不能识别dotfile的位置?谢谢大家。
查了手册也没说很清楚:Location of init file (GNU Emacs FAQ For MS Windows)
emacs 的配置文件 HOME 目录下,两者对默认 HOME 的位置处理不一样
感谢回答。
我在Prompt echo %HOMEPATH%
和Git bash echo $HOME
返回的都是c:\Users 真是个谜啊
Git bash 其实是个 mingw 系统,它有自己的目录结构,也就有自己的HOME,你可以在 git bash 中打印一下 HOME的值就知道了。
谢谢。
Gitbash和Prompt返回的home是一样的 c:/user
,dotfile并不在这个地址里。所以我的问题是,为什么prompt/power shell调用的Emacs成功在别处找到了dotfile。
也可能Emacs for windows智能考虑到了,如果被git调用,就假设自己在UNIX环境里,去home找dotfile;而被prompt调用,就去挂载的home找配置文件,毕竟C:\Users\AppData\Roaming挂载是window默认的地址。
在Windows上手动设置环境变量HOME。这样就统一到一个目录了。简易就设到Git Bash的~
对应的目录。
找到答案了,是继承default-directory的机制差异。Emacs 被git bash调用,会继承其HOME。悲催的Spacemacs还专门建立.env文件读取bash的环境,这个地址恰恰不是Windows用户最常见的保存dotfile的地方(因为推荐存在C:\Users\AppData\Roaming\
)。
从prompt和点击图标启动,无处可以继承,就自用使用了windows下内置的default-directory (C:\Users\AppData\Roaming\
)作为cwd,就能自动spacemacs了。
Window下在设置一个指定的目录为HOME,这样使用体验就和linux差不多了,不管是git bash 还是msys2 都会认这个home位置,这样emacs和vim的配置也就都可以放在这个新的home了。