Emacs的开始时间令人难以置信

时间:2014-05-12 22:19:10

标签: emacs elisp loading

昨天,我:q让Vim尝试Emacs一段时间。我已经开始使用Elisp(比VimScript好一百倍),但即使我第一次安装它(通过yum),并且什么都没改变,它开始花了大约30秒,但仍然如此( GUI和-nw)。

我检查了*Messages*缓冲区:

Loading /usr/share/emacs/site-lisp/site-start.d/desktop-entry-mode-init.el (source)...done
Loading /usr/share/emacs/site-lisp/site-start.d/rpmdev-init.el (source)...done

这些文件似乎特定于我安装的RPM包。我试着改变他们的名字,但没有区别。它仍然需要30秒。

我已经部分解决了它从未退出emacs(我只是暂停它)并尝试在其中做所有事情,但偶尔打开两个Emacs会很好,特别是因为我倾向于使用我的终端模拟器的分裂功能而不是tmux

我意识到Emacs的加载速度比Vim慢,但这对于全新安装来说似乎很荒谬。有谁知道发生了什么事?

谢谢!

3 个答案:

答案 0 :(得分:12)

Emacs的PROBLEM文件说:

*** Emacs startup on GNU/Linux systems (and possibly other systems) is slow.

This can happen if the system is misconfigured and Emacs can't get the
full qualified domain name, FQDN.  You should have your FQDN in the
/etc/hosts file, something like this:

127.0.0.1   localhost
129.187.137.82  nuc04.t30.physik.tu-muenchen.de nuc04

The way to set this up may vary on non-GNU systems.

这个"慢启动"通常来自超时,30秒听起来是正确的。

作为旁注:在几乎所有机器都有静态IP地址的日子里,导致这种速度减慢的DNS查找被认为是重要/有用的。现在以这种方式收集的信息并不能证明这一点,因此从Emacs-25开始,Emacs不会执行此DNS查找,因此这个问题根本就不存在了。

答案 1 :(得分:1)

好的,我有一个(古怪和临时的)解决方案。我必须运行dhclient em1来访问互联网,这使得Emacs需要30秒才能加载,可能是因为一些超时。因此,在运行dhclient em1后,我使用shell脚本启动执行以下操作的Emacs:

sudo pkill dhclient
sudo ifconfig em1 down
emacs -nw -daemon 2> /dev/null
sudo ifconfig em1 up
sudo dhclient em1

禁用网络,启动Emacs作为守护程序,并重新启用网络。这很难看,但它现在有效。如果有其他人有更好的答案,我很高兴听到它。当然,em1必须由您的以太网设备替换(我猜可能是eth0。)

答案 2 :(得分:1)

我有一个微笑的问题,emacs大约需要15秒才能启动。在我的情况下,原因是DNS超时。出于某种原因,使用我的宿舍DNS,反向查找失败(主机127.0.0.1)大约需要10秒钟。通过google名称服务器(8.8.8.8)替换DNS服务器会产生几乎即时的“未找到:3(NXDOMAIN)”响应。与此同时,emacs的启动时间不到2秒。谢谢@Stefan,他指出了我的DNS问题。

修改:将Google名称服务器添加为网络管理器中的其他NS也可以完成此任务。 (即当你的resolv.conf按此顺序拥有NS时:

nameserver a.b.c.d
nameserver 8.8.8.8