A ‘long, long, long while back’, the first real editor I used
was Vi. After that, I used a great editor on VMS called
Eve.
Then, just ‘a long while back’, I made the switch from bare-bones VI
to Emacs. That was what all the
cool kids were using (middle 90’s). Then I even moved to XEmacs,
since it was the best of the bunch. After a while, though, I got
tired of all the problems. I didn’t want to be an elisp programmer
in order to debug the frequent problems. For example, to set up an advanced IDE mode seemed to require all these packages that
never seemed to be the right version. These packages were
huge. This meant that they were hard to understand or modify.
Things would break and it was no longer fun.
I also noticed that I was getting the emacs pinkie problem. Double no fun. Where is the performance boost that this environment
was supposed to deliver?
At about that time, VIm became popular and life was good again.
It had most of the features that I missed from Emacs (aka: the
features I could get running). So, for a long time
I kept VIm as my editor of choice on the command line. This era also
had me using Eclipse briefly, Visual Studio with Visual Assist
heavily, and a few brief moments with some attempts at
IDEs for Python.
Now it is 2008 and I’ve heard the Yegge rants.
I’ve decided to give Emacs another go. Besides, a practical programmer should always continue to learn. After going back to Emacs, I now use Emacs in VIPER mode for VI compatability.
I use a mixture of the two systems, and it works pretty well.
I’m kind of cheating. It isn’t so strange when you consider
the fact, that I
always preferred or had the emacs keyboard navigation shortcuts
on any OS I use. (note:the old C-e, C-a are really from the
DEC Tenex OS)
This recent switch has brought me to an interesting understanding.
It is kind of like
the ‘worse is better’ understanding that was a popular read
many moons back.
Emacs, by default, is in a mode for text creation. Text manipulation
and navigation require chorded keypresses and thus cost more.
VI, by default has 2 modes, and it is cheap to switch between
those modes. Each of those modes reuses the same keys,
but keeps the costs low for all three modes: (text creation,
text manipulation and text navigation).
I think this is why VI is such a winner. If you are doing any
programming, you spend as much time doing navigation and
manipulation as you do creating text. The costs for these
chorded key sequences start to pile up on that left hand pretty
quickly. This last point is the greatest discovery for me so far.
Why? It seems like a little forethought by the Emacs team could
have spotted this and made the same change a while back.
It will be hard to change now. (Just look at Steve Jobs…
it is going to be d-i-f-f-i-c-u-l-t to get rid of that crappy
menu bar at the top). (I wonder if there are a few other
tools that I use, that could be looked at with the same
analysis? Maybe some programming languages??)
So why use Emacs? Well, the architecture of that system
is a lot better than the VI system. I can do some powerful
text manipulation with that system via the elisp and macro
system. I feel and know I can build real ‘systems’ in elisp.
I will say, though, that the cc-mode and other
language mode support systems for emacs are really
poor compared to the modern IDEs of today.
It is also interesting to point out where they both fail. Both systems
are mired in the 1970s when it comes to UI. They are
stuck in the old tty/terminal interface era. Neither system
works or looks ‘just right’ on a modern operating system.
This last point is easily seen as a big hole when you see
the success of an editor like TextMate.