32

如何让 emacs 告诉我它已加载的 .emacs 文件的位置?

我的情况很简单,当我这样做时sudo emacs,它会加载一个与我的主目录中的文件截然不同的 .emacs 文件。我可以通过M-x eval-buffer处理自己的 .emacs 文件来解决问题,但这是很多额外的步骤,而且它似乎无法清除正在加载的任何 .emacs 文件中的愚蠢绑定。如果有的话,我只想找到 .emacs 文件并删除一些陌生人绑定(cn、cp、ca 都反弹到奇怪的东西)

我的主要问题仍然是,如何让 emacs 告诉我它已加载的 .emacs 文件的位置?

4

3 回答 3

61

使用的初始化文件存储在变量“user-init-file”中。要查看此使用 'describe-variable' (Ch v),请输入 'user-init-file',它将显示使用的文件。

于 2009-05-14T18:30:15.220 回答
8

您可以尝试查看通过以下方式找到的文件:

C-x C-f ~/.emacs RET

~被转换为HOME环境变量的值。Emacs 查找.emacs, then .emacs.elc(字节编译版本)、 then .emacs.el、 then~/.emacs.d/init.elc~/.emacs.d/init.el. 本文档显示了替代方案。它还取决于环境变量LOGNAMEUSER.

您还可以检查*Messages*缓冲区的内容 - 尽管您应该设置(setq message-log-max t)(如果可以)以确保保留所有消息。在该缓冲区内,有几行如下所示:

正在加载 /home/tjackson/.emacs.tjackson.el(来源)...

这将显示加载了哪些文件。

您还应该查看Find-Init文档,该文档显示了更多可以加载的文件,例如site-start.el, 和终端特定的初始化(对我来说是新的)。

于 2009-05-14T18:29:57.267 回答
6

如果你在 Linux 上,你可以试试这个来查看 emacs 启动时打开了哪些文件。

sudo strace -o /tmp/emacs.txt -e open emacs
于 2009-05-14T18:27:12.357 回答