如何让我的定制化emacs加载更快?

11

随着我在emacs的init.el文件中添加越来越多的插件和配置,它的启动越来越慢。有没有办法避免这种情况发生?


2
可能是如何使Emacs启动更快?的重复问题。 - Trey Jackson
2个回答

19
你的.emacsinit.el文件不应该有太多的requireload命令,它应该主要包含autoloadautoload函数告诉Emacs:“如果你需要这个函数,就加载那个文件”。这样,文件只有在实际使用该函数时才会被加载。只有两种情况下才需要使用require(或极少数的load):
  • 如果有一个自定义需要立即生效(例如(require 'cl),颜色主题);
  • 如果你要加载的是包含autoloads和其他启动定义的小文件(例如(require 'tex-site))。

如果你还没有这样做,为像模式特定自定义这样的事情调用autoload可以显著缩短启动时间,因为Emacs将需要加载较少的文件。

此外,请确保你的文件已经字节编译;它们将加载得更快(CPU时间更少)。对每个.el文件调用M-x emacs-lisp-byte-compileM-x byte-recompile-directory(这些命令在Emacs-Lisp菜单中)。

最后,注意加载时间并不那么重要,因为您应该每个会话最多只启动一次Emacs。在登录时自动启动Emacs,可以选择使用窗口或使用--daemon选项在后台运行。然后,要编辑文件,请运行emacsclient。如果您不想在登录时启动它,也可以告诉emacsclient在尚未运行时启动Emacs

1
对于那些在守护进程模式和编辑器颜色方面遇到问题的人来说,这个链接非常有用:http://www.emacswiki.org/emacs/SettingFrameColorsForEmacsClient - dermatthias
如果您不想确认每个目录和/或文件:(byte-recompile-directory "~/where-i-put-my-packages/" nil nil) 或将最后一个nil值更改为非nil值以强制重新编译。 (describe-function 'byte-recompile-directory) 很棒 :) - clintm

2
你可以将其编译成 .elc 文件(M-x byte-compile-file)。

48.4 Emacs初始化文件中:“不建议对您的初始化文件进行字节编译...如果您的初始化文件定义了许多函数,请考虑将它们移动到单独的(字节编译)文件中,在初始化文件中加载该文件。” - DavidRR
话虽如此,但是有一些建议的机制可以自动维护你的Emacs初始化文件的字节编译版本。例如,请参见这里这里 - DavidRR

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