Sunday, October 14, 2007

IDE's vs vi

I just told my friend that instant IDE support for new languages is the place to be (I truly believe this can happen). In response he told me, "I love vi."

I know vi, and I can get around in it OK, but I'm not a hardcore vi guy. I know there are some things you can do in vi that are really nice and allow you to do some things very quickly and powerfully. But, I don't know what they are. The real question here is, can vi do things that modern IDE's cant do? Can someone explain to me this?

I do think that vi is ancient technology, and I'm sure thats old news anyway. I don't know very many people who use vi or emacs anymore. I'm sure a lot of people would look at my friend funny for that comment. But I'm a little different. I'm curious.

What features do retired editors have that modern IDE's lack?

1 comment:

  1. Hi JC,

    I use emacs and vi. Emacs is great for serious work and vi is great for small tasks.

    Neither of them is a "retired editor" - both of them knock the socks of the editors that come with IDEs.

    I don't think it's realistic to try to describe what Emacs can do and Eclipse can't in a blog comment. Consider this, though: emacs is implemented on top of a dialect of lisp (elisp or emacs lisp). When you enter a character, you are running a function. As a user, you can modify virtually any behavior. You can write your own programs as modes for a particular buffer - mail readers, news readers, web browsers, ftp clients, whatever you want.

    Maybe you can get an idea by watching the movie linked to from this page: http://bc.tech.coop/blog/050728.html (Emacs SLIME mode - used for common lisp developement) or by checking out the emacs blog http://www.emacsblog.org/ or the emacs wiki http://www.emacswiki.org/cgi-bin/wiki and seeing what you can find.

    Here's a more inflammatory way of describing the situation, rather the reverse of your "retired editors" thing - the things that Java IDEs are good at are important to Java devs because Java sucks. Someone working in CL, Erlang, Haskell, ... has no use for elaborate tools to save retyping endless boilerplate when they change their mind, because they don't have the elaborate boilerplate to being with. That's about 90% of the "refactoring support" gone right there. It's trivial in any language with a REPL to run a given function with given arguments right from the editor, so goodbye to a whole lot of specialized support for unit test frameworks - emacs can already send your code to whatever compiler or interpreter you want.

    That should be a good start.

    ReplyDelete