如何加快Emacs的启动速度

多谢!!!紫薯布丁。 我一直在github上关注你。

我现在的配置就是基于你的配置大幅度的魔改出来的,

使用起来的体验,诚实地说在大部分方面比vim慢,

我的vim也可以算是重型配置,lsp+tag管理+各类编辑插件(surround,matchit),拼写检查等. 但很少遇到ui卡住,也不会有第一次使用到某个插件的时候整个emacs卡死一秒的遭遇.

如果是内嵌luajit的nvim,多用些lua插件可能会更快…

以下是我用的一些插件

emacs现在在ui(vim的popwin)和速度方面(异步和多线程都有些问题)现在都有些微妙的掉队,但hack emacs比hack vim确实好玩很多, more than editor.

王婆卖瓜一把,建议从 Centaur Emacs 开始。当然,如果要用vim键绑定,需自己配置evil。

建议自己尝试配置emacs,不然想定制的时候,你都不知道在哪里配置。像doom的配置就有点复杂。evil的配置很简单,use-package后再稍微配置一下就ok。

另外,相同的机器,装win10和黑苹果,linux是在win10上的virtualbox虚机里。linux和mac下,emacs的启动是秒开,只要1秒左右。win10至少4秒。我大概加载90个package。

(use-package evil
  :ensure t
  :defer 1
  :preface
  (setq evil-want-visual-char-semi-exclusive t
	evil-echo-state t
	evil-ex-search-vim-style-regexp t
	;; foo-bar vim认为就是一个word,emacs会认为是2个
	evil-symbol-word-search t
	)

  :config 
  (evil-mode 1)
  (eval-after-load 'ggtags
'(progn
   (evil-make-overriding-map ggtags-mode-map 'normal)
   ;; force update evil keymaps after ggtags-mode loaded
   (add-hook 'ggtags-mode-hook #'evil-normalize-keymaps)))
  
  ;; 使用isearch时,增加search结束后的,高亮时间到30s
  (setq evil-flash-delay 30)
  ;; evil keymap
  (define-key evil-normal-state-map "go" 'goto-char)
  )

;; homepage: https://github.com/redguardtoo/evil-matchit
(use-package evil-matchit
  :hook (prog-mode . turn-on-evil-matchit-mode)
  )

;; doc: Comment/uncomment lines efficiently. Like Nerd Commenter in Vim
;; homepage: https://github.com/redguardtoo/evil-nerd-commenter
(use-package evil-nerd-commenter
  :defer t
  :config
  (evilnc-default-hotkeys t)
  )
1 个赞
  1. nvim是不错,速度很快,不过我代码写得少,用得不多。

  2. emacs的字体配置比vim好很多,可以中英文用不同的。

vim 也是可以中英文设置不同的字体。

vim现在用的少,真不知道啊。

lsp 我嫌太慢了,之前试过几次。因为我是javascript开发,所以ctags也够用了。

拼写检查和语法检查也是用我自己写的插件,性能控制得很好。

语法检查Vim的syntastic插件我用过,非常卡。我曾是Vim用户,但没精力同时优化Vim和Emacs了。

Emacs我维持在200多个插件,启动和运行速度都不错。

现在我用自己开发的lazyflymake语法检查,性能和灵活性我很满意。我还在测试lazyflymake,还有一些bug要修,所以默认最优模式没有启动。

关键还是要要测量自己的工作流,不断写Emacs Lisp优化。很多人Emacs Lisp知识是丰富的,但是没有集中火力在测量和优化工作流。

我的配置在javascript和web编程上是优化得很厉害的,但是python和c++就是及格水平,因为我找不到python和C++工作。

Emacs丰富的API和Lisp的灵活性使得我可以针对我自己需求优化到极致。但是要搞出一套配置来对每个程序员都最优我觉得是不可能的。

比如我的代码自动完成是用company-ctags,有一套自己的算法和策略,即使项目大到Linux Kernel这样50000+个文件,自动完成速度也是快如闪电。但是company-mode的其他backend我就不懂了。如你用我的配置,但后端是company-gtags或者company-etags而特别卡,就和我没关系了。因为其他后端我就没怎么用过。

就是我自己在同一个项目里也是有选择的优化配置,之前几个月主要做项目的typescript部分,所以我勉强把typescript配置调整到及格的水平。但是现在和未来几个月都是用javascript写后端,所以我对typescript的配置都已停滞了。

5 个赞

有个很简单的配置叫做castlemacs,我就是看着这个学会自己组装配置的。

https://github.com/freetonik/castlemacs

谢谢大家这么热情的回复我了,您们的建议我都收到了,我会再去看看elisp,然后尝试一下大佬们的配置框架的 :grinning:

为什么要加快呢?!Emacs原本的启动就非常快了,emacs -Q 如果认为慢那一定是使用了不知所谓的配置,是否优化了工作流先不谈,代码有没有编译,有没有使用编译期优化,有没有使用运行期优化。这有个开箱即用的配置,是不是最快的我不确定,但是比doom是要快一个量级的,More Reasonable Emacs 看下文档跑起来再来讨论Emacs是快还是慢。

单说启动的话,是doom-emacs最快,日常使用的话,你的和Centaur速度都很快,均快于doom-emac。

启动慢,只要开一次不关上就好了, 可以参考这个视频

可是我要测试我的emacs配置文件啊,就写完经常要重新启动啥的,我还是个新手

大家的垃圾回收阀值是怎么设置的啊

调试可以通过load-file的方式进行。不一定非要重新启动。(我之前也总是重新启动,我甚至还安装了一个重新启动Emacs的插件,但后来发现没有必要。)

修改配置后最好不要重启emacs,可能load-file调试与重新启动emacs效果不一致,那就在开一个emacs实例,然后在把刚开的emacs实例关掉.

改了配置文件后重启当前emacs调试这个感觉很糟糕,万一配置文件那没改好,结果配置文件无法正常加载,要在接近emacs -q的状态下使用emacs把配置改好在启动,这个给我的感受是有点"一夜回到解放前"的感觉

楼主电脑什么系统?系统的关系很大,我同样一份配置文件(没有使用懒加载)在win10下启动需要28~33秒,在虚拟机FreeBSD系统需要2秒左右,在虚拟机openSUSE系统需要1点几秒,这里说的启动时间都是Dashboard显示的时间,可以的话换到Linux下用吧(我的win10系统还是固态硬盘,虚拟机都是在机械硬盘,这个速度差别太大了 :laughing:

emacs日常崩溃

建议使用emacs27+默认就有的功能 pdumper