Windows msys2 emacs
之前有介绍怎么在 macOS 安装使用 emacs 。最近有同学问我怎么在 Windows上顺畅的使用 emacs。那就分享下我的安装过程吧。
首先是下载安装 msys2
从项目主页找到安装文件.exe
下载安装 https://www.msys2.org/
假设我们安装到 C:/msys64
然后打开C:/msys64/msys2.exe
对程序包进行整体升级:
pacman -Syu
考虑到 msys2 官网建议使用 ucrt64 https://www.msys2.org/docs/environments/
MSYS2 comes with different environments and the first thing you have to decide is which one to use. The differences among the environments are mainly environment variables, default compilers/linkers, architecture, system libraries used etc. If you are unsure, go with UCRT64.
所以我们就用 ucrt64 版本的 emacs。
安装 emacs 以及需要用到的工具:
pacman -S mingw-w64-ucrt-x86_64-emacs \ mingw-w64-ucrt-x86_64-librsvg \ mingw-w64-ucrt-x86_64-pdf2svg \ mingw-w64-ucrt-x86_64-ripgrep \ mingw-w64-ucrt-x86_64-ripgrep-all \ mingw-w64-ucrt-x86_64-hunspell \ mingw-w64-ucrt-x86_64-hunspell-en \ mingw-w64-ucrt-x86_64-sdcv \ mingw-w64-ucrt-x86_64-mpg123 \ mingw-w64-ucrt-x86_64-emacs-pdf-tools-server
以上是一些基本工具:
- librsvg 在 emacs 中显示 svg 图片
- pdf2svg 在org mode显示 pdf
- ripgrep,ripgrep-all 文本搜索
- hunspell,hunspell-en 英语拼写检查
- sdcv 单词查找
- mpg123 播放 sdcv 以及fanyi.el查到的单词的读音
- emacs-pdf-tools-server 在 emacs 中查阅 pdf 文件
如果需要从org mode导出 pdf 还需要以下工具:
pacman -S mingw-w64-ucrt-x86_64-python-pygments \
mingw-w64-ucrt-x86_64-inkscape
- python-pygments 导出的 pdf 中代码语法高亮
- inkscape 通过 latex 导出 orgmode 的时候,把 svg 嵌入到 pdf 中
还需要 texlive ,请另外从 https://tug.org/texlive/windows.html下载
install-tl-windows.exe
安装 texlive 到 C:/texlive
添加以下内容到~/.bashrc
以可以使用 latex 工具:
export PATH=$PATH:/c/texlive/windows/2024/bin
开发的同学还可以考虑安装开发相关的工具:
pacman -S mingw-w64-ucrt-x86_64-clang-analyzer \ mingw-w64-ucrt-x86_64-clang-tools-extra \ mingw-w64-ucrt-x86_64-rust \ mingw-w64-ucrt-x86_64-python-lsp-server
- clang-analyzer, clang-tools-extra 支持C/C++的语法检查和 LSP (Language Server Protocol)
- rust 支持 Rust 的 LSP
- python-lsp-server 支持 python 的 LSP
如果还需要文件加解密,可以安装 gpg
pacman -S msys/gnupg
注意,不是 ucrt64 的 gnupg,不知道为何,ucrt64 版本的工作不正常。
然后,获取 emacs 配置文件:
cd ~
git clone --recurse-submodules git@github.com:kimim/kimim-emacs.git
cp kimim-emacs/.emacs .
最后,其他的一些工具还需要额外编译,汉语分词:
pacman -S ucrt64/mingw-w64-ucrt-x86_64-make
pacman -S ucrt64/mingw-w64-ucrt-x86_64-gcc
cd kimim-emacs/site-lisp/cns/
git submodule update --init --recursive
mingw32-make.exe
最后,启动 emacs ,mintty bash命令行中输入 emacs
emacs
等几分钟,emacs 下载好 elpa 上的扩展包,就可以愉快地使用 emacs 了。
此外,还可以考虑把 emacs 固定在任务栏:
- 右键选择 emacs 图标,选择Pin to taskbar或者“固定到任务栏”
- 右键点击 emacs 图标,再右键点弹出菜单的 emacs 图标,选择“Property/属性”,然后在“Target/目标”填入:
C:\emacs.vbs
。这样就不会弹出 CMD 命令行黑色窗口了。 - 点击“Change Icon…/修改图标”,选择
C:\msys64\ucrt64\bin\emacs.exe
。这样就就能正常显示 emacs 紫色的 logo 。
emacs.vbs 的内容为:
p = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName) emacspath = p & "\emacs.bat" 'WScript.Echo emacspath 'get absolute path CreateObject("Wscript.Shell").Run emacspath, 0, True
而 emacs 的启动脚本为 C:\emacs.bat
@echo off set HOME=%USERPROFILE% set MSYS_ROOT=C:\msys64 set MSYS2_PATH_TYPE=strict %MSYS_ROOT%\\usr\\bin\\env MSYSTEM=UCRT64 /usr/bin/bash -lc "source $HOME/.bashrc && emacs"
这样可以避免弹出 CMD 终端框。
还有一些性能方面的考虑,可以把用户组设置为缓存,这样 emacs 的启动速度和文件读写速度都会快很多。
首先设置缓存:
getent passwd $(id -u) > /etc/passwd getent group $(id -G) > /etc/group
然后修改C:/msys64/etc/nsswitch.conf
删除 db:
# Begin /etc/nsswitch.conf -passwd: files db +passwd: files -group: files db +group: files db_enum: cache builtin db_home: cygwin desc db_shell: cygwin desc db_gecos: cygwin desc # End /etc/nsswitch.conf