AstonJ

AstonJ

Battle of the Elixir code editors

If you’re anything like me then you’ve yet to come across a ‘perfect’ code editor. Some of them get really close but then their idiosyncrasies become more and more bothersome over time.

Maybe we can use this thread to highlight what you feel each code editor gets right… as well as wrong (maybe that feedback will lead to updates or fixes!).

See this thread for who’s using what.

First Post!

AstonJ

AstonJ

Here’s my view so far (I’ve probably missed stuff so might edit later!):

textmate 2

####What it gets right

  • Still the best looking editor Imo - the font, the letter spacing the line height the padding and the overall design. Nothing has quite matched it in the looks department so far:

https://forum.elixirforum.com/uploads/default/original/1X/ac9701fc23e9cf71f698a62e2e10ced0df45cbcd.png

  • I also like how you can use the standard Mac shortcuts for things, like CMD and the right arrow key to jump to end of line, left to jump to start, up to top down to bottom. CMD and ] to indent line or selection, etc It just feels right when using it on a Mac.
  • Fairly decent Elixir support

####What it gets wrong

  • No split windows (they said it was coming, but never did!)
  • No auto-complete (or rather, auto-complete-as-you-type)
  • No terminal windows

#MacVim

####What it gets right

  • Quite a lot, and it’s definitely the second best looking (on a Mac anyway).
  • You can also use many of the common short cuts as per TextMate (for indenting etc).
  • Split windows - I love these
  • Modes - though I could live without these if I had to
  • Excellent Elixir support with Alchemist plug-in (tho see below)

####What it gets wrong

  • Can be complicated for nubes
  • I couldn’t get ‘YouCompleteMe’ (the auto-complete-as-you-type plugin) to work :frowning:
  • Good, but still not as good as TextMate looks wise

spacemacs

####What it gets right

  • Again quite a lot, and just behind MacVim on the looks department
  • Excellent Elixir support with Alchemist plugin
  • The learn as you go approach with the spacebar
  • Good terminal support

####What it gets wrong

  • Can’t use Mac (CMD) shortcuts for indenting, jumping to end of line etc, even with the Mac version of Emacs (as far as I know anyway)
  • Can’t use ALT + 3 for the hash key (instead have to map and use the right hand side ALT key with 3)
  • Can’t TAB after def, name , args to jump to next line (like you can with MacVim+Alchemist

#Others I tried but didn’t really like

Atom, Sublime Text, Visual Studio Code

#Others I want to try

Plain ol Emacs :003: (and maybe IntelliJ)

Most Liked

jdumont

jdumont

Atom

####Right:

  • Well supported with plugins and themes
  • Can provide something very IDE-like
  • Doesn’t take additional brain-power to use (keyboard shortcuts)

####Wrong:

  • Memory hog
  • Splits are really unintuitive having used tmux/vim/spacemacs/etc

Neovim

Right:

  • Modal editing, once you’ve used it, you’ll feel crippled anywhere you can’t use it
  • Plugins: can find (or make) a plugin for almost anything
  • Non-blocking actions with Neovim
  • All the other Vim goodness…
  • Fast to start (I’m looking at you Atom & Spacemacs)

Wrong:

  • Plugins: confusing to configure when you’re starting out, or trying something new
  • Buggers up Phoenix’ live reload., due to Neomake. Live reload is more important to my workflow, although Neomake was a revelation when I first added it.
  • Extra brain cycles required whilst you’re learning either Vim or the project at hand. I still find Sublime/Atom easier to hop around and get to know a codebase

I’ve used Spacemacs, Sublime, Webstorm (et all), VS Code. Didn’t really like any of them. Special mention for Coda though - anyone remember how cool that was?

sztosz

sztosz

I’ve heard that argument over the years many, many times, and am still waiting for it to happen :wink:

cmkarlsson

cmkarlsson

META NODE: A quick comment which turned into many paragraphs. I am getting old :confused:

The easiest way to ensure that you will, is to constantly
use Vim keyboard shortcuts.

I attribute vim keyboard shortcuts for saving me from any carpal tunnel
syndrome or other problems. Before I went full vim on everything (i3wm,
mutt, vimb browser, vim, vi-mode in shell) I had much more problems with
muscles in arm and back, reaching for the mouse all the time instead of
keeping my hands on the home row where they are supposed to be. Nowadays
my body like me better.

Also, I try to rely on tools which hopefully wont change to much. I was
going to say that “This lets me focus on developing rather than adapting
to new tools” but I don’t actually focus on development anyway so it is
not a good point :slight_smile: At least I don’t have to spend energy to change my
tools for no added benefit.

I think everyone wants development to happen in their own particular
field (me included) but that overall most people do not want drastic
change. Looking at the success of Windows XP for example I think most
people still would have preferred to use their old tools. And to be
frank I don’t actually think end user software has actually improved
much in the past 20 years. I think software has become victim to the
markets in that you need to have a new shiny thing to be able to sell
it. The easist thing to change to make something look better is to
change its apperance.

20 years ago I used emacs, gcc, vim, Word, Excel, Netscape or
IE. If you compare them with today not much has actually changed I can
easily do whatever I do today with yesterday tools. The extra hardware
we have today is eaten up by sluggish software. The one thing that has
changed is improved internet speeds and the ability to use “cloud”
storage and the like.

I’ve used the same setup for over 10 years and I hardly have to change a
thing. This let me master my tools. Who cares if learning curve is hard
if you invest over such a long time. The important thing is that you
actually can become a master of the tools. Most things today are
developed for beginners and that is where things stop. The tools wont
allow you to become better, it is all sacrifised to be beginner
friendly.

To tie this back into editors: I use vim :slight_smile:

Last Post!

sztosz

sztosz

But you don’t do serious code editing on the server, do you? And for simple edition you need to know what i does, along with :q and :w And that’s all :slight_smile:

Beside, if anyone is giving you access to fresh instalation of os on server, then probably you are not mere “software developer” but also a “dev ops” guy, and if so, not knowing how to make simple edit of a text file is least of your problems :stuck_out_tongue:

Where Next?

Popular in Discussions Top

restack_oslo
Hello, Please pardon me for any faux paux. I am 46 and this is my first time on a forum of any kind. I wanted to to get answers from tho...
New
Crowdhailer
I’ve been hearing much about the new formatter and it’s something I have been keen to try. I find examples buy far the most illuminating...
248 19814 150
New
New
gausby
I asked this very same question on twitter and got some interesting feedback, but I thought it would be a good question to ask here as we...
1207 40165 209
New
marciol
Please, let me know if this kind of discussion already took place in another topic . Hi all, how do you consider if is better to build ...
New
saif
Hello everyone, Long time lurker first time poster here. I’ve recently begun working on Elixir full-time again! :raised_hands: It’s been...
New
matthias_toepp
I’d love to hear what people think about Wisp, the new Gleam web framework started by Gleam’s primary creator Louis Pilfold. Gleam, alon...
New

Other popular topics Top

rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list. ...
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 records...
New
hariharasudhan94
Lets say I have map like this fetching from my database %{"_id" => #BSON.ObjectId<58eb1a7a9ad169198c3dXXXX>, "email" => ...
New
aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
dblack
I’ve got an issue with an app and I’ve no idea of how to troubleshoot it. I’m hoping someone here might have seen something similar. I p...
New

We're in Beta

About us Mission Statement