IDE vs text editor

on May 10, 11 • by Alen Zukich • with 8 Comments

I’m sure this topic has been discussed a million times, but hey, here we go again.  A recent question came up on whether people liked their experience of Eclipse vs. Visual Studio.  Of course this brought up the advantages of one versus the other.  But is that really a fair comparison? It really depends. ...

Home » General Coding » IDE vs text editor

I’m sure this topic has been discussed a million times, but hey, here we go again.  A recent question came up on whether people liked their experience of Eclipse vs. Visual Studio.  Of course this brought up the advantages of one versus the other.  But is that really a fair comparison? It really depends.  What type of application are you building — a native Windows application?  Surely going with Visual Studio makes sense. But if the goal is cross-platform, then you might look at Eclipse.

Glad to see people are thinking about IDEs, but what really intrigues me about this conversation of one IDE versus another is that someone always has to add their two cents about the ancient text editors of the world.   Something like “real programmers use vi”.  Hold the phone.  Are we talking about the same text editor that requires you to memorize a gazillion key bindings?

I don’t get this.  I understand legacy use, as vi was the only available built-in text editor at the time and still is the only choice of hackers today.  But times have changed.  Anyone I’ve talked to who is using vi (or other known text editors like emacs) always seems very proud of it.  Maybe knowing how to use such a complex tool provides some self-worth.  I just don’t know.  Seems like it would be the same as me bragging about my portable Walkman or the 8-track player in my car.

Don’t the features of Visual Studio or Eclipse make you faster?  With a click of a button you can refactor your code.  With simple auto-completion the IDE eliminates simple typing (or even mistakes).  Plus with built-in tools for static analysis, test generation, etc., what are you waiting for?

So you vi/vim/emacs coders out there — tell me why on earth you are sticking with it. What makes you a better programmer using vi/vim or emacs?

Related Posts

8 Responses to IDE vs text editor

  1. John Suykerbuyk says:

    I spent the first 10 years of my software engineering career bound to various IDE’s from Delphi / C++ Builder, Visual Studio, and Eclipse with an occasional reprieve via SlickEdit. Scattered throughout that time I had to develop for a 32-bit DOS environment using DGJPP and the “Raw Hide” editor (modeled after the old Turbo Pascal editor). While RHIDE was awkward to learn, I was impressed with how fast it was on everything.

    A couple of years ago, I took a job working on FreeBSD. Nearly all work was done through SSH connections and after 3 months of resisting, I finally embraced VIM. It has been perhaps the most profound path of discovery I’ve known since learning “C” in the 90’s.

    These days I lament every situation that I have to go “back” to heavy, slow, mouse driven GUI IDEs.
    Klocworks would do well to embrace technology and paradigms that have passed the tests of time.

  2. Josh says:

    Also, I know one thing some people like to use when I bring up the remote editing argument is that many IDEs support opening and saving files over SFTP/FTP. How well does that work when you have to log into a gateway, then into two or three more machines to access the files you need to edit? Routing sometimes does not allow direct access to the files you want to get to (usually as part of corporate policy), and this is something I’ve yet to see an IDE user do. Again, might not be a particularly convincing argument until you’ve had to deal with such a situation.

  3. Josh says:

    I agree 100% with Jonathan. He and I are pretty much in the same boat–used to be IDE users, took the challenge to learn/use vim, haven’t turned back since (though I do still occasionally fire up newly-released IDEs just to poke around). One thing I think is worth adding to Jonathan’s comments, and to which you alluded in your own post, is that you can easily fire up vim/emacs on a remote system over SSH and still be as productive as if you were sitting right in front of the remote machine.

    That one capability is what makes my “working from home” experience so much more productive than all but one of my co-workers (she uses vim too). Everyone else is stuck using GUI-only editors or IDEs, which means they have to (remote desktop into their machine|make sure their dev box allows X forwarding, start up a local X session, and SSH into their dev box with X forwarding enabled), fire up their editor/IDE, then deal with the network lag of redrawing the UI widgets. I simply SSH into my dev box and fire up vim. My experience is identical to when I’m sitting right in front of my machine in the office, less a minuscule amount of network lag (depending on how many YouTube videos my wife is watching while I work).

    On the same note, when I need to edit things on my web server or any of my friends’ servers, vim is always there, and getting my preferred configuration is as simple as downloading a single file from the Internet. I can also download my home-grown plugins just as easily. This may or may not be a valid argument for others, but with the amount of remote work I do, this is certainly more than enough for me to happily use and recommend vim day in and day out.

    Don’t let the UI get in the way or your work. :x

  4. Dave says:

    Just my $0.02, but the article seems to assume that Eclipse and Visual Studio are “full featured” whereas vim and emacs are “minimalist”, where in fact the opposite is true. There is not one IDE feature mentioned that vim or emacs cannot do.

    IDEs are often geared towards beginners and are very easy to learn. A text editor is a professional tool with a learning curve to match.

    To understand the merits of a text editor you need only to spend 5 minutes watching a vim user and 5 minutes watching a IDE user. There is no comparison in the speed and flow.

  5. Jonathan says:

    You’re absolutely right, it’s incredible that these “ancient text editors of the world” are still in use. But here’s a different way to look at it: how many competing tools have come and gone in the lives of these tools? The fact that they’re still here and used by millions of people means one thing: these are very good tools. Can the IDEs of today expect to enjoy such great longevity? Probably some of them; definitely not all of them. Besides, these text editors are actively developed and updated. So in a sense they are as new as any other bit of code that is actively maintained. What counts for a project is not the time of its first contribution, but rather the time and frequency of its most recent contributions, right?

    But don’t you have to “memorize a gazillion key bindings?” Nope. You memorize key bindings as you see fit, the same as in an IDE. But don’t you find that the key bindings you have learned in your IDE make you more productive? Doesn’t it follow that with more key bindings comes greater potential for speed? Powerful tools can take a lot of work to learn; certainly a pencil and paper is easier to learn to use than a computer, but of course you can do a lot more with a computer.

    But “don’t the features of Visual Studio or Eclipse make you faster?” Absolutely. There are some really great features in both of these tools. But what if you think of a feature that your tool doesn’t have? You have 2 options: you can wait for the developers to create the feature for you, or you can write a plugin that includes the feature yourself. The same thing is true in a good extensible text editor. But here’s the difference: I’ve never met an IDE user who regularly creates plugins that improve their productivity; on the other hand I’ve never met a regular text editor user who *doesn’t* regularly extend their editor with new features. Configuring and extending both vim and emacs is insanely easy, especially compared to the methods of extending most IDEs. Of course this isn’t for everyone. Plenty of developers are happy with what the IDE gives them and don’t want to be bothered with adding new features to their tools.

    On to the big question, “What makes you a better programmer using vi/*vim* or emacs?”

    1) Extensibility. The other day I thought it would be nice to be able to wrap the currently selected text in an html tag with a hotkey. 5 minutes and 15 lines of VimScript later I had my hotkey. Last year I wrote an autocomplete plugin in vim for a language that has no IDE (with or without autocomplete). I think this explains the pride you spoke of. When you take a core editor and exend it and make it your own, you’re bound to feel some pride in it.

    2) Uniformity. IDEs usually target one programming language, and not all IDEs are the same. So if you work with several languages, you could end up in a situation where you are less proficient than you could be because you have to work in more that one environment.

    3) Simplicity. IDEs can help you generate/create code, they can help you organize/change/refactor code, they can help you test/debug/analyze code, but they can’t possibly help you *comprehend* code. The problem with this asymmetry (for me, at least) is that it leads me to create code that is more complex than my ability to quickly comprehend (especially six months later!). In a simple text editor, I feel the pain of bad code earlier and am able to fix the issues before they become real problems.

    Here’s’s what happened to me: I was an IDE user and I asked a friend why he was still using vim and he challenged me to try it out. I haven’t used an IDE since. I’ve *tried* IDEs out and have stayed on top of their capabilities, but usually this just gives me ideas for extending my editor, at which point there’s no reason to move to the IDE with the given feature! I am more productive with vim than I ever was with an IDE.

    I hope that I have shed some light on your questions. However, I think if you really want to know the answers, you aught to learn an editor and find out for yourself! “What are you waiting for?”

  6. Alen says:

    Good points John. Certainly agree with #1. Eclipse can be brutal at times. That is why you find users just always leave them up.

  7. John Werner says:

    Why use simple text editors?

    1) IDEs take too long to start up when all you need to do is change 1 or 2 lines of code. If it takes me longer to start the editor than to make the change, why would I want to start it?

    2) Not all environments can run IDEs. Try running Eclipse on an embedded device. On many POSIX derived OSes running on “embedded hardware” (e.g. Linux, QNX) you can run vi or vim. On some you can even run emacs.

    3) “Muscle memory.” Most of us can learn a new editor, given the time; but usually we are given a deadline to meet that is already a stretch. Why spend the time learning a new tool when the old one seems to work just fine.

    4) Emacs isn’t just a text editor. It has provided many of the features of most IDEs long before some of the IDEs even existed.
    – auto-complete
    – source level debugging
    – integrated building
    – syntax highlighting
    – renaming of symbols project wide
    – integration with source control systems
    – integration with e-mail, nntp news
    – time tracking
    – transparent access to remote files

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to top