emacs 在 windows 下的最佳实践是什么?

chocolatey 上的 emacs64 是 25.1 版本的,可以么?

不明白! 为什么不用官网的呢?可能是我用不了太多的功能,没觉得有什么区别

看你要干什么。 我用的sourceforge最新版。 折腾过wsl版本,虚拟机版,cygwin版。 最近又换回了windows原生版。

emacs对我来说的场景

  1. 用Org-mode做日程规划。
  2. web,js,python,goilang等语言的开发。
  3. 打开其他应用的快捷方式。

举个例子: 早上到公司,打开电脑,开机自启emacs,最大化,自动启动org-agenda。 看一下日程,两下空格,打开相关功能或其他应用(自己配置),开始工作。 工作过程中有任何想法,切换到emacs,org-capture记录下来,继续工作。 如此往复。 桌面是不留应用图标的。桌面当成临时文件夹用,需要处理的各种文档,都放到桌面,放满一屏就清理。 有时候也会用壁纸划分一下区域。

我目前觉得这样非常高效。


前一阵为了能把所有开发环境全部整合进emacs,我用了虚拟机版本。可能你还能搜到我水的一篇hyper-v的帖子。 后来,我觉得这是非常极端的做法,就算我真的整合了,emacs只能说和IDE相当,很多功能还是赶不上IDE。所以我就释怀了。如果有好的IDE,就用IDE,从emacs里面写个打开的脚本就ok。

不建议使用Emacs-w64了,因为官方的64位已经很好了,Emacs-w64作为一个历史性项目已经失去了其意义:joy:

3 个赞

我看见一个在 windows 下用 emacs master branch 的 guide,觉得不错:

不过是两年前的,不知道现在还有没有指导意义。

楼主对不起,我回复的不及时,看贴也不仔细,没有仔细看你的主题。从你的回复看出来你很困惑,所以老司机要带一带你233333

我个人推荐用MSYS2作为解决方案,我认为这是现阶段最好的解决方案,后面分析。

1. Git用Windows版的,在/etc/pacman.conf加入如下内容安装这个版本的Git

[git-for-windows]
# SigLevel = Optional TrustedOnly
SigLevel = Never
Server = https://dl.bintray.com/git-for-windows/pacman/$arch

2. Emacs可以用MSYS2仓库里的,也可以自己编译

现在官方有编译指南,是基于MSYS2的,虽然是针对64位的,但也适用于32位。这个指南是在我的编译指南的基础上修改的,现有的指南都是基于我最早的那个指南。有中文版,但有点过时。

3. MSYS2的包管理器是pacman

我见识短,只用过Debian/Ubuntu系列的apt,感觉比那个好多啦。

4. 收发邮件推荐用Mew

5. 用Tramp的正确姿势

Windows平台在nix系统上运行shell,需要在连接前设置explicit-shell-file-namenix下shell的路径(来源),比如(setq explicit-shell-file-name "/bin/bash")。或者用类似下面的代码来实现

(let ((default-directory "/sshx:bandwagon:/root/")
	(explicit-shell-file-name "/bin/bash"))
    (shell (generate-new-buffer-name "*Bandwagon*")))

这样可以不影响本地的设置。

6. 配置字体

因为Emacs的bug,在Windows下用Emacs必须配置字体,否则会卡。配置方法可以看我之前写的Emacs字体设置

优势

  1. 不只针对Emacs,而是模拟了一个*NIX世界。
  2. 支持的Windows版本广(XP勉强支持,之后的Windows都支持),不强制Win 10。
  3. 依托社区而非依托商业公司。
  4. 包管理好用。
  5. 植根于Arch Linux的「少即是好」(KISS)的理念,整个系统精简,如果你用过Arch Linux上手就更快了。

劣势

  1. 资源占用有点大,大约1 G以上的硬盘空间,但比虚拟机小。
  2. 体验肯定比不上*NIX世界,说多了都是泪。具体分为以下的几条。
  3. 因为Windows的路径有盘符(C:),而且习惯上使用\作为路径的分隔,和UNIX世界的习惯/bin/bash不一样,导致打开文件和运行程序出错,更不用说Emacs中有UNIX的路径了。
  4. Windows的字体渲染比Linux世界和Mac系列要差很多,而且,因为Windows下Emacs的bug,导致显示中文非常卡。
  5. 总体来说,Windows没有Linux的那种流畅感,可能是和用户界面的设计有关,可能和键盘重复率限制有关,可能是和程序以及操作系统的API有关,具体原因未知。
  6. Windows不支持TTY和PTY,只能用管道,使得在Emacs中用shell的功能受到限制,比如term就不能用。
  7. 很明显,Windows是没有GNU的一套软件的。MSYS2可以解决这个问题,但也存在问题。
  8. 命令行不能用UTF-8。
  9. MSYS2的一大缺点是,它的体系是两张皮,一套是Cygwin,依托DLL模拟UNIX环境;一套是MINGW,原生Windows程序。而你用MSYS2就意味着你要同时用这两套系统,复杂度增加,比如PATH设置不好就会导致程序无法启动等。Emacs的开发者Eli就很不喜欢这种方式。
  10. Windows的进程模式和UNIX的不同,在Windows下启动程序比较昂贵,比如用Magit使用Git时,Windows就会比Linux下慢很多,进程模式不同就是一个原因。

小技巧

  1. 可以用清华的源加速MSYS2的使用。具体改两个地方就行:
# /etc/pacman.d/mirrorlist.mingw64
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
# /etc/pacman.d/mirrorlist.msys
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch

第一行注释对应要改的文件。

根据这个回复整理了一篇文章,Windows下使用Emacs的最佳实践

12 个赞

你们为什么要用 Mew 呢?Wanderlust 多好啊,纯 Emacs Lisp 不需要装外部依赖,IMAP 也比 Mew 快。

配置实在是搞不懂😭,另外我喜欢POP3不喜欢IMAP。

我也用pop,感觉还是很不错的

个人用msys2, emacs毕竟依赖GNU的地方比较多。我用org-mode比较多,用pacman 下载w64版本的emacs和我mac上的功能基本相当,值得一用。

@Chris 的回答,这个回答可以说相当全面了。甚至分析了 msys2 下使用 emacs 的利弊。对 Windows 下 emacs 用户很有参考价值。

当然,要是能说说具体哪些方面的体验不如 *nix 系统下的 emacs 就更好了。

好比windows的emacs可以直接运行,无需GNU的其它工具,这个就是mingw要干的。但是如果你需要GNU在类似Unix上的工具,比如autotools, 你需要一个Cygwin的模拟层才能做到这个就是msys。但是,我们希望我们的产出不需要依赖msys直接运行。这时候MSYS2就是一个好的选择,有点想homebrew在macos。总的说来,一些是工具,一些是运行依赖吧。个人是这么应用的

谢谢您的建议,我会完善并修改自己回复的。

刚刚我稍微加了点具体的缺点:fearful:

求教, native emacs 能不能和 WSL的 命令行工具配合,比如和 git, diff, 之类的。

WSL 下 magit 速度如何(不知你用不用magit)

@whatacold 快不少。我可能会选择留下来一直用wsl下面的emacs。配置起来太省事了。pdf tools自动安装。。。不需要自己编译。启动速度从20s降到10s。输入法直接使用pyim,连切换中英文都省得自己烦心了。

本地操作,不涉及网络。

项目也就百来个文件吧, magit-status 感觉可能要6 7s ,很影响心情,git 在windows下普遍被吐槽慢。

总结了一下为什么Windows下Emacs会慢

本站用Windows的人不多 各位了解一下就好

我的emacs 25.3在Windows10,现在一些特殊字符无法显示,想问问您的情况

最近一段时间折腾了
原生windows, wsl+debian+emacs, msys2+native编译的emacs 最终还是觉得原生windows
使用了doom emacs的配置
启动时间依次是15s 10s 14s,不知道是不是字体的坑

原生好处除了慢, 目前用起来最方便, 日常就用org记记笔记, git, MATLAB, python, latex等等。现在策略就是开机后打开就不关了,速度还行。

wsl,很丝滑,目前的问题是输入法吧, 再就是和win的文件沟通,
输入法用的org-rime也能凑活吧, rime在中英切换目前感觉还是不太方便, 因为现在用evil-mode,感觉还是不太顺手

msys2 好像是上述两者各取优点? 但是我可能太菜了,按照文档编译emacs 28.1的exe文件有点儿问题
能正常用,比原生win丝滑,但是 --debug-init的配置总是报错,所以没继续研究下去
也是能用的,但是担心哪里会有问题,所以就回退到原生win了

3 个赞