如何找到已加载的 .emacs 文件?
Posted
技术标签:
【中文标题】如何找到已加载的 .emacs 文件?【英文标题】:How do I find which .emacs file has been loaded? 【发布时间】:2009-05-14 18:17:50 【问题描述】:如何让 emacs 告诉我它已加载的 .emacs 文件的位置?
我的情况很简单,当我执行sudo emacs
时,它加载的 .emacs 文件与我的主目录中的文件完全不同。我可以通过在我自己的 .emacs 文件上执行 M-x eval-buffer
来解决问题,但这是很多额外的步骤,而且它似乎无法清除正在加载的任何 .emacs 文件中的愚蠢绑定。如果有的话,我只想找到 .emacs 文件并删除一些奇怪的绑定(c-n、c-p、c-a 都反弹到奇怪的东西)
我的主要问题仍然是,如何让 emacs 告诉我它已加载的 .emacs 文件的位置?
【问题讨论】:
【参考方案1】:使用的初始化文件存储在变量“user-init-file”中。要查看此使用 'describe-variable' (C-h v),请输入 'user-init-file',它将显示使用的文件。
【讨论】:
【参考方案2】:您可以尝试查看通过以下方式找到的文件:
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
,以及终端特定的初始化(对我来说是新的)。
【讨论】:
【参考方案3】:如果你在 Linux 上,你可以试试这个,看看 emacs 启动时打开了哪些文件。
sudo strace -o /tmp/emacs.txt -e open emacs
【讨论】:
如果您在 MacOSX 上,请尝试sudo opensnoop
或 sudo opensnoop -p $EMACS_PID
以上是关于如何找到已加载的 .emacs 文件?的主要内容,如果未能解决你的问题,请参考以下文章
在 git 中切换分支时,如何让 Emacs 恢复所有未更改的缓冲区?