What Editor Do Rubyists Use?
Well, youâve decided to learn Ruby, have you? Thatâs great! Ruby is a wonderful language that aims to make programmers happy. Go for it! As you enter the world of Ruby you realize, âI need an editorâ. OK, Google, find me the best Ruby editor.
Holy smoke! There are a ton of editors, each with a community that swears by its features. âUse vim!â âUse Emacs!â âUse TextMate!â âUse Sublime Text!â. You recoil in fearâŠ.what if you make the wrong choice???
This short story, which likely applied to many Rubyists, inspired me to interview established Rubyists about their best Ruby editor. If nothing else, this will show which editors are used by more Rubyists, with some data as to why. My hope is that it will serve as a guide for newcomers to Ruby, or possibly even those already working with Ruby, on which editors are popular.
I spoke to 100 Rubyists. The interviews brought up the following editors (given in order of preference):
- Vim
- Sublime Text
- Emacs
- Atom
- TextMate
- Sakura
- Pico
Vim was, by far, the most preferred editor, being utilized by 50% of the interviewees. The charts below tell the tale:
I spoke to two of the most well-known Rubyists: Yukihiro Matusmoto (Matz) and David Heinemeier Hansson (DHH). If you donât know, Matz is the creator of Ruby as a language, and DHH is responsble for Ruby on Rails. Matz prefers Emacs, while DHH uses the original version of TextMate. I find it very interesting that two pillars of Ruby donât use the most popular editor, surely something to consider when choosing your toolset.
Regardless, Vim wins the Most Used Ruby Editor award for my sample set. Vim was written by Bram Moolenaar, and first released to the public in 1991. Thereâs no end to the articles about Vim on the web, including two very good ones here on SitePoint. Islam Wazery penned Getting Started with Vim and Effective Rails Development with Vim, both worth reading if you are choosing the beaten path.
But, what is it that makes Vim so special? Well, the answer is âmany, many thingsâ. I will pick a couple of items from an article called Great Vim Features that consists of contributions from many Vim users to try and drive the point home.
Stephan Houban states that one of the features of Vim he loves is the macro feature. At first glance, this feature may not seem so special. q[letter]
starts recording a macro, a second q
terminates it. The macro is invoked my typing @[letter]
.
But, thatâs just when the fun starts. Letâs say I want to create a macro that does the following: Go down one line and replace the first and the second word. Using standard Vim commands, this can be expressed as: j^dwwhp
Recording this sequence into a macro called @a
is done as mentioned previously. Now, you can repeat the macro for all the lines in the file, if you like. Not bad!
Stephan Thorn comes in and says, âThis is nice, but the idiom can be improved immensely using :g.â
For example, youâve got a macro for changing the second word on a line to âfooâ qb^wcwfoo<esc>q
(man, that looks weird to type). Now, visually select a block you want to perform the macro. Donât yank the selection, though, instead press :
, which will place you into command mode for the selected block (the command line looks like :'<,'>
, marking the start and end of the visual block). Then, append g/^/normal @b
, so the command line looks like:
:'<,'>g/^/normal @b
(Note: This presumes the macro you recorded was saved with the letter âbâ.)
This will execute the macro for each line in the visual block. Complex to explain, but itâs surprisingly quick once youâre familiar with visual mode and :g/
.
Another contributor in that article compares some features with Emacs:
âIMHO, the single most useful feature of VI which Emacs does not have (AFAIK) is the . (dot) command, which repeats the previous operation. (i.e.: previous insert, replace word, delete word, âŠ). It makes you appreciate why VI is a modal editor.â
(Itâs worth noting that Emacs users have responded to this claim, which is another reason to read it.)
Finally, I would like to highlight another comment about someoneâs preferred features in Vim:
I definitely appreciate the following features of vim:
- unlimited undo
- editing the history of ex commands (issue some ex commands, press : and use the arrow keys)
- editing the history of search commands incremental search
- persistent marks
While Vim has a commanding lead in numbers, that is but one consideration. Do you have an opinion? Love Vim? Use Sublime Text? What is your best Ruby editor?