注:此思路适合能自己动手从零写一个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的启动时间会无限接近裸配置启动的时间。