[comp.editors] 'lvi' - "full" release 1.0

irf@kuling.UUCP (Bo Thide) (01/26/88)

This is a very much improved version of 'lvi' - the learner's interface to
vi(1).  This is a "full release". The earlier version I posted some time ago
was a test version with large portions of the help texts/tutorials missing.
It also had a lousy documentation.  However, it served its pupose of allowing
people to try it and comment on it.  Most of the comments I have received
have been taken into account in this version.  Note that with this release
the vi card has been updated and may now even be correct :-) .. 

'Lvi' 1.0 has been developed in HP-UX on an HP9000/540 and an HP 9000/350.
During the development it has been partially tested on a VAX11/750 running
4.2BSD.  If the 'showmode' flag is deleted it seems to run OK on the VAX too.
(Assuming you have a correct termcap.  My vt100 termcap on the VAX is not!)

The shell archive contains ordinary text ("ASCII") files as well as vi(1)
macro files with non-displayable ("non-ASCII") characters (<CTRL>-chars).
The latter files have therefore been packed in a safe way. When you run the
archive through sh(1) these files will be unpacked automatically by the
included C program which will be compiled and moved to /tmp and, in the
final stage of the unpacking, removed.  This way you don't have to have
access to 'btoa', 'uudecode' or any other specific unpacking program.

Enjoy!

Comments/corrections/suggestions to

>>> Bo Thide', Swedish Institute of Space Physics, S-755 90 Uppsala, Sweden <<<
 Phone: (+46) 18-300020. Telex: 76036 (IRFUPP S). UUCP: ...enea!kuling!irfu!bt


#---------------------------------- cut here ----------------------------------
# This is a shell archive.  Remove anything before this line,
# then unpack it by saving it in a file and typing "sh file".
#
# Wrapped by bt at irfu on Tue Jan 26 01:50:53 1988
#
# This archive contains:
#	README.lvi	lvi.doc		vi.help		vi.card.tex	
#	lvi		lvi.map		lvi.unm		LVI		
#	lvi.change	lvi.cross	lvi.delete	lvi.init	
#	lvi.insert	lvi.open	lvi.put		lvi.quit	
#	lvi.replace	lvi.subst	
#

echo x - README.lvi
cat >README.lvi <<'@EOF'
The 'lvi'  package  is for those who have no  experience  in
editing  with  vi(1)  and who may have  used an  editor/word
processor only once or twice before.

For those who are more familiar with screen  editors,  'lvi'
may be very boring.  Possibly, 'nvi' is a better choice.

'Lvi' relies entirely on internal  capabilities in vi(1) and
is  therefore  quite  slow and  cannot  cope with a user who
types at a high  speed.  On the other  hand, if you type one
vi(1)  command  at a time and study the  various  texts that
appear on your screen and try the  examples  given there you
may gain a certain  degree of proficiency  in a rather short
time.  'Lvi' uses such  things as tags files and macros  and
may perhaps in itself be studied as a rather straightforward
example of the power of vi(1).

In its  original  form  'lvi'  presupposes  that  the  files
'lvi.map',   'lvi.unm',   and   'vi.help'   are   moved   to
/usr/local/lib/vi  and that the other  'lvi.*' files and the
tags file 'LVI' are moved to /usr/local/lib/vi/tags.  If you
have  another  preference  of where the files should be kept
you have to edit 'lvi', 'lvi.map', and 'lvi.unmap' where, by
necessity, absolute file addresses have been hard-coded in.


>>> Bo Thide', Swedish Institute of Space Physics, S-755 90 Uppsala, Sweden <<<
Phone: (+46) 18-300020. Telex: 76036 (IRFUPP S). UUCP: ...enea!kuling!irfu!bt
@EOF

chmod 444 README.lvi

echo x - lvi.doc
sed 's/^@//' >lvi.doc <<'@EOF'
@@(#)lvi.doc 1.1 Documentation 88/01/25 23:20:34


	   LVI -- The Learner's introduction to VI

                              by
 
                          Bo Thide'
              Swedish Institute of Space Physics
                   S-755 90 Uppsala, Sweden
        UUCP: ..enea!kuling!irfu!bt  or  bt@irfu.UUCP
 

This is a macro package  providing a learner's  interface to
the  vi(1)   editor   family.  You  start  by  typing   'lvi
<filename(s)>'.  'Lvi'  will then  create a specific  EXINIT
variable  and run  vi(1)  through  an  exec(1)  command.  If
available,  the 'showmode'  flag will be set in vi(1).  When
vi(1) has  started a tags file  containing  an  introductory
text  will  be   displayed.  After  that,  just  follow  the
instructions.

'Lvi' is adaptive in the sense that the first time you enter
a command  that in some way  might  change  the text you are
editing you will get interactive help with the command.  You
can even safely gain some  experience  by trying the command
on the help text.  Any text changes introduced at this stage
will be silently  discarded.  After this  exercise,  you are
supposed to be familiar with the particular command and will
not get any special help the next time you use it.  However,
at any time you can type '^a' (<CTRL>a) to get assistance in
form of an on-line, single-screen vi(1) help card containing
virtually  every standard vi(1)  command.  A TeX source file
for this help card is made  available  so you can typeset it
and keep it in your shirt pocket.

The  adaptiveness of 'lvi' has been  accomplished  by having
all   text-changing   commands  either   ":map"ped  away  or
":map"ped to a ":ta" command that copies in a tags file with
help text and  examples.  Only if you use a ":"  command  is
it possible to damage the tags file.  It does not seem to be
possible  to ":map"  the ":"  command  itself to make  'lvi'
completely  safe.  At least on the system (HP-UX) I used for
developing  'lvi', such a mapping  yields the  message  "Too
dangerous to map that".

After hitting '^c' you enter into the first of the files you
want to edit.  At the same time a help line is displayed  at
the bottom of the screen.  This line also  appears  when you
hit <CR> in command mode, something that unexperienced users
tend to do now and  then.  Except  for the fact  that  '^a',
'^c',  '<CR>',  'v', 'V', and 'q' are  mapped  to  something
useful, 'lvi' now behaves like  standard  vi(1).  This means
that you may in fact use 'lvi' to produce useful text files.
@EOF

chmod 444 lvi.doc

echo x - vi.help
sed 's/^@//' >vi.help <<'@EOF'
PREPEND BY n TO REPEAT n TIMES. TYPE <ESC> TO RETURN FROM INPUT TO COMMAND MODE!
a [A]  append after cursor [line]     w [W]  word ["Word"]
b [B]  back one word ["Word"]         x [X]  cross out char at [before] cursor
c [C]  change next [to end of line]   y [Y]  yank next [whole line]
d [D]  delete next [to end of line]   zpos   redraw zone at pos (.,-, or CR)
e [E]  end of word ["Word"]           ZZ     write changes to file, exit 'vi'
f [F]  find next [previous] in line   ^b[^f] backward [forward] paging
G [nG] go to last [n:th] line in file ^d[^u] downward [upward] scrolling 
h [l]  cursor left [right]            ^d[^t] delete [tab] one sw during insert
H [L]  to home [last] line on screen  ^e[^y] expose 1 more line at bottom [top]
i [I]  insert before cursor [line]    ^h[^w] erase char [word] during insert
j [k]  cursor down [up]               ~      change case (upper/lower) of char 
J      join line with next line       + [-]  to first char in next [prev] line
mx[`x] mark [return to] position 'x'  0 [$]  to first [last] character in line
M [n|] to middle line [n:th column]   ; [,]  repeat [reverse] last f,F,t, or T
n [N]  to next [previous] occurrence  .      repeat last change of the text
o [O]  open a line below [above]      <<[>>] shift line one sw left [right]
p [P]  put in after [before]          ( [)]  to beginning of [next] sentence
Q      quit 'vi', go to 'ex'          { [}]  to beginning of [next] paragraph
r [R]  replace 1 [all] character[s]   / [?]  search forward [backward]
s [S]  substitute character [line]    ``[''] return to previous position [line]
t [T]  to next [previous] in line     : [:!] execute 'ex' [shell] command
u [U]  undo last change[s in line]    ! [!!] shell command on next [this line]
Type <ESC><ESC> and wait for the beep that says 'vi' is in command mode. Then
a large variety of ':' commands are avilable e.g. the substitute command 's':

:s/<pattern>/xx/<CR>             change FIRST <pattern> in CURRENT LINE to 'xx'
:s/<pattern>/xx/g<CR>            change ALL <pattern>s in CURRENT LINE to 'xx'
:%s/<pattern>/xx/g<CR>           change ALL <pattern>s in ALL LINES to 'xx'
:s/\(<pat1>\)\(<pat2>\)/\2xx\1/  change FIRST occurrence of <pat1><pat2> in
				 CURRENT LINE to <pat2>'xx'<pat1>. 
:g/<pat1>/s/<pat2>$/xx/          ONLY in lines containing <pat1> change <pat2>
                                 to 'xx' ONLY AT THE END OF THE LINE.
:.,+ns/^./xx/                    change in CURRENT and FOLLOWING n lines ANY
                                 character at the BEGINNING of the line to 'xx'
:%s/<pattern>/xx&yy/g            change ALL <pattern>s in ALL lines to the
				 combination 'xx'<pattern>'yy'
:3s/<pattern>/\U&                change 1ST <pattern> in 3RD LINE to <PATTERN>

    <pattern>  means
    xx         the string 'xx' 
    [xy]xx     the string 'xx' OR the string 'yx'
    [^y]xx     the string 'zxx' where 'z' is any character EXCEPT 'y'
    x*         the strings '', 'x', 'xx', 'xxx', ... 
Type 'u' to undo and '&' to repeat a substitution.

@@(#)vi.help 1.1 88/01/25.  Bo Thide', Swedish Institute of Space Physics.
@EOF

chmod 444 vi.help

echo x - vi.card.tex
cat >vi.card.tex <<'@EOF'
%:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
%
% @(#)vi.card.tex 1.1 TeX source 88/01/25 23:20:36 
%
% Run this through plain TeX
%
%:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
%
% Author:
%
%   Bo Thide\'e
%   Swedish Institute of Space Physics
%   S-755 90 Uppsala, Sweden
%   UUCP: ...enea!kuling!irfu!bt
%
%:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
% 
\nopagenumbers
\magnification=\magstep0
\font\tt=cmtt12
\hsize 15 true cm
\parindent=0pt
\centerline{PREPEND ALL APPROPRIATE {\bf vi} COMMANDS BY {\it n} TO REPEAT {\it n} TIMES}
\centerline{TYPE {\rm $\langle${\tt ESC}$\rangle$} TO RETURN FROM INPUT TO COMMAND MODE}
\medskip
\settabs\+{\tt m}{\it x} [{\tt `}{\it x\/}]
\quad &{\tt s}ubstitute next [to end of line]
\quad &{\tt <<} [{\tt >>}]\quad &{\tt e}xpose 1 more line at bottom [top]\cr
\+{\tt a} [{\tt A}] &{\tt a}ppend after cursor [line]
&{\tt w} [{\tt W}] &{\tt w}ord [``{\tt W}ord'']\cr
\+{\tt b} [{\tt B}] &{\tt b}ack one word [``Word'']
&{\tt x} [{\tt X}] &{\tt cross} out char at [before] cursor\cr
\+{\tt c} [{\tt C}] &{\tt c}hange next [to end of line]
&{\tt y} [{\tt Y}] &{\tt y}ank next [whole line]\cr
\+{\tt d} [{\tt D}] &{\tt d}elete next [to end of line]
&{\tt z}{\it pos} &redraw {\tt z}one at {\it pos} [{\tt .}, {\tt -}, or
$\langle${\tt CR}$\rangle$]\cr
\+{\tt e} [{\tt E}] &{\tt e}nd of word [``Word'']
&{\tt ZZ} &exit {\bf vi}, write changes to file\cr
\+{\tt f} [{\tt F}] &{\tt f}ind next [previous] in line
&{\tt \^\/b}[{\tt \^\/f}] &{\tt b}ackward [{\tt f}orward] paging\cr
\+{\tt G} [{\it n}{\tt G}] &{\tt G}o to last [{\it n\/}:th] line
&{\tt \^\/d}[{\tt \^\/u}] &{\tt d}ownward [{\tt u}pward] scrolling\cr
\+{\tt h} [{\tt l}] &cursor left [right]
&{\tt \^\/d}[{\tt \^\/t}] &{\tt d}elete [{\tt t}ab] one {\it sw} during insert\cr
\+{\tt H} [{\tt L}] &to {\tt H}ome [{\tt L}ast] line on screen
&{\tt \^\/e}[{\tt \^\/y}] &{\tt e}xpose 1 more line at bottom [top]\cr
\+{\tt i} [{\tt I}] &{\tt i}nsert before cursor [line]
&{\tt \^\/h}[{\tt \^\/w}] &{\tt back} 1 char [{\tt w}ord] during insert\cr
\+{\tt j} [{\tt k}] &cursor down [up]
&{\tt \~~}&change case (upper/lower) of char\cr
\+{\tt J} &{\tt J}oin line with next
&{\tt +} [{\tt -}] &to first char in {\tt next} [{\tt prev}] line\cr
\+{\tt m}{\it x} [{\tt `}{\it x\/}] &{\tt m}ark [return to] position {\it x}
&{\tt 0} [{\tt \$}] &to {\tt first} [{\tt last}] character in line\cr
\+{\tt M} [{\it n}{\tt |}]&to {\tt M}iddle line [{\it n\/}:th column]
&{\tt ;} [{\tt ,}] &repeat [reverse] last {\tt f}, {\tt F}, {\tt t},
or {\tt T}\cr
\+{\tt n} [{\tt N}] &to {\tt n}ext [previous] occurrence
&{\tt .} &repeat last change of the text\cr
\+{\tt o} [{\tt O}] &{\tt o}pen a line below [above]
&{\tt <<} [{\tt >>}] &shift line one {\it sw} left [right]\cr
\+{\tt p} [{\tt P}] &{\tt p}ut in after [before]
&{\tt (} [{\tt )}] &to beginning of [next] sentence\cr
\+{\tt Q} &{\tt Q}uit {\bf vi}, go to {\bf ex}
&$\{$ [$\}$] &to beginning of [next] paragraph\cr
\+{\tt r} [{\tt R}] &{\tt r}eplace 1 [all] character[s]
&{\tt /} [{\tt ?}] &search forward [backward]\cr
\+{\tt s} [{\tt S}] &{\tt s}ubstitute character [line]
&{\tt `\/`} [{\tt '\/'}] &return to previous position [line]\cr
\+{\tt t} [{\tt T}] &{\tt t}o next [previous] in line
&{\tt :} [{\tt :!}] &execute {\bf ex} [shell] command\cr
\+{\tt u} [{\tt U}] &{\tt u}ndo last change[s in line]
&{\tt !} [{\tt !!}] &shell command on next [this line]\cr
@EOF

chmod 444 vi.card.tex

echo Compiling unpacker for non-ascii files
pwd=`pwd`; cd /tmp
cat >unpack$$.c <<'EOF'
#include <stdio.h>
#define DEC(c)	(((c) - ' ') & 077)
main()
{
	int n;
	char dest[128], a,b,c,d;

	scanf("begin %o ", &n);
	gets(dest);

	if (freopen(dest, "w", stdout) == NULL) {
		perror(dest);
		exit(1);
	}

	while ((n=getchar()) != EOF && (n=DEC(n))!=0)  {
		while (n>0) {
			a = DEC(getchar());
			b = DEC(getchar());
			c = DEC(getchar());
			d = DEC(getchar());
			if (n-- > 0) putchar(a << 2 | b >> 4);
			if (n-- > 0) putchar(b << 4 | c >> 2);
			if (n-- > 0) putchar(c << 6 | d);
		}
		n=getchar();
	}
	exit(0);
}
EOF
cc -o unpack$$ unpack$$.c
rm unpack$$.c
cd $pwd

echo x - lvi '[non-ascii]'
/tmp/unpack$$ <<'@eof'
begin 644 lvi
M"B,Z.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ
M.CHZ.CHZ.CHZ.CHZ.CHZ.@HC"B,@0"@C*6QV:2 Q+C$@0F]U<FYE('-H96QL
M('-C<FEP=" X."\P,2\R-2 R,SHR,#HS-" *(PHC(%1H:7,@<V-R:7!T(&EN
M=F]K97,@=FDH,2D@=VET:"!A('-E="!O9B!M86-R;W,@86YD( HC('-E='1I
M;F=S('1H870L(&AO<&5F=6QL>2P@<')O=FED97,@82!T=71O<FEA;"!I;G1E
M<F9A8V4*(R!F;W(@=&AE('1O=&%L;'D@=6YE>'!E<FEE;F-E9"!V:2@Q*2!L
M96%R;F5R+@HC"B,Z.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ
M.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.@HC"B,@075T:&]R.@HC"B,@("!"
M;R!4:&ED92<*(R @(%-W961I<V@@26YS=&ET=71E(&]F(%-P86-E(%!H>7-I
M8W,*(R @(%,M-S4U(#DP(%5P<'-A;&$L(%-W961E;@HC(" @555#4#H@+BXN
M96YE82%K=6QI;F<A:7)F=2%B= HC"B,Z.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ
M.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.@H*:68@6R D
M(R ](# @70H@('1H96X@96-H;R B57-A9V4Z(&!B87-E;F%M92 D,& @/&9I
M;&5N86UE/B(*("!E>&ET(#$*9FD@"FEF(%L@(2 M<R D,2!="B @=&AE;B!E
M8VAO("<G(#X@)#$*9FD*34]213TG+6-D,C,G"F5X<&]R="!-3U)%"D5824Y)
M5#TB<V4@;F]A=R!R97!O<G0],2!S:&]W;6]D92!M86=I8R!T86=S/2]U<W(O
M;&]C86PO;&EB+W9I+W1A9W,O3%9)7 I\;6%P( $@.B%C;&5A<CMM;W)E("]U
M<W(O;&]C86PO;&EB+W9I+W9I+FAE;' -7 I\8&-A=" O=7-R+VQO8V%L+VQI
M8B]V:2]L=FDN;6%P8%P*(@IE>'!O<G0@15A)3DE4"F5X96,@+W5S<B]B:6XO
.=FD@+70@:6YI=" D*@H*
 
end
@eof

chmod 644 lvi

echo x - lvi.map '[non-ascii]'
/tmp/unpack$$ <<'@eof'
begin 644 lvi.map
M(CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ
M.CHZ.CHZ.CHZ.CHZ.CHZ"B(*(B! *",I;'9I+FUA<" Q+C$@5FD@;6%C<F]S
M(#@X+S Q+S(U(#(S.C(P.C,U( HB"B(@5&AI<R!I<R!A('-E="!O9B!M86-R
M;W,@9F]R("=L=FDG+"!A('1U=&]R:6%L"B(@9F]R('1H92!T;W1A;&QY('5N
M97AP97)I96YC960@=FDH,2D@;&5A<FYE<BX*(@HB.CHZ.CHZ.CHZ.CHZ.CHZ
M.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CH*
M(@HB($%U=&AO<CH*(@HB(" @0F\@5&AI9&4G"B(@("!3=V5D:7-H($EN<W1I
M='5T92!O9B!3<&%C92!0:'ES:6-S"B(@("!3+3<U-2 Y,"!5<'!S86QA+"!3
M=V5D96X*(B @(%550U Z("XN+F5N96$A:W5L:6YG(6ER9G4A8G0*(@HB.CHZ
M.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ
M.CHZ.CHZ.CHZ.CH*(@HZ<V4@<F5A9&]N;'D*.FUA<" #(#IR97<A#3IS;R O
M=7-R+VQO8V%L+VQI8B]V:2]L=FDN=6YM#3HB2&ET(#Q#5%),/F$@9F]R(&%S
M<VES=&%N8V4N#0HZ;6%P(%8@&SHB3F]T(&%C=&EV92$@2&ET('$@=&\@8F%I
M;"!O=70L(%YC('1O(&-O;G1I;G5E+"!O<B \0U123#YA(&9O<B!A<W-I<W1A
M;F-E+@T*.FUA<"!V(#IE(2 C#0HZ;6%P(&$@&SIT82!I;G-E<G0-.G5N;2!A
M#0HZ;6%P($$@&SIT82!I;G-E<G0-.G5N;2!!#0HZ;6%P(&,@&SIT82!C:&%N
M9V4-.G5N;2!C#0HZ;6%P($,@&SIT82!C:&%N9V4-.G5N;2!##0HZ;6%P(&0@
M&SIT82!D96QE=&4-.G5N;2!D#0HZ;6%P($0@&SIT82!D96QE=&4-.G5N;2!$
M#0HZ;6%P(&D@&SIT82!I;G-E<G0-.G5N;2!I#0HZ;6%P($D@&SIT82!I;G-E
M<G0-.G5N;2!)#0HZ;6%P($H@5@HZ;6%P(&\@&SIT82!O<&5N#3IU;FT@;PT*
M.FUA<"!/(!LZ=&$@;W!E;@TZ=6YM($\-"CIM87 @<" ;.G1A('!U= TZ=6YM
M(' -"CIM87 @4" ;.G1A('!U= TZ=6YM(% -"CIM87 @<2 Z=&$@<75I= T*
M.FUA<"!1(%8*.FUA<"!R(!LZ=&$@<F5P;&%C90TZ=6YM('(-"CIM87 @4B ;
M.G1A(')E<&QA8V4-.G5N;2!2#0HZ;6%P(',@&SIT82!S=6)S= TZ=6YM(',-
M"CIM87 @4R ;.G1A('-U8G-T#3IU;FT@4PT*.FUA<"!X(!LZ=&$@8W)O<W,-
M.G5N;2!X#0HZ;6%P(%@@&SIT82!C<F]S<PTZ=6YM(%@-"CIM87 @(2!6"CIM
M87 @+B!6"CIM87 @/"!6"CIM87 @/B!6"CIM87 @?B!6"CIM87 @'2!6"CIM
'87 @'B!6"CIM
 
end
@eof

chmod 644 lvi.map

echo x - lvi.unm '[non-ascii]'
/tmp/unpack$$ <<'@eof'
begin 444 lvi.unm
M(CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ
M.CHZ.CHZ.CHZ.CHZ.CHZ"B(*(B! *",I;'9I+G5N;2 Q+C$@5FD@;6%C<F]S
M(#@X+S Q+S(U(#(S.C(P.C,U( HB"B(@5&AI<R!I<R!A('-E="!O9B!M86-R
M;W,@9F]R("=L=FDG+"!A('1U=&]R:6%L"B(@9F]R('1H92!T;W1A;&QY('5N
M97AP97)I96YC960@=FDH,2D@;&5A<FYE<BX*(@HB.CHZ.CHZ.CHZ.CHZ.CHZ
M.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CH*
M(@HB($%U=&AO<CH*(@HB(" @0F\@5&AI9&4G"B(@("!3=V5D:7-H($EN<W1I
M='5T92!O9B!3<&%C92!0:'ES:6-S"B(@("!3+3<U-2 Y,"!5<'!S86QA+"!3
M=V5D96X*(B @(%550U Z("XN+F5N96$A:W5L:6YG(6ER9G4A8G0*(@HB.CHZ
M.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ.CHZ
M.CHZ.CHZ.CHZ.CH*(@HZ<V4@;F]R96%D;VYL>2!A=PHZ=6YM( ,*.FUA<" #
M(#IR97<-.B)(:70@/$-44DP^82!F;W(@87-S:7-T86YC92X-"CIU;FT@2@HZ
M=6YM(%$*.G5N;2!6"CIU;FT@(0HZ=6YM("X*.G5N;2 \"CIU;FT@/@HZ=6YM
M('X*.G5N;2 ="CIU;FT@'@HZ=6YM( $*.FUA<" -(#HB16YT97(@/$-44DP^
M82!F;W(@87-S:7-T86YC90TK"CIM87 @ 2 Z(6-L96%R.VUO<F4@+W5S<B]L
M;V-A;"]L:6(O=FDO=FDN:&5L<!L-"CIM87 A( $@&SHA8VQE87([;6]R92 O
<=7-R+VQO8V%L+VQI8B]V:2]V:2YH96QP&PUA"@$@
 
end
@eof

chmod 444 lvi.unm

echo x - LVI
cat >LVI <<'@EOF'
change	/usr/local/lib/vi/tags/lvi.change	1
cross	/usr/local/lib/vi/tags/lvi.cross	1
delete	/usr/local/lib/vi/tags/lvi.delete	1
init	/usr/local/lib/vi/tags/lvi.init		1
insert	/usr/local/lib/vi/tags/lvi.insert	1
open	/usr/local/lib/vi/tags/lvi.open		1
put	/usr/local/lib/vi/tags/lvi.put		1
quit	/usr/local/lib/vi/tags/lvi.quit		1
replace	/usr/local/lib/vi/tags/lvi.replace	1
subst	/usr/local/lib/vi/tags/lvi.subst	1
@EOF

chmod 444 LVI

echo x - lvi.change
cat >lvi.change <<'@EOF'
You have typed 'c' or 'C'.  The one you typed is now activated.

c     is an operator that you put before a command that would normally move
      you to another position in order to change the text you pass over to
      the text that you input immediately after the command.  End text insert
      with <ESC>.  A '$' sign indicates how far the command will take effect.

C     is a shorthand for the 'c$' command that changes everything from the
      current cursor position to, but not including, the newline character.

Use this text for harmless practicing.  Undo last change with 'u'. Examples:

    c5wfive words<ESC>  change next 5 words to the two words "five words".
    c}changing is easy  change all text from the cursor to the end of the
			current paragraph to the text "changing is easy".
    c(---               change all text from the cursor to the beginning of
			the current sentence to the text "---".
    c/xyz<CR>New text   change all text from the cursor to next occurrence
			of 'xyz' to the new text "New text".
-------------------------------------------------------------------bt 88/01/25
Type '^c' to continue editing or 'v' to visit old buffer. Type 'q' to quit.

@EOF

chmod 444 lvi.change

echo x - lvi.cross
cat >lvi.cross <<'@EOF'
You have typed 'x' or 'X'.  The one you typed is now activated.

x     cross out (delete) the character at the cursor position.

X     cross out (delete) the character before the cursor position.

Use this text for harmless practicing.  Undo last change with 'u'.  Examples:

    5x    cross out the character at the current cursor position and  the 4
          following characters.

    5X    cross out the 5 characters before the current cursor position.


  




-------------------------------------------------------------------bt 88/01/25
Type '^c' to continue editing or 'v' to visit old buffer. Type 'q' to quit.

@EOF

chmod 444 lvi.cross

echo x - lvi.delete
cat >lvi.delete <<'@EOF'
You have typed 'd' or 'D'.  The one you typed is now activated.

d     is an operator that you put before a command that would normally move
      you to another position in order to delete the text you pass over.
      Deleted text is saved in one of buffers 1-9 or, if defined by '"', a-z.

D     is a shorthand for the 'd$' command that deletes everything from the
      current cursor position to, but not including, the newline character.

dd    deletes the current line completely.

Use this text for harmless practicing.  Undo last change with 'u'.  Examples:

    d5w        delete next 5 words. 
    d}         delete from the cursor to the end of the current paragraph.
    d(         delete from the cursor to the beginning of the current sentence.
    d/xyz<CR>  delete from the cursor to the next occurrence of 'xyz'.
    "ad9|      delete to column 9. Save deleted text in named buffer 'a'.
    "x3dd      delete 3 lines. Save the lines in the named buffer 'x'.
-------------------------------------------------------------------bt 88/01/25
Type '^c' to continue editing or 'v' to visit old buffer. Type 'q' to quit.

@EOF

chmod 444 lvi.delete

echo x - lvi.init
cat >lvi.init <<'@EOF'
> Welcome to 'lvi' - the learner's interface to the visual screen editor 'vi' < 
-------------------------------------------------------------------------------
At any point you get a list of all standard 'vi' commands by typing '^a' (=hold
down <CTRL> and type 'a').  All of them can be used in 'lvi'.  However, at this
point all dangerous commands are inactive.   Some will invoke a tutorial before
they become active.   Others will not become active until you start the editing
of your file(s) by typing '^c'.   Go ahead and try to find the active commands!
This is perfectly safe unless you use a command starting with a ':' (colon).

In addition to the standard 'vi' commands, the following special 'lvi' commands
are available:

   ^a (<CTRL>-a)    get Assistance. 
   ^c (<CTRL>-c)    Continue editing.
   v                Visit the buffer you just left.  Original text restored.
   q                Quit. 

To get complete information on 'vi', type ':! man vi' (this may be very slow).

-------------------------------------------------------------------bt 88/01/25
Type 'v' to visit old buffer, 'q' to quit, or any standard 'vi' command.
@EOF

chmod 444 lvi.init

echo x - lvi.insert
cat >lvi.insert <<'@EOF'
You have typed 'i', 'a', 'I' or 'A'.  The one you typed is now activated.

i     is a command for start inserting text before the current cursor
      position.

a     is a command for start appending text after the current cursor
      position.

I     is a shorthand for "^i", start inserting text before the first NON-BLANK
      CHARACTER in the current line.

A     is a shorthand for "$a", start appending text after the last character
      in the current line.

Use this text for harmless practicing.  End text insert/append by typing
'<ESC>'.  Undo last change with 'u'.  Examples:

    0i         start inserting text in the first COLUMN of the current line.
    67a-<ESC>  append 67 '-'s and return to command mode (used in next line!).
-------------------------------------------------------------------bt 88/01/25
Type '^c' to continue editing or 'v' to visit old buffer. Type 'q' to quit.

@EOF

chmod 444 lvi.insert

echo x - lvi.open
cat >lvi.open <<'@EOF'
You have typed 'o' or 'O'.  The one you typed is now activated.

o     open a new, empty line below the current line.  Type in the text
      starting at colmun 1.  End text input with <ESC>.
O     open a new, empty line above the current line.  Type in the text
      starting at column 1.  End text input with <ESC>.

Use this text for harmless practicing.  Undo last change with 'u'.







  




-------------------------------------------------------------------bt 88/01/25
Type '^c' to continue editing or 'v' to visit old buffer. Type 'q' to quit.

@EOF

chmod 444 lvi.open

echo x - lvi.put
cat >lvi.put <<'@EOF'
You have typed 'p' or 'P'.  The one you typed is now activated.

p     put the content of the unnamed buffer 1 after the cursor position.

"np   put the content of the unnamed buffer n (1-9) after the cursor position.

"xp   put the content of the named buffer 'x' (a-z) after the cursor position.

P     put the content of the unnamed buffer 1 before the cursor position.

"nP   put the content of the unnamed buffer n (1-9) before the cursor position.

"xP   put the content of the named buffer 'x' (a-z) before the cursor position.


Use this text for harmless practicing.  Undo last change with 'u'.



-------------------------------------------------------------------bt 88/01/25
Type '^c' to continue editing or 'v' to visit old buffer. Type 'q' to quit.

@EOF

chmod 444 lvi.put

echo x - lvi.quit
cat >lvi.quit <<'@EOF'
OK you want to quit.  Here are some ways to leave 'vi'.

:q<CR>            quit only if you have not changed anything.

:q!<CR>           quit WITHOUT recording any changes. Emergency exit.

:wq<CR> or :x<CR> write whole buffer to the default file and exit.

ZZ                shorthand for ':wq<CR>' . 'ZZ' is the normal exit command.

:i,jwq<CR>        write lines i through j to the default file and exit.

:.,+nwq<CR>       write the current line and the following n lines to the
                  default file and exit.





-------------------------------------------------------------------bt 88/01/25
Type '^c' to continue editing or 'v' to visit old buffer.

@EOF

chmod 444 lvi.quit

echo x - lvi.replace
cat >lvi.replace <<'@EOF'
You have typed 'r' or 'R'.  The one you typed is now activated.

r     replace the character at the cursor position with the 
      character that you input immediately after the command.  

R     substitute the following text with the text you input
      immediately after the command. End text replacement
      with <ESC>. 

Use this text for harmless practicing.  Undo last change with 'u'.  Examples:

    rX              replace the current character by the character 'X'.

    R5char          replace the current and 4 following characters by "5char".





-------------------------------------------------------------------bt 88/01/25
Type '^c' to continue editing or 'v' to visit old buffer. Type 'q' to quit.

@EOF

chmod 444 lvi.replace

echo x - lvi.subst
cat >lvi.subst <<'@EOF'
You have typed 's' or 'S'.  The one you typed is now activated.

s     substitute the character at the cursor position with the 
      text that you input immediately after the command.  End text insert
      with <ESC>.  A '$' sign indicates how far the command will take effect.

S     substitute the text on the current line with new text.

Use this text for harmless practicing.  Undo last change with 'u'. Examples:

    schar<ESC>      substitute the current character by the four characters
                    "char".
    3s5char<ESC>    substitute the current and following 2 characters by the
		    five characters "5char".
    4Sfour lines    substitute the current and following 3 lines by the single
		    line containig the text "four lines".



-------------------------------------------------------------------bt 88/01/25
Type '^c' to continue editing or 'v' to visit old buffer. Type 'q' to quit.

@EOF

chmod 444 lvi.subst

rm /tmp/unpack$$
exit 0
-- 
>>> Bo Thide', Swedish Institute of Space Physics, S-755 90 Uppsala, Sweden <<<  Phone (+46) 18-300020.  Telex: 76036 (IRFUPP S).  UUCP: ..enea!kuling!irfu!bt