This commit was generated by cvs2svn to track changes on a CVS vendor
[unix-history] / usr.bin / vi / README
CommitLineData
0d19c241
JH
1# @(#)README 8.40 (Berkeley) 1/12/94
2
3This is the README for version 1.01 of nvi, a freely redistributable
4replacement for the vi and ex text editors. It can be retrieved via
5anonymous ftp from ftp.uu.net, or from ftp.cs.berkeley.edu. In the
6latter, it is in the directory ucb/4bsd, and is named nvi.tar.Z.
7
8If you have any questions or problems with nvi, please send them to
9me by electronic mail at one of the following addresses:
10
11 uunet!bostic
12 bostic@cs.berkeley.edu
13
14Keith Bostic
15
16=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
17o Redistribution:
18
19Nvi is copyrighted by the The Regents of the University of California,
20but may be freely redistributed (or used to line your birdcage) under
21the following conditions:
22
23/*-
24 * Copyright (c) 1994
25 * The Regents of the University of California. All rights reserved.
26 *
27 * Redistribution and use in source and binary forms, with or without
28 * modification, are permitted provided that the following conditions
29 * are met:
30 * 1. Redistributions of source code must retain the above copyright
31 * notice, this list of conditions and the following disclaimer.
32 * 2. Redistributions in binary form must reproduce the above copyright
33 * notice, this list of conditions and the following disclaimer in the
34 * documentation and/or other materials provided with the distribution.
35 * 3. All advertising materials mentioning features or use of this software
36 * must display the following acknowledgement:
37 * This product includes software developed by the University of
38 * California, Berkeley and its contributors.
39 * 4. Neither the name of the University nor the names of its contributors
40 * may be used to endorse or promote products derived from this software
41 * without specific prior written permission.
42 *
43 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
44 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
45 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
46 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
47 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
48 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
49 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
50 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
51 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
52 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
53 * SUCH DAMAGE.
54 */
55
56=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
57o Credit where it's due:
58
59 This software was originally derived from software contributed
60 to the University of California, Berkeley by Steve Kirkendall,
61 the author of the vi clone elvis. Without his work, this work
62 would have been far more difficult.
63
64 POSIX 1003.2 style regular expression support is courtesy of
65 Henry Spencer, for which I am *very* grateful.
66
67 The curses library was originally done by Ken Arnold. Scrolling
68 and general reworking for 4.4BSD was done by Elan Amir.
69
70o From the original vi acknowledgements, by William Joy and Mark Horton:
71
72 Bruce Englar encouraged the early development of this display
73 editor. Peter Kessler helped bring sanity to version 2's
74 command layout. Bill Joy wrote versions 1 and 2.0 through 2.7,
75 and created the framework that users see in the present editor.
76 Mark Horton added macros and other features and made the editor
77 work on a large number of terminals and Unix systems.
78
79o And...
80
81 The financial support of UUNET Communications Services is gratefully
82 acknowledged.
83
84=-=-=-=-=-=-=-=-=-=-=
85o Comments:
86
87This software is beta software, although it's pretty stable. Almost
88of the necessary functionality for ex/vi is in it, the only missing
89pieces are fairly obscure.
90
91Code fixes are very much appreciated, of course, but if you can't
92provide them, please send me as much information as you can as to how
93to reproduce the bug, and I'll try to fix it here. In particular, the
94screen routines are nasty stuff, and you probably don't want to mess
95with them. Stack traces of core dumps are sometimes helpful, but an
96example file with a set of keystrokes that causes the problem is far
97better.
98
99Nvi is mostly 8-bit clean. This isn't difficult to fix, and was left in
100during initial development to make things easier. Wide character support
101will be integrated at the same time it is made fully 8-bit clean.
102
103=-=-=-=-=-=-=-=-=-=-=
104o New features:
105
106There aren't a lot of new features in nex/nvi, but there are a few things
107you might like:
108
109 o 8-bit clean data, practically infinite lines/files.
110 ^Vx[0-9A-Fa-f]* in input mode will insert any
111 legal character value.
112 o Split screens:
113 :sp[lit] [file ...] splits the screen.
114 ^W switches between screens.
115 :resize count grows/shrinks the current screen.
116 o Background/foreground screens
117 :bg backgrounds the current screen.
118 :di[splay] s[creens] lists the hidden screens.
119 :fg [file] foregrounds the specified (or next) screen.
120 o Shell screens:
121 :sc[ript] [file ...] runs a shell in the screen.
122 Carriage return sends a line to the shell.
123 o Buffer, screens, tags display:
124 :di[splay] b[uffers] displays the current cut buffers.
125 :di[splay] s[creens] displays the hidden screen names.
126 :di[splay] t[ags] displays the current tags stack.
127 o Tag stacks:
128 ^T returns to previous tag location.
129 :tagpop [number | file] returns to previous tag location,
130 or, optionally tag #N, or the tag in a specific file.
131 :tagtop returns to first tag location.
132 o Infinite undo:
133 A '.' command immediately after a 'u' command continues
134 either forward or backward depending on whether the 'u'
135 command was an undo or a redo.
136 o Usage information:
137 :exu[sage] [cmd] for ex commands.
138 :viu[sage] [key] for vi commands.
139 :help
140 o Extended RE expressions:
141 :set extended turns on extended RE's, so you can
142 do "/in|or" and search for the next occurrence of
143 more than one expression.
144 o Word search:
145 ^A searches for the word referenced by the cursor.
146 o Number increment:
147 # increments the number referenced by the cursor.
148 o Previous file:
149 :prev[ious][!] edits the previous file from the
150 argument list.
151
152=-=-=-=-=-=-=-=-=-=-=
153o Porting information:
154
155The directory PORT has directories per machine/OS combination, with
156V7-style Makefiles which build nvi. See the file PORT/README for
157more detailed information.
158
159=-=-=-=-=-=-=-=-=-=-=
160o Directories:
161
162The main directory, nvi, contains source files for pieces of code that
163are shared by all the editors, like searching and logging code or code
164translating line numbers into requests to the dbopen(3) database code.
165It also has the code for adding, deleting, and changing "records" in
166the underlying database.
167
168nvi/docs:
169 The nvi/docs directory has technical information about data
170 structures and some of the trickier parts of vi like quoting,
171 key mapping, input queues, and executing buffers, and a
172 description of how nvi does edit session recovery.
173
174nvi/ex:
175 The nvi/ex directory is the ex source code. Because vi has the
176 colon command, lots of this code is used by vi. Generally, if
177 functionality is shared by both ex and vi, it's in nvi/ex, if
178 it's vi only, it's in nvi/vi. Files are generally named by the
179 command(s) they support, but occasionally with a name that
180 describes their functionality.
181
182nvi/sex:
183 The nvi/sex directory is the screen support for the ex editor.
184
185nvi/svi:
186 The nvi/svi directory is the screen support for a curses based
187 vi editor.
188
189nvi/vi:
190 The nvi/vi directory is the vi source code.
191
192nvi/xaw:
193 Place reserved for an X11 (Athena Widget) screen.