如题,我是一个Emacs新手,但是我在跟着网上的教程一步步装各种插件之后,发现Emacs的起动速度无比的慢,相较于我的nvim配置,足足慢了5倍,或者以上。 不知道各位大佬能不能给我一点指导啊。网上说什么增大垃圾回收阀值的,但萌新表示真的看不懂。
vim用户建议从 spacemacs 或 doom-emacs 入手
感觉emacs的启动速度3秒跟10几秒,没什么区别。毕竟都一次打开之后就不关了。
我是来政治不正确的。
强烈不建议从 Spacemacs 或 Doom(或任何别人包装好的配置)入手,因为出了问题没法 debug。
你如果看网上的教程的话,大概有不少是 Emacs 24 以前的,让你在配置里写很多 require 的那种。对于新手来说这没什么问题,你现在还在新手期。要做的就是赶快熟悉 Emacs 本身和 elisp,等你熟悉到不用看教程,可以自己看插件的官方文档写配置的时候,就可以毕业离开新手期了。
离开新手期以后再考虑启动速度的问题,这时你就有很多可以玩的了。比如用 use-package 重构配置,或者换 Doom,或者其他成熟的配置框架,或者你自己写一个框架。这些完成以后一般启动速度会自动降到 1s 这个量级。
;; 另见后面 @cnsunyour 的回复
好的,了解。谢谢您的建议!
我是先用的centaur emacs 现在也开始自己写了, 比一开始就自己写好很多
把配置发出来,大家一起帮你找问题
强烈同意,每次开机先打开Emacs,直到下一次重启电脑为止。
好吧。不过对我个人来说,没有 spacemacs 和 doom-emacs ,我是不可能用起 emacs 的。 emacs 和 vim 完全不同的操作方式让我很长时间内无所适从,抄别人的配置从没有顺顺利利,而自己对于配置代码完全不懂,说白了连个语法错误都看不出来,更别提调试了。 我需要的是先用起来,然后才有兴趣去调试和改配置。 当然,巨佬说的熟悉到不用看教程就可以毕业离开新手期了,确实如此。但没有一个友好的现成配置的话,这个毕业的过程对我来说过于痛苦。 私以为 Emacs 最大的问题就是入门门槛太高,这些集成配置是切实降低了入门门槛的。虽然它有另一方面的问题。
(setq use-package-always-defer t)
嗯,好吧,那大概就是个人经历不同。我刚开始用的时候还没这些框架,配置都是自己一条条攒的,感觉⋯⋯还行⋯⋯
不过我之前也不是 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
是对flycheck
和flymake
不满意 -
find-file-in-project
和counsel-etags
是对projectile
性能和稳定性不满意 - 偏好git命令行混用magit命令就是对
magit
性能不满意
如果用了我的配置,以performance
关键字搜一下git历史和文档,也写了很多具体的技巧。