-> 1.03
[nvi.git] / README
bloba35a34af8aa8e6f2ffd97ab149b17c283a9e8f3c
1 #       $Id: README,v 8.42 1994/01/23 17:50:22 bostic Exp $ (Berkeley) $Date: 1994/01/23 17:50:22 $
3 This is the README for version 1.03 of nvi, a freely redistributable
4 replacement for the vi and ex text editors.  It can be retrieved via
5 anonymous ftp from ftp.uu.net, or from ftp.cs.berkeley.edu.  In the
6 latter, it is in the directory ucb/4bsd, and is named nvi.tar.Z.
8 If you have any questions or problems with nvi, please send them to
9 me by electronic mail at one of the following addresses:
11         uunet!bostic
12         bostic@cs.berkeley.edu
14 Keith Bostic
16 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
17 o Redistribution:
19 Nvi is copyrighted by the The Regents of the University of California,
20 but may be freely redistributed (or used to line your birdcage) under
21 the following conditions:
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  */
56 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
57 o Credit where it's due:
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.
64         POSIX 1003.2 style regular expression support is courtesy of
65         Henry Spencer, for which I am *very* grateful.
67         The curses library was originally done by Ken Arnold.  Scrolling
68         and general reworking for 4.4BSD was done by Elan Amir.
70 o From the original vi acknowledgements, by William Joy and Mark Horton:
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.
79 o And...
81         The financial support of UUNET Communications Services is gratefully
82         acknowledged.
84 =-=-=-=-=-=-=-=-=-=-=
85 o Comments:
87 This software is beta software, although it's pretty stable.  Almost
88 of the necessary functionality for ex/vi is in it, the only missing
89 pieces are fairly obscure.
91 Code fixes are very much appreciated, of course, but if you can't
92 provide them, please send me as much information as you can as to how
93 to reproduce the bug, and I'll try to fix it here.  In particular, the
94 screen routines are nasty stuff, and you probably don't want to mess
95 with them.  Stack traces of core dumps are sometimes helpful, but an
96 example file with a set of keystrokes that causes the problem is far
97 better.
99 Nvi is mostly 8-bit clean.  This isn't difficult to fix, and was left in
100 during initial development to make things easier.  Wide character support
101 will be integrated at the same time it is made fully 8-bit clean.
103 =-=-=-=-=-=-=-=-=-=-=
104 o New features:
106 There aren't a lot of new features in nex/nvi, but there are a few things
107 you might like:
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.
152 =-=-=-=-=-=-=-=-=-=-=
153 o Porting information:
155 The directory PORT has directories per machine/OS combination, with
156 V7-style Makefiles which build nvi.  See the file PORT/README for
157 more detailed information.
159 =-=-=-=-=-=-=-=-=-=-=
160 o Directories:
162 The main directory, nvi, contains source files for pieces of code that
163 are shared by all the editors, like searching and logging code or code
164 translating line numbers into requests to the dbopen(3) database code.
165 It also has the code for adding, deleting, and changing "records" in
166 the underlying database.
168 nvi/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.
174 nvi/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.
182 nvi/sex:
183         The nvi/sex directory is the screen support for the ex editor.
185 nvi/svi:
186         The nvi/svi directory is the screen support for a curses based
187         vi editor.
189 nvi/vi:
190         The nvi/vi directory is the vi source code.
192 nvi/xaw:
193         Place reserved for an X11 (Athena Widget) screen.