无限接近裸配置启动时间的Emacs配置思路

注:此思路适合能自己动手从零写一个Emacs Lisp交互命令的人,这是最低门槛。统计启动时间可以参考

里的”benchmark-init“。

首先一切回到一个没有配置的Emacs,这时启动Emacs时,如果要加快启动速度:

emacs -Q -D

如果要点一下图标就使用这个命令,需要修改该图标的命令,譬如Windows上是右键图标,属性,目标:

C:\Users\jianjia\Downloads\emacs-26.1-i686\bin\runemacs.exe -Q -D

然后,在Emacs里创建一个”~/.emacs.d/init.el“文件,空白的,保存,退出。

此时的命令变为:

emacs -Q -D --load ~/.emacs.d/init.el

譬如Windows上是:

C:\Users\jianjia\Downloads\emacs-26.1-i686\bin\runemacs.exe -Q -D --load "c:\Users\jianjia\AppData\Roaming\.emacs.d\init.el"

这个启动时间将是Emacs的极限启动时间,也是可以无限接近的时间,如果这个时间超过10秒,那么再怎么优化都不会比这个时间短,懒加载都没用。如果有更多优化这部分启动时间的方法,望不吝赐教。

在点击图标启动Emacs后,打开空白的”~/.emacs.d/init.el“文件,开始在一个文件里编写配置。

配置分成两部分,一部分是直接求值时可以忽略执行时间的配置,一部分是直接求值时无法忽略执行时间的配置,前一部分尽管往配置里加,这些内容对Emacs的启动时间都可以忽略不计,后一部分需要看情况使用各种优化方式:

  • 使用”global-set-key“来绑定某个按键来触发这部分配置,譬如绑定”M-X“来加载所有”ivy“的配置。
  • 使用”run-with-timer“、”add-hook“、”advice-add“、”eval-after-load“、”with-eval-after-load“、”autoload“等等来自动加载耗费启动时间的配置

在编辑空白”init.el“文件时,最需要的功能是什么,一点一点地加到这个文件里,最终Emacs的启动时间会无限接近裸配置启动的时间。

1 个赞

emacs -Q -D不是你这么用的

--quick, -Q                 equivalent to:
                              -q --no-site-file --no-site-lisp --no-splash
                              --no-x-resources

--basic-display, -D             disable many display features;
                                  used for debugging Emacs

为了加速自己正常使用的init time,就去动这些debug选项,这显然是不合常理的。就像我不会为了加速Windows启动,而使用带网络连接的安全模式一样

1 个赞

你的想法没错,而我已经这样用了近6个月,觉得可行。

1 个赞