My ideal code editor :077:

I’ve used vim, spacemacs, atom, vs code but keep landing back at IntelliJ. I use it all day at work so I’m pretty familiar with it and I have a vim plug-in which is pretty good. It’s been working pretty well for me.

I’m learning Elixir and using VSCode for now.

Eclipse is my usual go-to tool, but it’s not quite there for Elixir.

Emacs for coding since 1993. I use vim on servers. Sublime to explore new projects (easy to click and scan code), IntelliJ for anything Java-ish (refactorings and language integration). I’ve used everything else long enough to customize them and understand the pros and cons. Emacs config can be a chore to keep working. Vim plugins crash and hang at weird times. Atom plugins are of varying quality. Sublime/TextMate/intellij are a bear to get lots of editing done in.

I’m using Atom right now because my Emacs is sick, but I swear it’s taking me 3x longer to do large edits and refactorings It’s just harder to get the thoughts into the files. I don’t think it’s muscle memory either. Both emacs and vi(m) were created when you might wait a few seconds between typing and seeing what happened on the terminal, and are those optimized to deal with that efficiently.

My ideal? I want an Emacs/Vim that works better and has a lively ecosystem like Atom and easy code browsing like Sublime (Atom doesn’t do it as well, somehow), but where the plugins don’t break constantly. :slight_smile:

1 Like

i Use Coda but if you want the light one or if you are a starter then use Notepad++, as well.

Unfortunately both does not have a version for Linux. :slight_smile:

1 Like

Whatever editor you choose, learn it well.

And I mean it. Learn it really well, to the extent that you don’t have to think about how to accomplish a task, you can just do it.

And this is a biggest problem with current editors. Instead of first-time setup when you configure everything in simple, but configurable GUI you need to learn shortcuts and edit configuration files manually, sometimes even lerning basics of other languages you will never use outside editor configuration.

1 Like

I’d suggest the opposite is true though.

Surely it’s better to fully understand your editor, rather than get to grips with it quickly, only to come unstuck later because what was going on was abstracted away? In the grand scheme of things, the first half an hour you spend with a text editor is a very small fraction of your total usage over it’s/your lifetime.

I agree, having to learn another language in order to configure your editor should be unnecessary; but I don’t know of such an editor that requires that from the get-go?

If you (using “you” generally here…) need to immediately reach for config/plugins then perhaps either the editor isn’t up to the task, or you’ve missed some of the functionality the editor provides out of the box?

Learning an editor well should take some time, and you should probably invest the same time and energy that you do for a new language. Anything worth learning probably won’t come easily at first, and an editor can stay with you throughout your career, whereas a language is unlikely to do so.

1 Like

If I don’t want to use Emacs or VIM and yes I think they suck, what IDE would you recommend for Elixir and Phoenix. Been using Webstorm but not 100% working, I also use Atom for frontend work but I want something more like Webstorm. At lot of the devs that I know are raving about the new direction Visual Studio is going is anyone using it for Elixir?

IntelliJ IDEA if you are willing to pay their price. For me personally it’s very affordable but I still refused to pay due to their scheme. To pay a subscription to even use an IDE is a bit much for my taste.

I use Emacs for 16 years but thinking back, I never really mastered it. I mean, I know a lot of keyboard shortcuts but never really tinkered deeply with it. I wrote some custom functions and bound them to keys but nothing truly special. And navigating file trees is still clunky (at least when using the neotree plugin). I can try a few more that @amnu3387 mentioned though.

Problem is, as several other people mentioned, I don’t want the editor in my way. Give me sensible defaults and a way to do 100% of my work with the keyboard!

It’s not that I am lazy but I seriously can’t get very excited by tinkering with my work tools as before. Since I am gonna be buying an iMac Pro eventually and 100% of my environment will be Apple, I might as well learn Sublime Text 3… We should not have to tinker just to get things into an acceptable working shape.

I am working on learning VIM and will make a decision whether to keep Emacs or switch to VIM; the latter appeals to me due to its slightly more intuitive keyboard controls – they are basically abbreviations of the human actions (like d for deletion, similar to how sed operates, which I know quite well and love). But we’ll see.

IMO there are no hard rules. If you find yourself constantly sifting through hundreds of files then you probably should invest in editors that streamline that experience (IDEA, Sublime Text). If you find yourself working more deeply and introspectively on a smaller number of files, then Emacs and VIM should be perfect.


Thanks, I have been using Visual Studio Code and I’m really happy with it, in my opinion it’s pretty amazing.


VS Code with the vim plugin is fantastic. I can’t think of any reason for me to go back to vim or space macs.

Neovim, anyone?

Is Neovim as strong for Elixir development as Emacs?

I use projectile for file navigation, never tried neotree.

Although I think it really boils down to whatever works for you and the way you program I disagree with this statement (at least when using projectile, with dire it’s def. annoying). I find it very easy to just hit C-x-C-f and be on the folder where the buffer is, then using Backspace to move upwards and Ret to enter a dir/open a file, C-,/C-. to move between files or typing their name (or parts of their name). I always work with two windows split horizontally, so you can switch between one or other with C-,/C-. . It’s also very easy to have dozens of buffers open in memory and if the file you want to open reside completely in different directories just open the buffer window with C-x-C-b, use C-n/C-p to move up and down or C-s /C-r to search the buffer in a file in that directory and open it, and then search the file file from there. I don’t think I’ve found anything that’s faster than that. YMMV

btw: this is what introduced me to emacs. In the beginning you go through setting up an emacs env for clojure (lisp) so many things you don’t need there, but it also uses those other packages like projectile and so on, that make using emacs quite better than the vanilla version.

I agree, long live Microsoft.

I used emacs and alchemist for quite a while, it’s pretty great because you get good old fast REPL evaluation just as what you typically do with emacs. And the commands are also great and fast, testing, navigation, evaluation etc. Feels like everything is just under your finger tips.

But currently I switched to VSCode because the elixir_ls seems to be working better for me and having better Dialyzer support currently. When the project grows, Dialyzer and it’s integration is something that must have for me.

Atom also support the plugin but not yet with debugger.
Alchemist is adding elixir_ls support currently, and I’m sure I will switch back to emacs when it’s done.

And I also tried Intellij plugin. I use all kinds Jetbrains stuffs for my job. The plugin is great and ambitious. But it seems need more time to be as slick as VSCode and Atom.

Yeah, it’s really fast, but it also have too many cons.

emacs is like awesome Elixir CLI project which needs to have two new endpoints for API and normal rendered pages. Whole buffers topic is something new for typical developer which uses GUI development tools. Shortcuts are powerful, but they should not be forced. Rather than in GUI there would be a tips how to work with it faster.

Anyway I’m simply too much used to work with file tree, tabs and mouse rather than buffers and keyboard shortcuts. Sure there are lots of plugins and its really configurable, but only if you have a time to learn new language for such powerful configuration.

I would rather use long combinations instead of two short combinations. I would like to bind all of my extra G1-G18 keys on my keyboard in few layouts pretty easy in simple GUI and keep simple shortcuts for other things. Instead of that I’m only confused and worry if I did not by mistake do something with something called buffer and then will try to find what happen.

For me the biggest hope is Elixir Native UI which unfortunately is still not yet released. Some people are already talking about writing Elixir-based editor using this library. Such project I can modify pretty easy and fast, because I have no problem with introducing into new project in language I know well, so then I can add anything that I need.

1 Like

Alchemist is adding elixir_ls support currently, and I’m sure I will switch back to emacs when it’s done.

That sounds great! Can you point me to an issue where this is being tracked? Wasn’t able to find any on my own.

Hi, the issue is being tracked here.
It’s being tagged ready for beta, and I guess it’s near :grin:

1 Like

As of last month, VSCode had the best Elixir integration–debugger, compile errors, dialyzer etc. But I just can’t deal with the lack of support for horizontal pane splitting.

So Atom is a close second, no debugger, but great compiler feedback.