虽说是小技巧可能有点长,以下内容根据我的一条回复扩展而来的。

Windows下使用Emacs的最佳实践就是用MSYS2作为解决方案。安装MSYS2略去不讲,基本使用也不讲,说说和Emacs有关的。

几个具体问题

1. Git用Windows版的

/etc/pacman.conf加入如下内容安装这个版本的Git:

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

因为两拨开发者没有合作,所以MSYS2里面没有原生Windows的Git,必须安装这个。

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

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

3. MSYS2的包管理器是pacman

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

4. 收发邮件推荐用Mew

5. 用Tramp的正确姿势

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

1
2
3
(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. 性能尚可,但应该比不过虚拟机Linux,因为Linux+Emacs有神秘加成😂。
  6. 植根于Arch Linux的「保持简单」(Keep It Simple, Stupid)的理念,整个系统精简,如果你用过Arch Linux上手很快。

劣势

  1. 资源占用有点大,大约1 G以上的硬盘空间,但比虚拟机小。
  2. 体验肯定比不上*NIX世界,说多了都是泪。
  3. MSYS2的一大缺点是,它的体系是两张皮,一套是Cygwin,依托那DLL模拟UNIX环境;一套是MINGW,原生Windows程序。而你用MSYS2就意味着你要同时用这两套系统,复杂度增加,会带来问题,Emacs的开发者Eli就很不喜欢这种方式。

小技巧

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

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

几句闲话

在Windows下玩Emacs很折腾,也有点浪费生命。事实上,玩Emacs本来就不见得是多么高效的事情。最高效的方式是,什么事都不自己做,当老板指挥别人做(好像有介绍这一观点的书,似乎叫远离电脑还是什么,或者看最近我写的文章)。可我们为什么还要折腾Emacs,为什么又要在Windows下用Emacs呢?

因为我高兴。

记住这一点,Happy Hacking,虽然是在有些蹩脚的环境中。