Getting Started with Doom Emacs

Everything you need to go from zero to productive.

01

What is Doom Emacs

Doom Emacs is a configuration framework that sits on top of GNU Emacs. It bundles curated defaults, a declarative module system, and a command-line interface (doom) so you spend less time configuring and more time coding.

Doom is not a fork — it is GNU Emacs, enhanced with lazy loading, opinionated keybindings, and a community-maintained collection of over 150 modules. Whether you are coming from Vim, VS Code, or vanilla Emacs, Doom gives you a head start without locking you in.

Doom stands out because of its speed. Cold startup is roughly 0.4 s — often three times faster than a hand-rolled config with the same features.

02

Basic Config — Understand the Three Files

Doom keeps your personal configuration inside ~/.doom.d/ (or ~/.config/doom/). There are three files you will touch daily:

init.el Core

This is where you toggle modules on and off. Doom reads this file to decide which features to load. Open it with SPC f p inside Doom, or directly in your terminal.

packages.el Packages

Declare extra packages here using (package! name). Doom installs them the next time you run doom sync. You can pin packages to specific commits for reproducibility.

config.el Custom

Your personal Elisp goes here — keybindings, theme selection, hooks, and function overrides. This file is evaluated after all modules load.

03

Enable Your First Module

Doom ships with everything disabled by default. You pick exactly what you need. Open ~/.doom.d/init.el and uncomment the modules you want.

;; ~/.doom.d/init.el
 
(doom!
  :lang
    python    ; +lsp +pyright
    markdown ; writing docs
    rust      ; +lsp
)

After saving changes, run doom sync in your terminal. Doom will install the language server, treesitter grammar, and any companion packages automatically.

04

Basic Keybindings You Will Use Every Day

Doom uses SPC (Space) as the leader key in evil-mode. Every command is a short, memorable sequence:

SPC f f Find and open any file
SPC b b Switch between open buffers
SPC s p Search entire project with ripgrep
SPC p p Switch to a different project
SPC h f Look up documentation for any function

Press SPC and wait — Doom will show a popup with all available keys. This works at every level, so you never need to memorise everything upfront.

05

Doom Commands You Should Know

Doom includes a CLI that lives at ~/.config/emacs/bin/doom. Add it to your PATH and run these whenever needed:

doom sync

Run after every change to init.el or packages.el. Installs missing packages, removes orphans, and rebuilds caches.

doom doctor

Diagnoses your environment. Checks for missing dependencies, misconfigured tools, and common mistakes. Run this first when something feels wrong.

doom upgrade

Updates Doom itself and all installed packages in a single atomic operation. Safe to run at any time.