高品質EmacsディストリビューションDoom Emacsを使おう
この記事は Emacsを使おう の続編である。 前回の記事ではVimmerにもEmacsをオススメする理由を説明しているので是非一読して頂きたい。
Emacsのディストリビューション
「Emacsを1からカスタマイズをするのが面倒くさい」という人のためにEmacsにはコミュニティによってメンテナンスされているディストリビューションがいくつか存在する。
| Star 数 | コミット数 | |
|---|---|---|
| Spacemacs | 20.5k | 11047 |
| Prelude | 4.4k | 1370 |
| Doom Emacs | 7.7k | 14304 |
これらの実体はプラグインの列挙を含む膨大なEmacsの設定ファイル ( .emacs.d ) だ。
もちろん、そこに自分の設定を加えて更にカスタマイズすることもできる。
Doom Emacs
この記事ではEmacsのディストリビューションとしてDoom Emacsをオススメする。 Doom Emacsの魅力をいくつかご紹介しよう。

hlissner/doom-emacs: An Emacs framework for the stubborn martian hacker
- authorであるHenrik Lissnerの高頻度なコミットとリファクタリングの徹底により、小さいコミュニティであるにも関わらず機能と品質でSpacemacsをする
- Spacemacsの素晴らしいコンセプトを受け継いでいる
- Mnemonic, 覚えやすいキーバインド
- Discoverable, 発見可能なキーバインド。
ほとんどのキーバインドは
SPCから始まり、困ったときはSPCを押すとガイドが表示される。 コマンドからキーバインドを逆引きすることも可能。 (SPC :) - Consistent, 一貫したキーバインド
- Crowd-configured, コミュニティ開発
- Doom Emacs独自の素晴らしい設計思想のもと設計されている
- Gotta go fast, スタートアップ時間とランタイムパフォーマンスの両方を最適化。 Spacemacsと比べスタートアップ時間が短い。
- Nix/Guix is a great idea!, 宣言的で再現性のあるパッケージ管理。 全てのプラグインはコミットハッシュで固定されており、プラグインの最新revisionのアップデートがDoom Emacsの設定や他のプラグインとの強調動作を壊すことがない。 また、Emacs 28のnative compilationにも対応する。
- Doom Emacsのカスタマイズは
~/.doom.d内に記述してバージョン管理できる
Doom Emacsのインストール
Doom Emacsのインストール方法は、公式のマニュアルとインストーラが充実しているため割愛する。
doom-emacs/getting_started.org at develop · hlissner/doom-emacs
Doom Emacsのモジュールシステム
Doom Emacsの設定の基本となるのがモジュールとフラグだ。
~/.doom.d/init.el に、有効化するモジュールとモジュール固有のフラグを設定していく。
(doom! :lang
(python
+lsp
+poetry))これはPythonのサポートに加え、言語サーバのサポート ( +lsp ) 及び Poetry サポート ( +poetry ) を有効にすることを宣言している。
Vimからのお引越しであれば、Doom EmacsでVimのキーバインドが使えるよう :editor evil モジュールを有効化しよう。
(doom! :editor
(evil +everywhere))+everywhere フラグは、ファイラなどのツールバッファでもVimのキーバインドが使用できるようにするためのものだ。
この設定を保存した後に
~/.emacs.d/bin/doom syncを実行すると、まだインストールされていないパッケージがインストールされる。
利用可能な全てのモジュールは docs/modules.org に列挙されている。
Doom Emacsは既に非常に多くのプログラミング言語や開発ツールがサポートしている。 これら全てのモジュールに深い知識で携わっているHenrik Lissnerさんの凄さが伺える。