elvis - a first impression

Istvan Mohos istvan at hhb.UUCP
Fri Aug 31 07:43:25 AEST 1990



Don't miss this!  The elvis vi clone (Articles 333-338 posted to alt.sources
on August 24, 1990) could turn out the best submission of the year.  Too bad
the readership of alt.sources is not as big as say, of comp.sources.misc.
Unshelling and BSD compilation was a piece of cake and error-free on three
different architectures.  I'm a long-time Unix/vi user, and my first
impression is that the elvis user interface is nicer by far, than vi's.

So far I ran elvis under Ultrix V2.2-1, SunOS3.x, and on a Sparcstation1+,
both in normal size windows and against extra big screens (up to 190x74) that
vi couldn't handle.  Contrary to a couple of comp.unix.wizard opinions, elvis
appeared equally fast or faster than vi.  I like the nice ``wrapped'' message
when exhausting string search.  I love the left shift of text when the cursor
gets to the right window boundary.  I used elvis on the Sparc to be able to
index terminal descriptions in my own termcap, because the Sparcs's native vi
is coded to be SysV compatible, calling terminfo instead of termlib.  In
general, the only times I was reminded that I was using elvis instead of vi,
was when I got suprised by the intelligent and friendly responses I never
knew I was missing.

FYI, and since the author uunet!tektronix!psueea!eecs!kirkenda
(Steve Kirkendall) encourages this in the wrapper, I did notice a few
disconcerting odds-and-ends, and am listing them below in no particular order.

o  Job control is missing; this is the one true deficiency that keeps me from
   	ln elvis vi
   and firing my old editor. ^Z (the job control interrupt SIGTSTP) leaves the
   terminal uncooked; if terminal is then reset, resuming elvis doesn't restore
   the raw/cbreak mode for continued operation.  Of course, adding job control
   practically guarantees that the user will create more than one new file in
   the current directory simultaneously (by running simultaneous elvis copies),
   so tmp.c and virec.c need changing, as per page 28 of the manual.
   
o  As noted in the manual, elvis does not understand (vi) EXINIT options
   separated by pipes; it flags these as errors ONE AT A TIME, waiting for a
   confirming RETURN after each, before starting the editor.  If ^C is used to
   quit out of this error list the terminal stays uncooked.
   
o  I had my original EXINIT 'se nu'.  I miss the auto line number option.
   
o  It is refreshing to see man pages with enough information for a
   beginner to be able to 'come up to speed' without knowing anything
   about the editor.  I wish I had something like this when I learned vi!
   It would be nice however, to have an nroff-able or TeX-able manual.
   
o  When escaping from the 'change to end of line' option (C), if the original
   text is longer than the changed text, it remains visible (to the $ sign),
   until the cursor is moved.  This lack of instant refresh is sometimes
   noticeable at other operations, but is most apparent here.  The ex-vi user
   subconsciously waits for the missing screen updates, and this may give rise
   to the impression that elvis is slower than vi.
   
o  I didn't see in the install part of the Makefile.bsd the ln commands
   to link ex, edit, view to elvis, although these links are clearly functional
   and are decoded in main.c.
   
o  Because some people use the interactive version of 'rm',
   it is best to give the explicit path name /bin/rm in Unix makefiles.
   
o  It would be nice to get notification from elvis that the user is looking at
   the last screen of the file: I found myself ^F-ing several times before
   noticing that I was at the end of the text.
   
o  Vi automatically gives you two intervening spaces when you J two lines and
   the last isprint in the upper line was a period.  I miss this.
   
o  When issuing a ':g/elvis/s//Elvis/g' ex command on the present file
   (I know, the string doesn't exactly follow the specified 'plain elvis'
   format, but then this is my most often used search syntax for years),
   elvis dumped core, and since you can't catch this the terminal stayed
   uncooked.  A quick adb said that regexec() was at fault, no doubt barfing
   on the null string.  When trying to resume, the file was busy, however I
   had no trouble recovering it with virec.
   
o  Another exchange thingy I can't seem to find is the 'c' option of vi that
   can be appended to the 'g' of the ex search string (as in 'g/foo/s//goo/gc');
   this specified that I wanted an interactive replacement of each 'foo'.  Vi
   used to print (in the ex line) the full line of each 'foo', and pointed to
   the current instance of 'foo' in the line that could be answered with
   'y' or 'n' to change or not change the current instance.
-- 
        Istvan Mohos
        ...uunet!pyrdc!pyrnj!hhb!istvan
        1000 Wyckoff Ave. Mahwah NJ 07430 201-848-8000
======================================================



More information about the Alt.sources.d mailing list