Vee-eye. My text editor of choice for 20 years. Half my life.
Why? Because I
on vi, like a duckling on its mother.
Vi's keystrokes are bound into my
My fingers reflexively use vi keystrokes to move around,
to delete text, to move blocks, to find patterns.
I don't have to think about using
dw to delete a word,
n to find the next match of a pattern,
yG to yank the rest of a file,
j to move down a line,
. to repeat the last modification.
My subconcious does it for me.
I don't even have to think much about more complex commands,
ct) to replace a parameter list,
or simpler regexp replacements.
I've internalized so many vi idioms in the last two decades.
For nearly all editing tasks, I'm far more productive when I use vi.
Like Tom Christiansen,
I can become at one with the machine.
People who've used
fall into a bimodal distribution.
They love it or they hate it.
Usually, it's because of vi's
I love the orthogonality
of the UI.
In the autumn of 1985, I entered my third year
of Computer Science at Trinity.
We were promoted from three hours a day on the 1200-baud terminals
in the basement to all-day usage of the 9600-baud terminals in the
main terminal room.
We also graduated from the wretched
SOS line editor
to vi running on Eunice (a Unix emulator for VAX/VMS).
I don't think I took to it instantly;
it took a little while for it to grow on me.
Soon enough, though, I was hooked on
Hitting ESC quickly became a habit:
one that causes me occasional grief,
when I reflexively hit ESC after entering text in an edit field
in some app or other, and destroy what I've just written.
Two years later, I got my first fulltime job,
writing a full-screen text editor for a small Irish typesetting company,
ICPC. It was a replacement for the in-house
line-based editor used by the data entry keyboaders,
which I wrote in Vax Pascal.
A friend made me aware of
a Vi emulator written in VMS's TPU,
which I gladly latched onto.
Two years after that, I entered the Master's program at
where I first got to use Unix and X Windows.
Naturally, I used vi, but it was a lot less powerful than
GNU Emacs, which was very popular.
In time, I learned of VIP, a vi emulator for Emacs.
I began using VIP and quickly forsook standard vi.
I liked having the power and customizability of Emacs,
though I never learned to like the Emacs keybindings.
(François Pinard, a longtime Emacs user, writes eloquently of why he
moved to Vim.)
I stayed with VIP for years, as it evolved into
I show up in the Viper credits
for occasional contributions.
In 1992, I moved to Seattle and worked for Microsoft for the first time.
I kept my Emacs+Viper habit.
By 1995, I was working for MicroCrafts and had discovered
Vim. Version 3.x ran on DOS as a 16-bit
command-line app. I used it occasionally on NT. Then I discovered that
Roger Knobbe had ported Vim to NT, but that it was pretty buggy.
I fixed the bugs and submitted my fixes to
Bram Moolenaar, Vim's author.
One thing led to another, and I became the Win32 guy for Vim 4.x.
Console-mode Vim became rock solid on NT 4, but I never got it to the same
level on Win95, due to inherent problems in the console APIs on Win9x.
I also put together a proof-of-concept implementation of gvim 5.0 for Windows.
At that point, I gave up active involvement in the development of Vim:
I had moved back to Microsoft, I was starting to date Emma,
and I was working on the
Beginning ATL COM Programming book.
Something had to give.
I continued using Viper for much of the time that I was developing Vim,
because Vim was not then rich enough for my needs.
After Vim got a scripting language (VimL) and syntax highlighting in
version 5, I started using Vim more and more.
I think it's been five years since I last used Emacs,
and I never got beyond GNU Emacs 19.34.
Recently, I've stopped using Vim as my exclusive programming editor,
and I've been alternating between Vim and Visual Studio plus
as I've started doing a lot of .NET development.
But more on that some other time. This post is already too long.