istvan@hhb.UUCP (Istvan Mohos) (08/31/90)
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 ======================================================
abc@Matrix.COM (Alan Clegg) (09/01/90)
In article <577@hhb.UUCP> istvan@hhb.UUCP (Istvan Mohos) writes: >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. Add to this list Data General AViiON running DG/UX 4.30 (X windows of any size) Two other nits: o ~ = home directory or $HOME environment variable ie: ":r ~/text" results in a file called "~/text" to be read (or not 8-) instead of reading from the home directory of the user. o ^U will not erase input in 'ex' mode ie: "/fred^Ujoe" looks for a string with fred^Ujoe in it instead of being interpreted as "fred OOPS, I MEAN joe" Other than these little nits, I LOVE it. Very good job! -abc -- Alan B. Clegg uucp: ...!mcnc!matrx!abc Matrix Corporation inet: abc@matrix.com Raleigh, NC "They were all wrong. The workstation model is obsolete." A. Tanenbaum