自个儿想重新搞一下配置,启动时间太慢了,个人强迫症!!
想问下你们的配置都是怎么解决启动时间??
我看到Emacs想减少启动时间视乎只有 减少加载包 这方法,用过这里的大师做的 lazy-load 加载包,感觉不太理想,lazy-load 如果去加载一个很复杂的包就难了,类似 helm 这种
目前个人有 30个包左右,Windows 启动时间 5s左右,Linux 启动时间为 3s 左右
太难受了,想做到秒启动
或者,你们管理包的方式,按键映射用的什么包?
自个儿想重新搞一下配置,启动时间太慢了,个人强迫症!!
想问下你们的配置都是怎么解决启动时间??
我看到Emacs想减少启动时间视乎只有 减少加载包 这方法,用过这里的大师做的 lazy-load 加载包,感觉不太理想,lazy-load 如果去加载一个很复杂的包就难了,类似 helm 这种
目前个人有 30个包左右,Windows 启动时间 5s左右,Linux 启动时间为 3s 左右
太难受了,想做到秒启动
或者,你们管理包的方式,按键映射用的什么包?
减少不常用的包最有用,其次是 autoload/lazyload 。
升级电脑硬件配置
这个没用,包一多一样启动时间长
你可以用 Snails 替代 Helm, Snails就一个包覆盖大多数使用场景, Helm功能太多了,相应的依赖也很多。
哎,你们有没有打算弄一个简单的配置??
比如 不安装任何包,单纯 的 尽量减少启动时间的配置,不加任何第三方包??
用 use-package 可以很方便设置懒加载。我100个包可以控制在1s 左右的启动时间。
懒加载是 use-package 的 defer 吗??
我现在就是使用 use-package 的 defer ,我感觉是有问题的,不知道是不是每个包的启动时间不一样还是怎么回事,之前做好的会出错,或者少了一些依赖
如果熟悉 elisp 的话,多使用 autoload 和 with-eval-after-load 去优化;如果不那么熟悉,可以使用一些配置管理的包,比如 use-package 或者 leaf.el ,它们的封装使用要方便一点。
可以看看我之前的回复,先确定本机上面最快的启动时间:
也可以学习一下其他人分享的经验:
https://emacs-china.org/search?q=emacs%20%E5%90%AF%E5%8A%A8%E6%97%B6%E9%97%B4
我是用 package.el
管理包的
我用 use-package,必要时加上 :defer t
。
我还设置了
(setq package-quickstart t)
这样会快一点,原理是把 autoload 都写到一个文件。就是 M-x list-package
要刷新一下。
现在 defer 支持 num 了,可以实现启动后多少秒加载
如果选项 t 的话,每个包谁先加载?
我现在就很头大,下载了好几个配置,都学不进去,遇到点问题还是打开 Vim/VSCode/Cot 解决。
不过 SystemCrafter 有个基础配置我勉强能看进去。而且目的就是为了方便别人 fork 和修改而攒的。
我 -Q 是0.1秒
没有 defer 的包
我说的是 use-package 的 :defer
抱歉,不太理解你的意思
找个工具如benchmark-init之类的,看看哪个package启动时间最慢,又可以defer的,先defer试试,再优化其他的。
另外,优化启动时间这东西,到一定程度就可以,没有止境,折腾多了浪费时间。
那说明你优化的空间很大,不过我个人建议是你先找一个 满足自己需求且经过优化的的配置,先用起来,优化需要一定的学习和时间积累。
我最找是从群里的配置中筛选了一下,满足自己的需求,先用再改。
看你想要的是多快。如果你的目标是 1s 以下的话,那么懒加载就可以,具体的看下这个函数的文档 autoload
.
如果你需要更快,那你只能用 pdump 的方式了(而且这样的话你用不了 native-comp)。
如下面的 defer 2
,是启动后idle 2秒就加载:
;; 我用来配合ivy支持拼音首字母查询的,不知道该如何lazy load,只能延迟几秒加载了,其实一般都不用。
(use-package pinyinlib
:defer 2
:load-path "~/.emacs.d/site-lisp/extensions/pinyinlib")
;; evil必须在emacs启动后就能用,无法按键触发,defer 1秒差不多了,启动速度在0.7s左右。
(use-package evil
:ensure t
:defer 1
defer t
的就只能靠hook或者某个快捷键来加载了。
(use-package diredfl
:defer t
:hook (dired-mode . diredfl-mode)
(use-package sdcv
:defer t
:load-path "~/.emacs.d/site-lisp/extensions/sdcv"
:bind (("s-t p" . sdcv-search-pointer) ;; 光标处的单词, buffer显示
("s-t t" . sdcv-search-pointer+) ;; 光标处的单词, frame显示
用于启动时必须加载的package,如doom-theme,如果不加载启动时就没法立刻用主题的配色显示,不好看,会是一个默认theme的大白屏,然后再一闪加载theme的深色主题。
(use-package doom-themes
(use-package doom-modeline
:hook (after-init . doom-modeline-mode)