如何让emacs告诉我它已加载的.emacs文件的位置?
我的情况就是当我执行sudo emacs
时,它会加载一个与我的主目录中的文件截然不同的.emacs文件。我可以通过在我自己的.emacs文件上执行M-x eval-buffer
来解决这个问题,但这有很多额外的步骤,而且似乎没有在任何.emacs文件被加载时清除愚蠢的绑定。如果有的话,我只想找到.emacs文件并删除一些陌生人的绑定(c-n,c-p,c-a全部反弹到奇怪的东西)
我的主要问题仍然是,如何让emacs告诉我它已加载的.emacs文件的位置?
答案 0 :(得分:47)
使用的init文件存储在变量'user-init-file'中。要使用'describe-variable'(C-h v),请输入'user-init-file',它将显示使用的文件。
答案 1 :(得分:6)
您可以尝试查看找到的文件:
C-x C-f ~/.emacs RET
~
被转换为HOME
环境变量的值。 Emacs查找.emacs
,然后.emacs.elc
(字节编译版本),然后.emacs.el
,然后~/.emacs.d/init.elc
和~/.emacs.d/init.el
。这个documentation显示了替代方案。它还取决于环境变量LOGNAME
和USER
。
您还可以查看*Messages*
缓冲区的内容 - 尽管您应该设置(setq message-log-max t)
(如果可以)以确保保留所有邮件。在缓冲区内有如下行:
正在加载/home/tjackson/.emacs.tjackson.el(来源)......
将显示已加载的文件。
您还应该查看Find-Init文档,其中显示可以加载的更多文件,如site-start.el
和终端特定的初始化(对我而言)。
答案 2 :(得分:5)
如果您使用的是Linux,则可以尝试使用它来查看emacs启动时打开的文件。
sudo strace -o /tmp/emacs.txt -e open emacs