Doom Emacs on Ubuntu Linux 尝鲜
Ping Zhou, 2022-05-21
Doom Emacs简介
Doom Emacs 是一个 Emacs 的配置框架,相比原厂的 Emacs 配置,Doom Emacs 提供了更方便完善的默认设置,预装了常用的包,并且提供了一个很容易自定义的框架。同时,Doom Emacs 启动速度也很快。最近在 Ubuntu 上试用了一下,感觉不错,正在考虑将我原有的配置移到 Doom Emacs 上去。

注意,Doom Emacs 不是 Emacs 发行版,只是一组 Emacs 配置,你运行 Doom Emacs 时,运行的还是系统上安装的 Emacs。Doom Emacs 需要 Emacs 27.1 以上,如果你的 Emacs 版本太低,需要先升级才能使用。
在 Ubuntu 上安装 Doom Emacs
首先你需要 Emacs 27.1 以上,个人推荐最新的 28.1 ,并带上 native-compilation 。
./configure --prefix=$HOME/local \ --with-native-compilation \ --with-x --with-json \ --with-jpeg --with-tiff --with-png make -j4 make install
根据Doom Emacs的建议,加上 --with-json
可以提高运行速度。安装完成后确保 ~/.local/bin
在PATH里。
此外,还有一些依赖包:
- Git 2.23+
- ripgrep 11.0+
- GNU find
- fd (可选)
最后那个 fd 工具,注意不要跟 fdclone 搞混了,如果你安装了 fdclone 包,会出来一个界面是日文的 fd 程序 :-D 正确的安装步骤是这样:
sudo apt install fd-find
ln -s $(which fdfind) ~/.local/bin/fd
然后根据Doom Emacs官网的步骤:
git clone --depth 1 https://github.com/doomemacs/doomemacs ~/.emacs.d
实际操作的时候,我是把原有的 Emacs 配置目录 .emacs.d
改名,然后创建一个符号连接到 Doom Emacs 的目录:
git clone --depth 1 https://github.com/doomemacs/doomemacs ~/git/doomemacs # 将原有的.emacs.d目录重命名,然后做一个符号连接到Doom Emacs代码库 mv ~/.emacs.d ~/.emacs.d.orig ln -s ~/git/doomemacs ~/.emacs.d
这样可以方便的切换回原有的Emacs配置。
接下来就可以运行安装了:
~/.emacs.d/bin/doom install
安装过程可能会持续一段时间,特别是28.1的话,需要编译elisp到原生代码,所以需要一些耐心。
Doom Emacs配置初探
Doom Emacs 安装完成后,会生成一个 .doom.d
目录,里面存放 Doom Emacs 的本地配置。
原先的 .emacs.d
目录,现在指向的是刚才从git上拉下来的 Doom Emacs 代码库,这个目录一般是不动的,所有的自定义配置,都应该在 .doom.d
目录下进行。
.doom.d
目录下有三个主要的文件:
init.el
主配置文件,选择要激活哪些预装的包。config.el
自定义配置,可以在这里加上自定义的配置,加载需要的包等等。packages.el
包管理,把想要安装的包加在这里。
例如我在 init.el
里激活了中文输入,go,C/C++, Common Lisp等包:
(doom! :input ;;bidi ; (tfel ot) thgir etirw uoy gnipleh chinese ;;japanese ;;layout ; auie,ctsrnm is the superior home row ;; ...... :lang ;;agda ; types of types of types of types... ;;beancount ; mind the GAAP (cc +lsp) ; C > C++ == 1 ;;clojure ; java with a lisp common-lisp ; if you've seen one lisp, you've seen them all ;;coq ; proofs-as-programs ;;crystal ; ruby at the speed of c ;;csharp ; unity, .NET, and mono shenanigans data ; config/data formats ;;(dart +flutter) ; paint ui and not much else ;;dhall ;;elixir ; erlang done right ;;elm ; care for a cup of TEA? emacs-lisp ; drown in parentheses ;;erlang ; an elegant language for a more civilized age ;;ess ; emacs speaks statistics ;;factor ;;faust ; dsp, but you get to keep your soul ;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER) ;;fsharp ; ML stands for Microsoft's Language ;;fstar ; (dependent) types and (monadic) effects and Z3 ;;gdscript ; the language you waited for (go +lsp) ; the hipster dialect ;; ...... )
修改完配置后,运行一下 sync :
~/.emacs.d/bin/doom sync
Doom Emacs 会自动同步配置并安装所需的包,然后重新启动 Doom Emacs 即可。
如果出现问题,可以用 doom doctor 查看:
~/.emacs.d/bin/doom doctor
一般缺少什么包或者工具,用 doom doctor 都能告诉你。
下一步计划:将我原有的Emacs配置(以org文件管理)移植到Doom Emacs。