Getting started with Doom Emacs — A great transition from Vim to Emacs

A photo of what my Emacs looks like.

So you just installed Emacs(make sure it’s 26+!) and you want to see what all the fuss is about. Why should I use this instead of my vim/vscode/atom? While not only is Emacs extremely snappy, you can do *anything* in it — Doom Emacs even uses vim keybindings!. If something isn’t how you like it: the window opens on the wrong side, this character should place a closing character with it — that’s all fixable and programmable. The secret to this is Emacs is built on Lisp. While it looks scary, it can basically be boiled down to (function argument argument argument).

Getting started with Doom Emacs is dead easy.

[aria@Uranium ~]$ git clone https://github.com/hlissner/doom-emacs.git -b develop ~/.emacs.d
Cloning into '/home/aria/.emacs.d'...
remote: Counting objects: 45143, done.
remote: Compressing objects: 100% (273/273), done.
remote: Total 45143 (delta 402), reused 556 (delta 376), pack-reused 44494
Receiving objects: 100% (45143/45143), 11.97 MiB | 1.26 MiB/s, done.
Resolving deltas: 100% (31322/31322), done.
[aria@Uranium ~]$ cd .emacs.d
[aria@Uranium .emacs.d]$ ./bin/doom quickstart
Installing core packages

And let it run! Now, depending on your internet this could take from 2 minutes to 25! It’s downloading all the packages you need to get on your feet.

All done? Great! Launch up Emacs and hit M-x (Alt + x), type all-the-icons-install-fonts and press enter. This will install the icon font, so emacs doesn’t look like ass with massive icons everywhere. Now we’re ready to get started!

Press SPC-.to open the file chooser. Our first step would be to edit our config. While you can navigate to ~/.doom.d/init.el with SPC-., you can also use SPC-f-p to search your ~/.doom.d for files and select one. Select init.el and we’ll take a look!

Most of the defaults are pretty great, but if you scroll on down to :tools you may want to uncomment (remove the ; ) Magit. Next scroll down to :lang and uncomment the languages you want. These days I’m mostly a Javascript developer, so my first bet is to uncomment that, as well as web. Some modules have documentation so you can hit SPC-h-d when highlighting over one (or just type it out) to get some documentation. If there isn’t any — No worries! It’s a work in progress right now. Once you’re done editing the file, go to ~/.emacs.d and run bin/doom refresh to download all the new packages, then restart Emacs. I’ll mention this at the end too, but you can join the doom Emacs Discord chat, and we’ll happily help you.

The config file

Some handy ways to get around:

  • To navigate wherever you want to go, hit SPC-f-.
  • If youre in a project you can search for the file name, instead of going through paths, via SPC-p-. or SPC-SPC

Looking through some lisp and don’t know what the hell something does? Put your text cursor over it and hit SPC-h-. . This is one of the main features of Emacs, and why it’s described as “self documenting”. Literally anything you see, SPC-h-. will give you the user’s docstring, show you where it’s called from, and let you jump straight to the file where it’s defined and read the source code yourself.

If you need any help, don’t forget to check out our friendly Discord channel! And, if you want, you can check out my config for some examples!