如何加快Emacs的启动速度

如题,我是一个Emacs新手,但是我在跟着网上的教程一步步装各种插件之后,发现Emacs的起动速度无比的慢,相较于我的nvim配置,足足慢了5倍,或者以上。 不知道各位大佬能不能给我一点指导啊。网上说什么增大垃圾回收阀值的,但萌新表示真的看不懂。

vim用户建议从 spacemacs 或 doom-emacs 入手

感觉emacs的启动速度3秒跟10几秒,没什么区别。毕竟都一次打开之后就不关了。

1赞

我是来政治不正确的。

强烈不建议从 Spacemacs 或 Doom(或任何别人包装好的配置)入手,因为出了问题没法 debug。

你如果看网上的教程的话,大概有不少是 Emacs 24 以前的,让你在配置里写很多 require 的那种。对于新手来说这没什么问题,你现在还在新手期。要做的就是赶快熟悉 Emacs 本身和 elisp,等你熟悉到不用看教程,可以自己看插件的官方文档写配置的时候,就可以毕业离开新手期了。

离开新手期以后再考虑启动速度的问题,这时你就有很多可以玩的了。比如用 use-package 重构配置,或者换 Doom,或者其他成熟的配置框架,或者你自己写一个框架。这些完成以后一般启动速度会自动降到 1s 这个量级。

;; 另见后面 @cnsunyour回复

2赞

好的,了解。谢谢您的建议!

我是先用的centaur emacs 现在也开始自己写了, 比一开始就自己写好很多

把配置发出来,大家一起帮你找问题

强烈同意,每次开机先打开Emacs,直到下一次重启电脑为止。

好吧。不过对我个人来说,没有 spacemacs 和 doom-emacs ,我是不可能用起 emacs 的。 emacs 和 vim 完全不同的操作方式让我很长时间内无所适从,抄别人的配置从没有顺顺利利,而自己对于配置代码完全不懂,说白了连个语法错误都看不出来,更别提调试了。 我需要的是先用起来,然后才有兴趣去调试和改配置。 当然,巨佬说的熟悉到不用看教程就可以毕业离开新手期了,确实如此。但没有一个友好的现成配置的话,这个毕业的过程对我来说过于痛苦。 私以为 Emacs 最大的问题就是入门门槛太高,这些集成配置是切实降低了入门门槛的。虽然它有另一方面的问题。

如果楼主想从evil入门emacs的话,可以看看这位emacs高手的教程,讲得很基础也详细。

https://github.com/daviwil/emacs-from-scratch

https://www.bilibili.com/video/BV1hy4y1z71d

(setq use-package-always-defer t)

如果不喜欢doom, 可以用我的配置 https://github.com/redguardtoo/emacs.d

嗯,好吧,那大概就是个人经历不同。我刚开始用的时候还没这些框架,配置都是自己一条条攒的,感觉⋯⋯还行⋯⋯

不过我之前也不是 Vim 用户,不好说 Vim 用户转过来的体验。

我还是比较赞同先使用大佬的配置,等掌握了一定的Elisp基础后再参考大佬的配置,自己写配置。因为这时你自己心中也比较清楚自己需要哪些功能,而且对主流的各种包也有了一定了解。
我的个人经历:Emacs教程(山人)-> 学习基础配置-> Purcell的配置 ->暂时放弃Emacs -> 使用Vim -> 使用Emacs + Evil -> 基于Lazycat大佬的配置魔改。

简单了解一下elisp即可,不需要学完整,有问题再google或看文档; 先使用大佬的配置框架,把不熟悉的看不懂的,不知道啥功能的代码全部干掉,先保留最基本的功能再慢慢扩展 搞一段时间后就渐渐入门了。 我用emacs 10年了照样看不懂复杂的elisp代码,但并不妨碍我使用emacs。

emacs的异步实现的不好,由于一些历史的沉疴,多线程短期内也不可能得到好的实现,所以就是比vim慢…

即便是doom这种对性能如此抠搜的配置,在require lsp或者org的时候也会顿卡明显的一下(这是lazyload也很难解决的问题).

如果不对emacs的一些特性很有需求(对我来说:org,很好的gdb嵌入,lisp支持),只是想用一个快速的终端编辑器,

可以试试用lua写nvim的配置,真的快.

试一下我的配置。doom启动速度天下第一是事实。但运行速度可能还是我的快。Vim大多数情况下比不上我优化过的配置。

Emacs加插件启动速度是很慢的,要回避这个问题呢,可以将它的daemon设置为开机启动,然后通过client调用,这样用的时候感觉会快点。当然,还有一种办法就是用use-package了延迟启动了,不过就需要自己多花点心思去调整。我主要用的前一种办法,也更推荐这种方式。

前辈,你有没有写文章介绍下你优化的整体思路和实现逻辑,很想学习下!

见知乎专栏“如何提高编程速度”,原则和具体方法都讲了的,

另外看我 github 账号 redguardtoo 下的项目,有现成插件可用我一般就不自己新建项目。

反过来说,我新建项目一般都是对已有项目不满意。

  • company-ctags就是对company-etags性能不满意
  • wucuo是因为对flyspell-mode性能和稳定性不满意
  • lazyflymake是对flycheckflymake不满意
  • find-file-in-projectcounsel-etags是对projectile性能和稳定性不满意
  • 偏好git命令行混用magit命令就是对magit性能不满意

如果用了我的配置,以performance关键字搜一下git历史和文档,也写了很多具体的技巧。

3赞