我如何找到已加载的 .emacs 文件?

34

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

我的情况很简单,当我使用 sudo emacs 时,它加载的是一个与我家目录中的不同的 .emacs 文件。我可以通过在自己的 .emacs 文件上执行 M-x eval-buffer 来解决这个问题,但那是很多额外的步骤,而且似乎无法清除加载的任何 .emacs 文件中古怪的绑定。如果有可能,我想找到 .emacs 文件并删除一些奇怪的绑定(如将 c-n、c-p、c-a 绑定到奇怪的东西)。

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

3个回答

66

使用的init文件存储在变量'user-init-file'中。要查看此变量,请使用 'describe-variable' (C-h v)命令,输入'user-init-file'并显示使用的文件。


8

你可以尝试查看找到的文件:

C-x C-f ~/.emacs RET
~会被翻译为HOME环境变量的值。Emacs会寻找.emacs,然后是.emacs.elc(字节编译版本),然后是.emacs.el,接着是~/.emacs.d/init.elc~/.emacs.d/init.el。这份文档展示了其他可选项。它还依赖于LOGNAMEUSER环境变量。
你也可以查看*Messages*缓冲区的内容 - 虽然你应该设置(setq message-log-max t)(如果你能的话)以确保所有消息都被保留。在该缓冲区内有类似以下行的内容:

Loading /home/tjackson/.emacs.tjackson.el (source)...

它会显示加载了哪些文件。
你还应该查看Find-Init文档,其中展示了更多可加载的文件,如site-start.el和终端特定的初始化(对我来说是新的)。

6
如果你使用的是Linux系统,你可以尝试以下方法来查看在Emacs启动时打开的文件。
sudo strace -o /tmp/emacs.txt -e open emacs

如果您使用的是MacOSX,请尝试sudo opensnoopsudo opensnoop -p $EMACS_PID - Devon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接