Article Image
read

Some people have a code editor they use all their life. Others, like me, jump around a bit depending on the need. I thought I'd share with you what I've found out, as I get asked about this a lot.

The Editors

The editors I've been using, fairly routinely, over the last 5 years are (in no order):

To get this out of the way directly: I switch around depending on the task at hand. For instance, doing .NET work there's really no other choice then to use VS. Well, there's MonoDevelop but I'll get to that later.

When I'm working on Rails it's either Vim (as I love rails.vim) or Sublime Text 2 (I have it set up "just so"). Javascript is really fun with Coda 2 (Vim as well).

Anyway - there are my reasons. You may think I'm crazy but that's the deal. By the way - I'm writing this post on Coda 2 because it's very, very pretty :).

My Go-To Editors

As you might imagine, some of these editors naturally become your "go-tos" - the ones you think of first when editing anything. For me, that's Sublime Text 2 (for non-.NET stuff) and surprise, surprise: Visual Studio for .NET stuff.

"Go-to" doesn't mean I like them, however. Which is an odd thing to write. For instance I find it particularly difficult to apreciate the chrome and overall aesthetic of VS 2012. The washed-out contrast in default makes my eyes hurt, and the over-driven contrast in the dark theme makes my eyes hurt, again.

It has the feeling of little ants shouting in all caps running around the outside of the editor. The code surface itself is wonderful and all the syntax goodies are there. And it's incredibly fast with some great command shortcuts. So, for me, it's a simple deal to get rid of the menus and collapse the explorer, turning VS 2012 into a sprawling, 6-gig text editor.

Sublime Text 2, on the other hand, is extraordinarily light-weight and fast. Command-P is my best friend and split-window editing makes getting to, and changing code fast and easy. This is what you want when shit hits the fan (or when you need to make a quick update) so this is what I use most of all with Rails/JS stuff.

I need to put Vim in here as well. When creating projects from scratch, nothing beats Vim. Nothing. Especially using rails.vim and autotest. THe only reason that it's not a reflex to "mvim ~/tekpub.com" when I need to fix something is that there are 3-4 extra keystrokes that are needed to get to my code.

Sublime Text 2 opens right up where I left off (sometimes annoyingly so, opening up 4-5 different editors all pointing to the same project). I'm sure there's a plugin somewhere that will open up the last file I was working on (and yes I know about ` but, as I mention, that's an extra keystroke) - I just haven't found it.

Yes, I know ST2 has Vim mode - I don't use it because if I want Vim mode I'll use Vim :).

Why More Than One Go-To?

Because Sublime Text 2 is hampered by some weird usability problems. For instance I need to dig deep into config files to change various settings like line-height and font. Renaming files is odd, to say the least, and the code-completion is essentially useless.

The reason it's useless (to me at least) is that when the matchers kick off (say, if you're using Ruby and you're doing #{string interpolation} - the matching brace will kick in and so will code completion if you're using a variable on the page. When you hit TAB, completion is thwarted by the matcher and you have to stop, go back...

The "helpful" Mac thing of "open last file" is a pain in ST2. It likes to open multiple projects at once - often duplicating the one I'm working on.

If you edit a file, then decide to change it's name, the editor will keep the text you've been working on in the current window while renaming the file on disk. This creates a "phantom" file in your current window. If you hit save, that phantom file will be saved into a new document: with the old file name. Very messy.

Real Coders Use...

Vim? When discussing this stuff with a Vim user they tend to let you know about all the plugins they use to get their work done and avoid the issues you're having. It's true - Vim is all about getting your plugins just so. And this is a bit of a religious experience when you get there.

I'm not kidding. You feel like a Buddhist Monk on the edge of Enlightenment - when things start working ... and working quickly... and that file finder plugin rocks your socks. You're fingers are flying, code is blinking in and out of existence and you think you're going to fall on the floor giggling cause you're a Vim Star.

Then the next day you forget the magic keystrokes and you have to stop what you're doing to memorize them again. Then you forget what you're doing altogether and open up Sublime Text 2.

The Other Guys

This is no particular order. Here you go:

Coda 2.

I love this editor. It's pretty and has a whole ton of tools I really like. It supports Ruby/Rails, Node/JS and the CSS editor is stunning. The file navigation is right up there with Sublime Text 2 (if you remap your quick find key to command P) and the ease of creating Code Snippets makes all of this more fun.

What kicks it right over the top, for me, is the way it uses iCloud to sync project settings and code snippets. This feature alone makes this editor wonderful

The downside is that, once again, it's a glorified editor. If I'm going to use an editor - why not use one that's cheaper and a bit simpler to get around in?

For instance, Coda 2's project well changes from "Home" to "Files" to "Navigator" to "Publish". Do you know what those differences are? It's not hard to learn - but it's annoying to have to click your way around to find the clips menu and click again to change the context of the clips menu.

"Files" will sometimes open up on the remote server (using an SSH file browser) which is more than a little scary if you don't know you're playing with the remote server. Which you don't, unless you've trained yourself to check "local" in the status bar or menu bar.

Coda 2 has a number of great aspects though:

Coda 2 Reference Library

  • there are built in "Reference Books" (online docs mostly) for Rails, jQuery, HTML5, CSS, Git, PHP and more. You can select a keyword and find it in the library of the file you're editing. So, if you highlight a Rails keyword like "validatespresenceof" you'll be taken directly to the RDOC (for the latest version of Rails) and you can see what it is and how to use it.
  • snippets are simple to create and work really well. The fact that they sync between machines is epic, and the fact that they can be specific to a project, to a language, or global is even more groovy.
  • Git and SVN are built right in with some interesting visuals. I don't use these, but they're interesting nonetheless.
  • You can pop open a terminal to your local project root or your remote root with ease, and leave it open inside your project. I really like this feature.
  • There's a navigation feature where you can "bookmark" your code, in whatever language, by adding a "!" in a comment. So, if you have a checkout routine that you go to often, you can use # !Checkout Routine (if you're in Ruby) and the navigator will mark that for you, and now you can search for it using Command-P.
  • There are a number of other neat things documented here.

So why isn't this my go-to editor? To be honest it almost is - but it's not created with what I do in mind. It's mostly for PHP devs and their workflow which is grand, but I don't use FTP to push my stuff, I don't use MySQL, and I don't edit on my live server.

RubyMine

This one will be a bit shorter. RubyMine is a fascinating IDE that, basically, is like a VisualStudio for Ruby and Rails. As far as IDE's go, it does what you think it would do:

  • helps you write and run tests. Test::Unit, Rspec, Cuke - you can run them in a nice visual editor
  • fantastic code completion, even with your custom classes
  • wonderful navigation, but doesn't touch Vim when it comes to keystrokes. For instance - if you use ":A" in Vim, you go to the test file for a controller. Use ":R" and you go to whatever view you're editing the action for.
  • gem wireups. Rubymine will check and make sure the gems needed are installed - this is nice.
  • debugging - you can step through using breakpoints etc. Nice, but (personally) this causes me to be lazy about testing. Nothing says you didn't test enough when you have to use the debugger (again, my opinion)

What RubyMine isn't so good at is speed. I don't know how else to say it, but it when you get used to the speed of a simple text editor when it comes to writing text - well you notice any little drag. And RubyMine has some drag. I'm sure I'll get comments about "on my machine" and all I can say is... rock on.

Finally, to me it feels like there are a bunch of super smart geeks sitting in a lab somewhere deciding how I should write my code - and they filled an IDE with all of those neat ideas. Sometimes I like those ideas, other times it just feels a little annoying.

This is a tough thing to put a fine point on - but a language like Ruby is quite stylistic and like many dynamic languages - some people prefer different things.

For instance I like conditional assignments:

my_variable = some_condition? ? setting1 : setting2  

RubyMine didn't like what I did (it might have been the context in which I was doing it, I don't know) and it suggested I initialize my_variable to a value, the conditionally set it later. I was confused - is this a readability thing?

Anyway - the use of braces vs do/end, parens for method invocation - all of these are style discussions various Ruby camps have. Does my IDE need to take part in this?

WebMatrix

The biggest surprise of the bunch as far as I'm concerned. If you need to do Node on Windows, this thing is solid. I'm doing a Backbone screencast currently using WebMatrix and it's quite good. No it's outstanding. The syntax rules are great, it gets out of your way for the most part, and has some very nice plugins for Git and Node that make it compelling.

Not much else to say about it, though. It doesn't really "do .NET" - just a flavor of ASP called Web Pages. Which not many people use in the .NET ecosystem. I frankly don't know why WebMatrix exists - but I do know I like using it.

TextMate

The old stand-by, I've used TextMate for years and years. The project has basically given up the ghost - but even then the text editor is one of the best you'll find.

The downside is it "feels old". No split-window editing, tabs that get out of control quickly, strange file handling - compared to Sublime Text 2 it just seems out of date.

RadRails

I've used RadRails for 2 projects so far and I used to really like it. When it hit version 3 I don't know what happened to it other than to think it was swallowed by Eclipse.

If you like Eclipse, then this won't be an issue for you. Otherwise I found it slow and buggy. In particular when writing code, the code-completion feature made writing feel sluggish, and the background thread proecessing made things feel overall ... like walking with boots caked in mud.

Have You Tried?

Currently I'm trying out Chocolat but the documentation - especially for something you're charging money for is laughable. I can't find out anything about this editor other than it looks pretty, and the command menus are quite readable.

For instance: I had to dig through a wiki to find out that I needed to command-select 2 files in order to get them open in a vertical split. Not sure why there's not a key reference somewhere, or some kind of cheat-sheet that's readily available. Again: they are charging for this and it would be great if basic use could be documented better.

Also I should mention that yes, I've tried MonoDevelop for the Mac and I like it for a few things - however the .NET stuff I do is mostly for screencasts and I need to use VS (unless Mono is the target).

I'm sure you're going to want an opinion on "Editor X" - so rather than ask how about you let me know what you like about Editor X in the comments? I like exploring new editors - you never know when you'll find something interesting.

Blog Logo

Rob Conery

I am the Co-founder of Tekpub.com, Creator of This Developer's Life, an Author, Speaker, and sometimes a little bit opinionated.


Published