[Eug-lug] Computer time

Neil Parker nparker at LLX.COM
Sat Jan 22 21:46:08 PST 2005


Bob Miller wrote,
>Since I'm primarily an emacs user, I don't know the history of various
>vi versions and clones.  The dominant vi variant today seems to be
>vim, for "vi improved".  Maybe somebody else would like to fill that
>part in?

I'm not exactly an expert on this myself, but as a vi partisan, I feel
compelled to post what I know.


As far as I've been able to determine, Bill Joy's original vi source code
was never made publicly available...every commercial UNIX vendor had their
(often customized) version, but I've never seen an FTP site that had the
source code.  I've heard rumors that Joy lost at least one version of the
source code in a disk crash (a doubly-tragic event, since the lost source
code is rumored to have included the ability to have two or more files
open at once (an ability found in modern vi clones, but notably missing
from Joy's original version)).

In the absense of publicly-available source code for vi, there were
several independent efforts to write a vi clone.  The most popular of
these are "vim" and "elvis".  You may also run across "nvi", but it's a
lot rarer (and the last time I looked at it, a lot less powerful--nvi was
a pretty straight vi clone, whereas vim and elvis add tons of new
features).

Vi fans appear to be divided as to whether vim or elvis is better.
Patrick Volkerding appears to be an elvis partisan--on every version of
Slackware I've ever used, /usr/bin/vi is a symlink to /usr/bin/elvis.
Other distributions (e.g. Mandrake) make vim the default instead.


By the way, if you've ever used any full-screen software on the text
screen (or xterm/konsole/gnome-terminal window), chances are it does its
full-screen stuff by using the "curses" library.  Well, apparently the
original version of the curses library was also written by Bill Joy, and
he made it by ripping his screen-handling code out of vi and wrapping it
up as a separate library.

               - Neil Parker


More information about the EUGLUG mailing list