VS Code has nothing on Emacs

https://unsplash.com/photos/vc3iVL_znJ8

1. Org Mode

You’ve probably seen/used Markdown before. Org mode has a similar syntax and is also supported by GitHub READMEs, but unlike Markdown it has one specification and it doesn’t have hundreds of flavors.

Keep reading to see what can actually be done, or skip to the following sections:

  • 3. Export Org to presentations and documents.
  • 5. In-editor LaTeX preview.
  • 6. Org agenda
  • 9. Executing code blocks.
  • 11. Org tables.

2. Vim Bindings

Doom Emacs has great Vim bindings, and so, so many great leader features out of the box.

Unlike VS Code, the Vim bindings plugin isn’t terribly slow, it feels as fast as native, not to mention that they work everywhere; the terminal, opening files, search and replace, and much more, but more on that later.

3. Exporting Org to Presentations and Documents

Thanks to many Org mode extensions, you can export your documents to:

And the conversion process is almost instantaneous.

reveal.js preview

4. Searching Inside of Emacs

Swiper can be used to fuzzy search inside of files, with highlighting of the selected lines in real-time.

SPC s s

5. In-Editor LaTeX Preview

You can press C-c-x-l or Enter to preview your LaTeX code in the editor itself (provided you have TexLive installed):

You no longer have to preview your notes in LaTeX

6. Org Agenda To-Dos

Adding new to-dos

Emacs let you add new org-mode tasks with Alt+Shift+Enter along with the following:

  • C-c-d to add a deadline.
  • C-c-s to add a scheduled date.
  • C-c-t to change/toggle the state of the tasks (e.g. TODO, DONE).

Viewing your agenda

You can set this up to include your iCalendar file for your university timetable, current to-do tasks, or even repeated habit tasks.

SPC o A a to show your org agenda

7. Integrated Terminal

Toggle the terminal without terminating the command

“SPC o e” to toggle the terminal

Resize the terminal with your mouse

But even if you can, it doesn’t mean that you should

8. LSP Support

I know, these features are covered by most other decent editors, even Vim (contrary to the popular belief that Vim is only good for editing basic text/scripts), all thanks to Microsoft introducing the LSP standard.

Jump definitions

  • Local definitions
  • Globally defined definitions
Jumping to definitions with “gd”

Folding/unfolding code

You can toggle za, open zo, or close zc a section of the code.

Fold/Unfold code with “za”

Autocomplete

Emacs also has exceptionally fast autocomplete support thanks to its polished LSP extension.

Autocomplete (using company-lsp)

9, 10. Executing Code Blocks and Code Symbols

Org-mode allows you to execute code blocks of languages such as Lisp, Python, Bash, JavaScript, and even allows you to save session variables between code blocks.

Also, notice the symbols that replace common keywords. This is what pretty code does in Doom Emacs.

C-c-c to output the results

11. Org Tables

Tables are automatically formatted for you, so you don’t have to deal with those ugly, unaligned Markdown tables.

TAB to go to new column, ENTER to go to new line

12. Zen Mode

In Doom Emacs, you can toggle zen mode with SPC t z. It simply centers your code, makes it slightly bigger, and replaces some of the text with a sans-serif font to improve visibility.

14. Magit — Best Git CLI I’ve Ever Used

It can do so much that instead of trying to show everything in this article, you should definitely just watch the above video instead.

TL/DR; stage, unstage, branch, push, pull, commit, and more, all from your editor, just a few keystrokes away.

In Doom Emacs, Magit can be launched with SPC g g.

15. Commenting Out Multiple Lines

You can simply use M-; to toggle comments on the selected lines.

M-;

Bonus: Resource Usage

If you often run low on RAM despite using Linux and a low-end desktop environment, you might notice VS Code using more RAM than your operating system itself. Emacs, although more heavy than Vim or Nano, is miles ahead of VS Code or IntelliJ.

If you haven’t already, I would personally recommend Doom Emacs, as pure Emacs out of the box is simply bad.

However, if you’re not that into Vim bindings but you still want a great out of the box experience, try Centaur Emacs.