What is the best IDE for elixir?

I would like to know what is the best IDE for elixir development?


So the editor easily got out of control and I wanted to remember to persist this data so there’s a public gist on it:


thanks man , i prefer to use atom and VSCode


Gotta say, I ended up discovering proton-mode package for atom, which wipes out your atom config and loads a kind of spacemacs, which is been perfect for me because solves 2 problems:

  • Atom likes to crash, too much, even on a crazy Hackintosh setup which can handle like 100 open tabs on chrome lol.
  • I want to learn vim/spacemacs for productivity, but the terminal-based counterparts are to terse for me to learn. being able to mix and match my already learned OS/App shortcuts/ux, but at the same time have vim mode-plus (i for insert, etc) and space-macs like for shortcuts (I ended up editing my .proton file to add some extensions I wanted and change theming and Editor settings)

Check it out on GitHub proton-mode

My ~/.proton ended up looking something like this:





I just use TextMate with the Elixir bundle.

1 Like

Also see this thread:

From that poll, it’s kinda hidden because of some semi-separation in the vim community, but if you add up: vim: 14%, spacemacs evil: 12%, neovim: 7%, macvim: 2%, it looks like over 1/3 of the respondents to that poll use vim-based keystrokes.

1 Like

Yeah, there was a little debate on whether to count SpaceMacs (Evil mode) as Vim or Emacs.

Atom 24%
Vim and derivatives 23%
Vim and derivatives AND SpaceMacs (vim mode) 45%

Emacs 5%
Emacs and SpaceMacs (emacs mode) 7%
Emacs and both SpaceMacs modes 19%

Either way there’s no denying how popular Vim and it’s keystrokes are - almost half of users prefer it.


Obviously couldn’t speak to the best one but I’ve been deep in Emacs for the last fifteen years and other than a few small indentation foibles (some stuff with Ecto.Query) elixir-mode is pretty great. For Elixir (and Erlang) especially I recommend using rainbow-mode as well which colors all nested delimiters slightly differently making it a lot nicer on the eyes when looking at the tail end of a deeply nested literal.

1 Like

VSCode is much lighter than Atom on my Linux Mint.

I use Neovim personally. It’s not an IDE, it’s an editor, but with the plugins available (as someone has posted above), I think it is definitely comparable.

1 Like

I use Webstorm – it’s Elixir’s plugin has the best syntax highlighting I’ve seen.


Similar here…I use RubyMine with KronicDeth’s intellij-elixir plugin. If you are going the full-on IDE route (vs a lighter weight editor with plugins & customizations), RubyMine is hard to beat for syntax highlighting, code insights, graphical debugger, test runner, git integration with fantastic merge conflict resolution tools and tons more right out of the box.

As a bonus, Rubymine has a powerful built-in database tool for working directly with the db(s), which for some reason they do not include in WS or IntelliJ-CE.

vscode with vscode-elixir extension

1 Like

I want to love intellij-elixir because I’m an IntelliJ addict for all my other endeavors. However, there’s just a few things – that I can’t really put into words right now for whatever reason – that just don’t sit right with me. Man would I love that plugin to scratch that one itch I have!

I’ve settled on VSCode with ElixirLS. It’s taken me some getting used to, but it’s best I’ve found as of yet.

…for me.

VS Code with ElixirLS is pretty good, and bonus points the Rust plugin now works pretty well too :wink:


I go with PyCharm. Luke Imhoff’s plugin has the best completion out of the ones I’ve seen.

Interesting, I haven’t seen that yet.

I’ve just been using atom with the relevant plugins.

Atom is a good editor but for the elixir plugin, how does code completion work nowadays with multiple projects open?

1 Like

Not sure, I don’t usually work with multiple projects open.

Even then, I don’t know that I’ve noticed the code completion being that great. Although most of the work I do is web development so a large chunk of my coding is HTML, which I use emmet for.