Windows如何流畅运行Emacs?

先来说说我自己的环境吧,Windows11,Emacs30,比较卡顿。 主要体现在代码补全上,输入一个字符再回退后就卡顿,Windows11用了不到一个月,给我最大的感受就是卡!

我原本是vim用户,vim在win11都卡,powershell启动都卡

我现在有两个想法:一个是把emacs装到虚拟机环境上,把开发工具全部转到linux试试有没有好转,刚刚试了一下,装了个Ubuntu,预料之中,还是卡,更卡。

第二个想法就是,把emacs装到wsl2上,但是我不想用命令行版本的,询问各位大佬有没有什么解决办法。个人觉得方向会在优化系统设置上做文章比较多,甚至回滚到win10,说实话我用win10流畅极了。

我还看到过一个方案就是把emacs装docker里,有没有折腾过的老哥分享一下可行性和经验

另一个小问题是,eaf插件兼容Windows吗,我简单配了一下,浏览器打网页没反应。 :smiling_face_with_tear:

重器轻用吧, 不满意就不用它呗…
我在 Windows 10 用 Emacs 有两三年, 不过都是写小项目, 没感觉到卡
EAF 在 Windows 有点难以用起来, 还是不建议在 Windows 使用多依赖的包

我是在 wsl2 上用命令行版本 (emacs -nw),用着还好,但确实缺失一些 GUI 的功能,但写代码和文档足够了。

好像也有 wslg ?也许也能跑 GUI 版本的 Emacs。

1 个赞

wsl2 emacs gui 很流畅啊,跟 linux 里用的一样

1 个赞

用wslg,使用Emacs很流畅没啥问题。不是必须要GUI直接用wsl2+Emacs TUI

1 个赞

可以用wslg

今天在 Win 11 上重装了一遍 Emacs,Emacs 在新的 Windows 系统上首次启动的体验真是地狱一样,尤其是开了 native-comp。

我在工作电脑上使用 WSL + OpenSUSE + emacs 30。不用 ubuntu 的主要原因是包仓库太老,再加上不想自己编译,openSUSE 是滚动发行,包仓库够新,而且是官方提供 WSL 发行版,所以选择了 openSUSE。不想编译也可以使用 emacs-appimage

在 WSL 里面的体验是没有什么问题的,启动速度非常快,比我在 mac 上还快一点点 (0.24s vs 0.27s)

WSLg 的体验除了用不了 windows 输入法以外,没什么大问题。不需要任何配置, 就可以正常使用 GUI。

个人觉得 TUI 除了看不了图片,我觉得没有什么大问题。现在 emacs-31 tty 也支持 child-frame 了,lsp-bridge,corfu 啥的都能用了。

Eaf 我尝试过在 wsl 里面使用,失败了,主要原因我猜是因为 wsl 里没有正常的 window manager。没有精力去 debug,就作罢了。

WSL2 因为是 type-1 虚拟机,所以除了对图形性能要求较高的应用,或者需要访问 windows 文件系统,是不会有任何性能问题的,甚至因为没有 defender,性能会比原生 windows 还好。

4 个赞

我用scoop 安装的Emacs-kl,不编程只用org-mode,流畅度没问题

emacs-kl是啥?我只看到:

>scoop search emacs
Results from local buckets...

Name           Version  Source Binaries
----           -------  ------ --------
emacs          30.1     extras
emax64-pdumper 20180619 extras runemacs.exe | emacs.exe | emacsclientw.exe | emacs-27.0.50.exe

约等于不兼容, 作者不用 Windows.

我在win11 wsl2下用emacs gui,刚开始受不了WSLg的DPI适配问题,低分辨率下使用体验极差,后来找了半年终于发现解决方案

现在就用的十分舒适,清晰流畅 :smiley:

3 个赞

我也在windows下使用emacs。没觉得卡。我的方法就是尽量用emacs自带的工具。wsl的方式我试过,感觉不好用,和windows原生的差别太大。

2 个赞

我也是研究比较了 wsl 决定不用的。趁着新换电脑的时候,专门建了开发驱动分区(参考 在 Windows 11 上设置开发驱动器 | Microsoft Learn ),把 scoop emacs 等装在那里,启动效果明显加速。win下速度慢应该就是病毒查杀的体系搞的。

1 个赞

我在Spacemacs里面实现了load-hints,使得Windows版本的Spacemacs/Emacs-30.1的速度基本可用。

另外还提到优化方法: * doc/FAQ.org: Document for optimizing Spacemacs startup by sunlin7 · Pull Request #16939 · syl20bnr/spacemacs · GitHub

目前在Windows11上Spacemacs/Emacs-30.1的启动速度是

353 packages loaded in 1.529s

一般使用python-lsp-server几乎感觉不到卡顿(大一些python也还是会有卡顿).

3 个赞

最佳解决办法就是wsl2,如果想搞native开发,以下是我的一些个人经验。

  1. IO问题用emacs-lsp-booster可以缓解,

  2. 核心问题是windows defender,建一个开发驱动分区/干脆关了。

  3. emacs内部的话,查看post-command-hook变量,酌情关一些不用的minormode。

  4. 如果completion-style在用flex,在corfu单独用hotfuzz,并编译一个hotfuzz的动态模块。

  5. 其他一些变量设置,随机找个starterkit应该都有,比如下面这种。

		  (setq  eglot-events-buffer-size 0 ); out-dated and we keep this for compability
		  ( setq eglot-events-buffer-config (list :size 0 :format 'full))
   (with-eval-after-load 'jsonrpc
	 (fset #'jsonrpc--log-event #'ignore))

我个人写中型项目是没啥问题的,大型项目卡也是lsp本身卡

1 个赞

问个问题,有双屏及以上,全屏使用wslg的Emacs的吗?我发现开启wsl下Emacs时,如果启动时不在我想要的屏幕上,屏幕间移动wslg窗口极其痛苦,用M-f10全屏的大小也只按最初显示的屏幕大小算。

我也是 Windows 11,每天都在用 Windows Emacs ,目前是自己编译的 Emacs 31.0.50,使用上感觉很流畅,在 corfu的弹窗速度方面我觉得比 Linux下的 pgtk 版本 Emacs 都要好。

至于启动方面,我这边 70个包,启动时间是 0.9 s 左右。当然是很多重的包是设置了 lazyload的,只保留了启动后马上要用的包(比如 vertico consult corfu)是在启动阶段就加载的。

1 个赞

WSLg ( WSL2 默认图形界面支持) 遇到坑的话 (主要是休眠后界面消失) , 可以试试在Windows下安装 VcXsrv 作为给 WSL2 GUI 程序用的 Xorg server 。 24年下半年之前还需要折腾端口转发什么的, 目前的 “WSL mirrored 网络模式” 下几乎是装好就能用了。