xref: /original-bsd/usr.bin/ex/READ_ME (revision 179d6f6f)
1This is version 3 of the editor. It is too large to fit on a pdp-11
2unless you have overlay code. (Such code is available for v7 unix on 2bsd.)
3
4Version 2.13 corresponds to version 3 without the enhancements in 3.
5There is no reason to use 2.13 unless you have a pdp-11 that does not have
6overlay software, since 3 contains all the bug fixes and some new features.
7
8Special installation notes for this version.
92) The include file varargs.h should be installed, as the printf here needs it.
103) The include file local/uparm.h should be installed, as ex_tune.h needs it.
11   The contents of this include file can be modified if you wish to place
12   the editor in a nonstandard location.
13
14Conditional compilation flags:
15	-DTRACE		for debugging (wont then fit on an 11)
16	-DVFORK		for UCB Vax/Unix with the vfork system call.
17	-DCHDIR		compile in undocumented old chdir (cd) command
18	-DLISP		compile in lisp hacks
19	-DUCVISUAL	compile in code to handle \ escapes for visual on
20			upper case only terminals.  gross.
21	-DCRYPT		-x option to edit encrypted files
22	-DFLOCKFILE	compile in advisory file locking ala 4.[23X]
23
24=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
25
26Version 3.7  October 16, 1981
27
28	It is now possible to split lines with substitute commands from vi,
29	by using ^V<return> in the rhs.  This takes care of the last
30	good reason for using ex command mode.
31
32	Mode lines are now supported.  Put a line containing
33		ex: xxx :
34	in the first or last 5 lines of the file, where xxx is any ex
35	command you want executed when that file is read in.  To make
36	other programs happy, it should probably be inside a comment.
37	You can use vi: as well as ex:.  (Note: no space allowed
38	between the "ex" and ":".  The spaces around xxx are considered
39	part of the command, and so are optional.)
40
41	If there is a file .exrc in the current directory, it will be
42	sourced when you enter vi, after your EXINIT or ~/.exrc.
43
44	The changeable scrolling region of the vt100 is now used in
45	place of insert line, resulting in much better performance.
46
47	Vi uses the new AL, DL, LE, RI, DO, and UP (all upper case)
48	termcap capabilities, which are parameterized versions of their
49	lower case equivalents.  This will results in better performance
50	on ANSI terminals, and especially on the Tektronix 4025 which
51	has parameterized local motions but cannot cursor address.
52
53	Vi uses backtabs again.  Now it knows how to handle backtabs on
54	terminals that have tabs set at intervals other than 8, and it
55	won't use backtabs if gtty indicates it can't use tabs.
56
57	A bug causing <escape> <del> to core dump vi has been fixed.
58
59	A bug causing writes to filters when editing encrypted files
60	to write encrypted text has been fixed.
61
62	A bug causing the message "substitution loop", when you enter a
63	1,$s/xxx/yyy/g with lots of changes, has been fixed.
64
65	A bug causing the current directory to be chmodded to 0 if you
66	set nomesg after starting up the editor has been fixed.  Note
67	that the nomesg option is intended for your EXINIT, since it only
68	takes effect on entry to the editor.
69
70	The eat newline glitch has been fixed so that vt100's and tab132's
71	handle long lines correctly.
72
73	Some internal changes have been made so that vi can run under UNIX
74	on the Bell Labs 3B machine, the BBN C/70, and the IBM 370.
75
76Version 3.6  October 30, 1980
77
78	A kernel problem on the V7 pdp-11 overlay systems which causes
79	bad EMT traps to happen randomly, core dumping the editor,
80	has been programmed around by catching EMT traps.
81
82	A bug which prevented using a screen larger than 48 lines has
83	been fixed.
84
85	A bug which allowed you to set window to a value larger than
86	your screen size has been fixed.
87
88	The screen size limit on non-VM/Unix systems has been increased
89	to 66 lines or 5000 characters, to allow the Ann Arbor Ambassador
90	terminal to be used.
91
92	A bug which caused hangups to be ignored on USG systems has
93	been fixed.
94
95	A bug which caused maps with multiple changes on multiple lines
96	to mess up has been fixed.
97
98	If you get I/O errors, the file is considered "not edited" so
99	that you don't accidently clobber the good file with a munged
100	up buffer.
101
102	An inefficiency in 3.5 which caused the editor to always call
103	ttyname has been fixed.
104
105	A bug which prevented the "source" command from working in an
106	EXINIT or from visual has been fixed.
107
108	A bug which caused readonly to be cleared when reading from
109	a writable file with "r" has been fixed.
110
111	The name "suspend" has been made an alias for "stop".
112
113	The stop command now once again works correctly from command mode.
114
115	On a dumb terminal at 1200 baud, "slowopen" is now the default.
116
117	A bug in the shell script "makeoptions" which searched for a
118	string that appeared earlier in a comment has been fixed.
119
120	A bug that caused an infinite loop when you did ":s/\</&/g"
121	has been fixed.
122
123	A bug that caused & with no previous substitution to give
124	"re internal error" has been fixed.
125
126	A bug in the binary search algorithm for tags which sometimes
127	prevented the last tag in the file from being found has been fixed.
128
129	Error messages from expreserve no longer output a linefeed,
130	messing up the screen.
131
132	The message from expreserve telling you a buffer was saved when
133	your phone was hung up has be amended to say the editor was
134	terminated, since a kill can also produce that message.
135
136	The "directory" option, which has been broken for over
137	a year, has been fixed.
138
139	The "r" command no longer invokes input mode macros.
140
141	A bug which caused strangeness if you set wrapmargin to 1
142	and typed a line containing a backslash in column 80 has
143	been fixed.
144
145	A bug which caused the "r<cr>" at the wrapmargin column
146	to mess up has been fixed.
147
148	On terminals with both scroll reverse and insert line,
149	the least expensive of the two will be used to scroll up.
150	This is usually scroll reverse, which is much less annoying
151	than insert line on terminals such as the mime I and mime 2a.
152
153	A bug which caused vi to estimate the cost of cursor motion
154	without taking into account padding has been fixed.
155
156	The failure of the editor to check counts on ^F and ^B commands
157	has been fixed.
158
159	The "remap" option failed completely if it was turned off.
160	This has been fixed.
161
162	A check of the wrong limit on a buffer for the right hand side
163	of substitutions has been fixed.  Overflowing this buffer could
164	produce a core dump.
165
166	A bug causing the editor to go into insert mode if you typed
167	return during an R command has been fixed.
168
169	A bug preventing the + command from working when you edit a
170	new file has been fixed by making it no longer an error to
171	edit a new file (when you first enter the editor.)  Instead
172	you are told it is a new file.
173
174	If an error happens when you are writing out a file, such as
175	an interrupt, you are warned that the file is incomplete.
176
177Version 3.5 -- August 20, 1980
178
179	The provisions for changing the window size with a numeric
180	prefix argument to certain visual commands have been deleted.
181	The correct way to change the window size is to use the z
182	command, for example z5<cr> to change the window to 5 lines.
183
184	The code to handle the -x (encryption) option has been made
185	conditionally compiled, so that ex can run on an an 11/34 (!)
186	with overlays.  Since this code calls getpass, stdio was
187	being pulled in even without VMUNIX being defined.  The
188	savings from not defining CRYPT are about 4K of text and 4.5K
189	of bss.
190
191	Bill Joy put in a buffering scheme under the VMUNIX flag so
192	that up to 64K of file is edited in-core until you make enough
193	changes to force a temp file sync.  This makes entry into the
194	editor much faster, but also makes vi much bigger.
195
196	The source to ex is now sccs'ed.
197
198	An undocumented "feature" which caused the ^^ command to return
199	to the previous tag, if in the current file, instead of the
200	previous file, has been removed.
201
202	A bug which prevented ex from compiling on systems with the new
203	tty driver but no process control (such as Cory) was fixed.
204
205Version 3.4 -- June 24, 1980
206
207	The visual page motion commands ^F and ^B now treat any preceding
208	counts as number of pages to move, instead of changes to the
209	window size.  That is, 2^F moves forward 2 pages.
210
211	A :vi <file> command from visual mode is now treated the same
212	as a :edit <file> or :ex <file> command.  The meaning of the
213	vi command from ex command mode is not affected.
214
215	Provisions to handle the new process stopping features of the
216	Berkeley TTY driver have been added.  A new command, "stop",
217	takes you out of the editor cleanly and efficiently, returning
218	you to the shell.  Resuming the editor puts you back in command
219	or visual mode, as appropriate.  If autowrite is set and there
220	are outstanding changes, a write is done first unless you say
221	"stop!".  From visual mode, the command ^Z is the same as :stop.
222	Note that if you have an arrow key that sends ^Z the stop function
223	will take priority over the arrow function.  If you have your
224	"susp" character set to something besides ^Z, that key will be
225	honored as well.
226
227	A read only mode now lets you guarantee you won't clobber your
228	file by accident.  You can set the on/off option "readonly" (ro)
229	and writes will fail unless you use an ! after the write.
230	Commands such as x, ZZ, and autowrite, and in general anything
231	that writes is affected.  This option is turned on if you invoke
232	ex with the -R flag.  A new link called "view" has been  created.
233	View is just like vi but it sets readonly.
234
235	The encryption code from the v7 editor is now part of ex.
236	You invoke ex with the -x option and it will ask for a key,
237	as ed.  The ed "x" command (to enter encryption mode from
238	within the editor) is not available.
239
240	The editor now adopts the convention that a null string in the
241	environment is the same as not being set.  This applies to
242	TERM, TERMCAP, and EXINIT.
243
244	A word abbreviation mode is now available.  You can define
245	abbreviations with the abbreviate command
246		:abbr foo find outer otter
247	which maps "foo" to "find outer otter".  Abbreviations can be
248	turned off with the "unabbreviate" command.  The syntax of these
249	commands is identical to the map and unmap commands, except
250	that the ! forms do not exist.  Abbreviations are considered
251	when in visual input mode only, and only affect whole words
252	typed in, using the conservative definition.  (Thus "foobar"
253	will not be mapped as it would using map!)
254	Abbreviate and unabbreviate can be abbreviated to "ab" and
255	"una", respectively.
256
257	The editor now supports certain terminals that use strings other
258	then \r and \n for return and linefeed by implementing the cr
259	and nl termcap options.  (Thanks to UCLA for these enhancements).
260
261	The termcap attribute ns is now checked for, and ex refuses to
262	go into visual mode on such a terminal unless it has sf.
263
264	Terminals that can cursor address but cannot go up a line
265	now work in visual.
266
267	If you change your start and stop characters to something other
268	than the default ^S and ^Q, vi now turns them off.  This causes
269	people who change them to escape not to lose so badly.
270	The quit character is once again turned off so that datamedias
271	which send ^\ for the right arrow key work.
272
273	The ~ command now repeats correctly with ".".
274
275	If you type in an unmatched ) or } in showmatch mode, the editor
276	will now beep to warn you about your mistake.  The ) or } is
277	still accepted.
278
279	The way macros are undone has been improved considerably.
280	The number of changes inside the macro is counted, and just
281	before the second change the state before the macro is recreated
282	internally and saved to allow the macro to be undoable as a unit.
283	Hence, if the macro makes only one change the particular change is
284	undone (which will probably not redraw the screen).  If no changes
285	are made (for example, the arrow keys) the previous thing that could
286	be undone is not clobbered.
287
288	The undomacro option has been deleted since it is no longer needed.
289
290	Editor scripts can now contain comments.  Begin the comments with "
291	(double quote).  Comments can be on their own line or come at the
292	end of command lines.  The comment continues to the end of the line.
293
294	The 3rd version of the USG tty driver is now supported, making it
295	possible on USG systems to interrupt redrawing the screen and to
296	not flush output when interruptable commands take place.
297
298	The rewind command has been added to the list of commands that
299	the autowrite option knows about.
300
301	The wrapmargin option is now usable.  The way it works has been
302	completely revamped.  Now if you go past the margin (even in the
303	middle of a word) the entire word is erased and rewritten on the
304	next line.  This changes the semantics of the number given to
305	wrapmargin.  0 still means off.  Any other number is still a
306	distance from the right edge of the screen, but this location
307	is now the right edge of the area where wraps can take place,
308	instead of the left edge.  Wrapmargin now behaves much like
309	fill/nojustify mode in nroff.
310
311	A bug on the USG system where hanging up the phone causes more
312	than one SIGHUP to be sent has been compensated for.
313
314	A bug which caused the :sh command not to send the vs and ti
315	sequences when you returned has been fixed.
316
317	A bug which caused a file that bombed out in the middle of
318	an edit command to be considered modified has been fixed.
319
320	A bug which caused the screen to be wrong after undoing a
321	:move command has been fixed.
322
323	A bug which messed up the buffer and the screen after
324	undoing a :join command has been fixed.
325
326	The source file ex_io.c has been split into ex_io.c and
327	ex_unix.c to avoid a problem where many C compilers overflowed
328	the symbol table.
329
330	A bug which prevented turning off your prompt in your .exrc
331	has been fixed.
332
333	Some of the code internal to the editor has been rearranged
334	and some comments added.
335
336	The bug fix to the USG tty driver to output a null character
337	as padding at 1200 baud has been improved to output a DEL
338	at 1200 baud or above.
339
340	Terminals with small screens (less than 20 columns or less
341	than 5 lines) should now work.
342
343	A bug which prevented you from entering the character DEL
344	into the buffer if you changed your interrupt character to
345	something else besides DEL has been fixed.
346
347	A bug which caused the current line to be clobbered when
348	you did a /, ?, or : command which mapped an input macro
349	successfully has been fixed.
350
351	If you map o to O and O to o and have remap set, the editor
352	now catches the infinite loop.
353
354	A put command after a macro now beeps instead of putting
355	a copy of the whole buffer.  (Note that the arrow keys
356	on terminals are considered macros.)
357
358	A bug which caused things like d) and d} to miss the last
359	character when they should have deleted to the end of the
360	buffer has been fixed.
361
362	A bug which caused the last character to be lost when you
363	read in a file with no newline at the end of the last line
364	has been fixed.
365
366	A bug that caused garbage to be in the buffer if the temp file
367	overflowed has been fixed.  (This only affected non-VMUNIX systems
368	since the temp file cannot overflow on VMUNIX.)
369
370	When a macro or global is undone, you no longer get picked up and
371	dropped on line 1.
372
373	The character | can now be escaped with \| in file names.
374
375	A bug which prevented the confirm option to a substitution that
376	was inside a source command has been fixed.
377
378	A bug which caused the editor to not work if the tab stop size
379	did not divide the screen width has been fixed.
380
381	A bug on HP terminals that caused the screen to be messed up if
382	you scrolled up something that began the same way as the echo line
383	has been fixed.
384
385	A macro bug which sometimes caused the next character after an
386	escape to be ignored on an HP terminal has been fixed.
387
388	A bug which caused unmap of strings with length 2 to fail has been
389	fixed.
390
391	A bug which left vi confused if you invoked a macro containing a
392	quit to command mode and then did an undo has been fixed.
393
394	An old ed bug which caused globals to fail when they did a substitute
395	on the next line has been fixed.
396
397	The % operator will now find matching square brackets the same way
398	it does parentheses and braces.  It will not display them in
399	showmatch mode, however, and will not use a ] to match all ('s.
400
401	Code has been added to handle the Beehive Superbee terminal,
402	using f1 for escape and f2 for control C.
403
404	The default value of the option shell is now taken from the
405	environment variable SHELL, if present.
406
407Version 3.3 -- February 2, 1980
408
409	The default window sizes have been changed.  At 300 baud the
410	window is now 8 lines (was 1/2 the screen size).  At 1200 baud
411	the window is now 16 lines (was 2/3 the screen size, which was
412	usually also 16 for a typical 24 line CRT).  At 9600 baud the
413	window is still the full screen size.  Any baud rate less than
414	1200 behaves like 300, any over 1200 like 9600.
415
416	A new command mode command "x" (for "xit") has been added.  This
417	is the same as wq but will not bother to write if there have been
418	no changes to the file.  The command letter was chosen for
419	convenience and compatibilty with hed.
420
421	The command "ZZ" from vi is the same as ":x<cr>".  This is
422	the recommended way to leave the editor.  Z must be typed twice
423	since this is two easy to type by accident and has such severe
424	effects if unintentional.
425
426	The options w300, w1200, and w9600 can be set.  They are synonyms
427	for "window", but only apply at 300, 1200, or 9600 baud, resp.
428	Thus you can specify you want a 12 line window at 300 baud and
429	a 23 line window at 1200 baud with
430		:set w300=12 w1200=23
431
432	It is now possible to say
433		:set window=5
434	and get the effect the next time the screen is redrawn from scratch.
435	(^L and Hit return to continue don't start from scratch.)
436	This is sort of pointless, since both
437		5:<cr>
438	and
439		z5<cr>
440	do the same thing with better results.
441
442	The editor no longer uses nondestructive space, except when in
443	insert mode.  It instead prints the character it would be
444	moving over.  This is a real win on terminals that use an
445	escape sequence to nd space.
446
447	It is now possible from visual to string several search expressions
448	together separated by semicolons the same as command mode.  For
449	example, you can say
450		/foo/;/bar
451	from visual and it will move to the first "bar" after the next "foo".
452	This also works within one line.
453
454	The option "mapinput" is dead.  It has been replaced by a much
455	more powerful mechanism: :map! (e.g. put an ! after the map).
456	Map and unmap commands with ! apply only to input, others apply
457	only to command mode.
458
459	The new option "timeout" (default on) causes macros to time out
460	after one second.  Turn it off and they will wait forever.
461
462	By using map! and setting notimeout, it is possible to get the
463	effect of emacs abbreviation mode.  Sanity checking is turned off
464	for map when ! is present.  This is a crude facility and does not
465	take into account things like the abbreviation being part of a longer
466	word.  It also does not echo until it is satisfied.
467
468	The new option "remap" (default on) causes the editor to attempt
469	to map the result of a macro mapping again until the mapping fails.
470	This makes it possible, say, to map q to # and #1 to something else
471	and get q1 mapped to something else.  Turning it off makes it possible
472	to map ^L to l and map ^R to ^L without having ^R map to l.
473
474	The new option "undomacro" (default on) makes it possible to undo
475	macros as a unit.  Leaving it off causes macros not to be treated
476	specially.  Macros with zero or one change work better with noum,
477	with two or more changes better with um.  This option may go away
478	if it becomes unnecessary.
479
480	The new (string) valued option "tags" allows you to specify a list
481	of tag files, similar to the "path" variable of csh.  The files
482	are separated by spaces (which are entered preceded by a backslash)
483	and are searched left to right.  The default value is
484	"tags /usr/lib/tags", which has the same effect as before.
485	It is recommended that "tags" always be the first entry.
486	On Ernie, /usr/lib/tags contains entries for the system defined
487	library procedures from section 3 of the manual.
488
489	^R is now the same as ^L on terminals where the right arrow key
490	sends ^L (The tvi and the adm 31).
491
492	Looking for a tag now uses binary search.
493
494	The "q" command from visual no longer works at all.  You must
495	use "Q" to get to ex command mode.
496
497	A minor incompatibility with the v7 ed has been fixed.  Previously,
498	to do a global substitute with an escaped newline in the rhs, you
499	had to put two \'s in ex and one in ed.  Ex now accepts the single
500	form as well as the double form.  For example, instead of
501		g/foo/s//foo\\
502		bar/g
503	(which still works), you can now type, as in ed,
504		g/foo/s//foo\
505		bar/g
506	This means that the following ex command, which used to "work":
507		g/foo/s//foo bar\
508		.+1,/mumble/d
509	won't work anymore unless you put the trailing / on the substitution.
510	This usage is pretty obscure anyway.
511
512	Several bugs relating to undoing macros have been fixed.
513
514	A bug which caused the command "g/pattern" to print an error
515	message if "pattern" occurred on the last line has been fixed.
516
517	If you reply ":" to "Hit return to continue", you will again be
518	asked "Hit return to continue" after the next command finishes.
519
520	Limits have been raised so that an Ann Arbor terminal can be used,
521	and long tags can now be accomodated.
522
523	The maximum length of a string valued option has been raised from
524	32 to 64, for the benefit of the "tags" option.
525
526	It is now possible to search for an escape or delete using f, F, t,
527	T, ;, and ,.  These characters must be quoted with ^V.
528
529	The option "ttytype" is now in correct alphabetical order.
530
531	A bug that caused HP terminals to mess up in insert mode when inserting
532	before a tab which follows 7 or fewer characters at the beginning of a
533	line (such as a tags file) has been fixed.
534
535	It is now possible to include control D in your EXINIT or .exrc.
536
537	A bug which caused the screen to mess up when a glob (such as xx*)
538	doesn't match anything has been fixed.
539
540	The editor now checks for extra junk after a /r.e./ from visual
541	(other than the allowed z command) and beeps if any is found.
542	Previously it was just ignored.
543
544	A bug that caused j and k (up and down) to behave strangely after
545	an insertion has been fixed.
546
547	A bug which causes term to be displayed incorrectly and which
548	caused a crash when changing terminal type when there happened
549	to be several |'s and a long string in genbuf has been fixed.
550	This bug was introduced in ex 2.9.
551
552	The patch for echo lines longer than 80 characters has been
553	repaired to do "Hit return to continue" after such lines and
554	print the entire output.
555
556	A bug that caused a messed up screen after a :sh command from
557	open mode has been fixed.
558
559	A bug which caused a tag request for a nonexistant tag to leave
560	the editor in nomagic mode has been fixed.
561
562	A bug which caused strange behavior if there is no default file
563	name when an autowrite save is attempted has been fixed.
564
565	A bug which caused the cursor to go to the wrong position when
566	^^D or 0^D is entered from column 2 in autoindent mode on terminals
567	that can backspace has been fixed.
568
569Version 3.2 -- January 4, 1980
570
571	A bug that caused nomagic to be set if an error happened within
572	a tag command has been fixed.
573
574	A bug that caused put commands to beep after a macro containing
575	an error has been fixed.
576
577	The mapinput option has been placed in alphabetical order.
578
579	A bug that caused undo to undo more than one macro invocation
580	on the same line has been fixed.
581
582	On non VM/UNIX systems, the screen size has been increased to
583	allow a 40 X 80 Ann Arbor to be used.
584
585Version 3.2 -- December 28, 1980
586
587	Several limits have been increased for VM/UNIX.  Longer lines,
588	more characters of file names, longer regular expressions, etc.
589	Huge files can now be edited directly.  Larger terminals (up to
590	66 lines) can be used.
591
592	An internal change has been made for VM/UNIX that causes error
593	messages to be stored directly instead of in a disk file.
594	This should cause faster response to errors.
595
596Version 3.1.1 -- December 13, 1979
597
598	A bug that caused nested macros not to be undoable has been fixed.
599
600	A bug that caused pounding on the escape key on terminals with
601	arrow keys that send escape sequences to cause undo to screw up
602	has been fixed.
603
604	It is now acknowledged that macros cannot contain the put command.
605	This is due to the implementation of put - previously a put inside
606	a macro dumped a copy of the buffer instead of the desired text and
607	left the editor in a very strange state.  Now such a put just beeps.
608
609Version 3.1 -- November 1, 1979
610
611	Versions from 3.1 up are too large to fit on pdp-11's.
612	(Special overlay software is expected to be available soon
613	for v7 pdp-11 Unix that will make it fit.) Version 2.9
614	is 3.1 with only the bug fixes and very few of the enhancements.
615	2.9 will fit on a pdp-11. Version 2.10 will come out and may
616	correspond to 3.2. (It turned out to correspond to 3.3)
617
618	For compatibility with ed:  's<newline>' may be used as a
619	command and means '&'.  If you set the option "edcompatible"
620	(abbr "ed") the presense or abscence of g and c suffices is
621	remembered and can be toggled by repeating the suffices.  The
622	suffix "r" makes the substitution into "~" instead of "&".
623
624	A new command line option -w<n> sets the value of window before
625	starting ex. Hence: 'vi -w5 file' makes a quick change to a file
626	easier at 300 baud.
627
628	Arrow keys on terminals that send more than 1 character now
629	work.  Home up keys are supported as are the four directions.
630	Ex no longer looks at the ma= entry in termcap, but uses the
631	ku, kd, kl, kr, and kh entries.  (Note that the HP 2621 will
632	turn on function key labels, and even then you have to hold
633	shift down.  To avoid turning on the labels, and to give up the
634	function keys, use terminal type 2621nl instead of 2621.)
635
636	A parameterless macro facility is included from visual. Briefly,
637	there are two flavors of macros:
638		a) Put the macro body in a buffer register, say x. Then
639		   type @x to invoke it. @ may be followed by another @
640		   to repeat the last macro.
641		   This allows macros up to 512 chars.
642		b) Use the map command from command mode (typically in the
643		   .exrc file) as follows:
644			map lhs rhs
645		   where lhs will be mapped to rhs.
646		   There are restrictions: lhs's should be 1-keystroke
647		   (either 1 char or 1 function key) since they must be
648		   entered within 1 second. lhs no longer than 10 chars,
649		   rhs no longer than 100. To get " ", "\t", "|", or "\n"
650		   into lhs or rhs, escape them with ctrl V. (It may be
651		   necessary to escape the ctrl V with ctrl V if the map
652		   command is given from visual mode.)
653	For 1 shot macros it is best to put the macro in a buffer register
654	and map a key to '@r', since this will allow the macro to be edited.
655
656	Macros can be deleted with
657		unmap lhs
658
659	The boolean option "mapinput" (mi) will, if on, cause macros to
660	be mapped in input mode as well as command mode (in visual only).
661	For example, you can define ctrl T to be four spaces with
662		:map ^V^T_^V^V____
663		:set mi
664	where underlines represent spaces and the ctrl V's are necessary
665	to get ctrl chars and spaces past various levels, and make ^T be
666	a software tab that even works in the middle of a line.
667
668	If the lhs of a macro is "#0" through "#9", this maps the particular
669	function key instead of the 2 char # sequence, if the terminal has
670	function keys. This only works if termcap has function key entries
671	for the particular terminal. For terminals without function keys,
672	the sequence #x means function key x, as typed. As a special case,
673	on terminals without function keys, the #x sequence need not be
674	typed within one second. The character # can be changed by using
675	a macro in the usual way:
676		map ^V^I #
677	to use tab, for example. (This won't affect the map command, which
678	still uses #, but just the invocation from visual mode.)
679	The undo command will undo an entire macro call as a unit.
680
681	New commands in visual: ^Y and ^E. These glitch the screen up
682	and down 1 line, respectively. They can be given counts, controlling
683	the number of lines the screen is glitched. They differ from ^U
684	and ^D in that the cursor stays over the same line in the buffer
685	it was over before rather than staying in the same place on the
686	screen. (^Y on a dumb terminal with a full screen will redraw the
687	screen moving the cursor up a few lines.) If you're looking for
688	mnemonic value in the names, try this: Y is right next to U and
689	E is right next to D.
690
691	More new commands in visual: '&' is a synonym for ':&<cr>'.
692	'~' changes the case of the letter under the cursor and moves
693	to the next character.
694
695	Ex looks in your environment for EXINIT. If it finds it, that
696	is used instead of looking for your .exrc. This should make
697	entry into ex faster, along with the termlib feature of looking
698	for a termcap entry in TERMCAP.
699
700Version 2.13 -- September 23, 1980
701
702	The provisions for changing the window size with a numeric
703	prefix argument to certain visual commands have been deleted.
704	The correct way to change the window size is to use the z
705	command, for example z5<cr> to change the window to 5 lines.
706
707	An undocumented "feature" which caused the ^^ command to return
708	to the previous tag, if in the current file, instead of the
709	previous file, has been removed.
710
711Version 2.12 -- July 23, 1980
712
713	A change was made to the sys_errlist array in ex_subr.c so that
714	Berkeley V7 quotas will produce the right error message.
715
716	A couple of minor bug fixes were made to get the editor to
717	compile on version 6.  The option to use 1K BUFSIZ has been
718	deleted, since it is no longer used on our 1K system.
719
720Version 2.11 -- June 24, 1980
721
722	The visual page motion commands ^F and ^B now treat any preceding
723	counts as number of pages to move, instead of changes to the
724	window size.  That is, 2^F moves forward 2 pages.
725
726	A :vi <file> command from visual mode is now treated the same
727	as a :edit <file> or :ex <file> command.  The meaning of the
728	vi command from ex command mode is not affected.
729
730	A read only mode now lets you guarantee you won't clobber your
731	file by accident.  You can set the on/off option "readonly" (ro)
732	and writes will fail unless you use an ! after the write.
733	Commands such as x, ZZ, and autowrite, and in general anything
734	that writes is affected.  This option is turned on if you invoke
735	ex with the -R flag.  A new link called "view" has been  created.
736	View is just like vi but it sets readonly.
737
738	The editor now supports certain terminals that use strings other
739	then \r and \n for return and linefeed by implementing the cr
740	and nl termcap options.  (Thanks to UCLA for these enhancements).
741
742	The termcap attribute ns is now checked for, and ex refuses to
743	go into visual mode on such a terminal unless it has sf.
744
745	If you change your start and stop characters to something other
746	than the default ^S and ^Q, vi now turns them off.  This causes
747	people who change them to escape not to lose so badly.
748	The quit character is once again turned off so that datamedias
749	which send ^\ for the right arrow key work.
750
751	If you type in an unmatched ) or } in showmatch mode, the editor
752	will now beep to warn you about your mistake.  The ) or } is
753	still accepted.
754
755	Editor scripts can now contain comments.  Begin the comments with "
756	(double quote).  Comments can be on their own line or come at the
757	end of command lines.  The comment continues to the end of the line.
758
759	The 3rd version of the USG tty driver is now supported, making it
760	possible on USG systems to interrupt redrawing the screen and to
761	not flush output when interruptable commands take place.
762
763	The rewind command has been added to the list of commands that
764	the autowrite option knows about.
765
766	A bug on the USG system where hanging up the phone causes more
767	than one SIGHUP to be sent has been compensated for.
768
769	A bug which caused a file that bombed out in the middle of
770	an edit command to be considered modified has been fixed.
771
772	The source file ex_io.c has been split into ex_io.c and
773	ex_unix.c to avoid a problem where many C compilers overflowed
774	the symbol table.
775
776	A bug which prevented turning off your prompt in your .exrc
777	has been fixed.
778
779	Some of the code internal to the editor has been rearranged
780	and some comments added.
781
782	The bug fix to the USG tty driver to output a null character
783	as padding at 1200 baud has been improved to output a DEL
784	at 1200 baud or above.
785
786	Terminals with small screens (less than 20 columns or less
787	than 5 lines) should now work.
788
789	A bug which prevented you from entering the character DEL
790	into the buffer if you changed your interrupt character to
791	something else besides DEL has been fixed.
792
793	A bug which caused things like d) and d} to miss the last
794	character when they should have deleted to the end of the
795	buffer has been fixed.
796
797	A bug which caused the last character to be lost when you
798	read in a file with no newline at the end of the last line
799	has been fixed.
800
801	A bug that caused garbage to be in the buffer if the temp file
802	overflowed has been fixed.
803
804	The character | can now be escaped with \| in file names.
805
806	A bug which caused the editor to not work if the tab stop size
807	did not divide the screen width has been fixed.
808
809	A bug on HP terminals that caused the screen to be messed up if
810	you scrolled up something that began the same way as the echo line
811	has been fixed.
812
813	An old ed bug which caused globals to fail when they did a substitute
814	on the next line has been fixed.
815
816	The % operator will now find matching square brackets the same way
817	it does parentheses and braces.  It will not display them in
818	showmatch mode, however, and will not use a ] to match all ('s.
819
820	Ex looks in your environment for EXINIT. If it finds it, that
821	is used instead of looking for your .exrc. This should make
822	entry into ex faster, along with the termlib feature of looking
823	for a termcap entry in TERMCAP.
824
825	Internally, it is possible to turn off about a dozen different
826	options when compiling the editor to make it fit in 64K.
827	See the makefile for a list of options.
828
829Version 2.10 -- February 2, 1980 (Corresponds to 3.3)
830
831	The default window sizes have been changed.  At 300 baud the
832	window is now 8 lines (was 1/2 the screen size).  At 1200 baud
833	the window is now 16 lines (was 2/3 the screen size, which was
834	usually also 16 for a typical 24 line CRT).  At 9600 baud the
835	window is still the full screen size.  Any baud rate less than
836	1200 behaves like 300, any over 1200 like 9600.
837
838	A new command mode command "x" (for "xit") has been added.  This
839	is the same as wq but will not bother to write if there have been
840	no changes to the file.  The command letter was chosen for
841	convenience and compatibilty with hed.
842
843	The command "ZZ" from vi is the same as ":x<cr>".  This is
844	the recommended way to leave the editor.  Z must be typed twice
845	since this is two easy to type by accident and has such severe
846	effects if unintentional.
847
848	The options w300, w1200, and w9600 can be set.  They are synonyms
849	for "window", but only apply at 300, 1200, or 9600 baud, resp.
850	Thus you can specify you want a 12 line window at 300 baud and
851	a 23 line window at 1200 baud with
852		:set w300=12 w1200=23
853
854	The "q" command from visual no longer works at all.  You must
855	use "Q" to get to ex command mode.
856
857	The editor no longer uses nondestructive space, except when in
858	insert mode.  It instead prints the character it would be
859	moving over.  This is a real win on terminals that use an
860	escape sequence to nd space.
861
862	A minor incompatibility with the v7 ed has been fixed.  Previously,
863	to do a global substitute with an escaped newline in the rhs, you
864	had to put two \'s in ex and one in ed.  Ex now accepts the single
865	form as well as the double form.  For example, instead of
866		g/foo/s//foo\\
867		bar/g
868	(which still works), you can now type, as in ed,
869		g/foo/s//foo\
870		bar/g
871	This means that the following ex command, which used to "work":
872		g/foo/s//foo bar\
873		.+1,/mumble/d
874	won't work anymore unless you put the trailing / on the substitution.
875	This usage is pretty obscure anyway.
876
877	A bug which caused the command "g/pattern" to print an error
878	message if "pattern" occurred on the last line has been fixed.
879
880	Limits have been raised so that an Ann Arbor terminal can be used,
881	and long tags can now be accomodated.
882
883	A bug that caused HP terminals to mess up in insert mode when inserting
884	before a tab which follows 7 or fewer characters at the beginning of a
885	line (such as a tags file) has been fixed.
886
887	A bug which causes term to be displayed incorrectly and which
888	caused a crash when changing terminal type when there happened
889	to be several |'s and a long string in genbuf has been fixed.
890	This bug was introduced in ex 2.9.
891
892	The patch for echo lines longer than 80 characters has been
893	repaired to do "Hit return to continue" after such lines and
894	print the entire output.
895
896	A bug that caused a messed up screen after a :sh command from
897	open mode has been fixed.
898
899	A bug which caused a tag request for a nonexistant tag to leave
900	the editor in nomagic mode has been fixed.
901
902	A bug which caused strange behavior if there is no default file
903	name when an autowrite save is attempted has been fixed.
904
905	A bug which caused the cursor to go to the wrong position when
906	^^D or 0^D is entered from column 2 in autoindent mode on terminals
907	that can backspace has been fixed.
908
909	In order to get 2.10 to fit on a v7 pdp-11, the following features
910	have been deleted:
911		The MASTERTAGS feature (undocumented use of /usr/lib/tags
912		as an alternate tag file)
913		Checking that a file being read in is an ascii file.
914		Turning off ^Q/^S on a v7 system.
915
916Version 2.9 -- November 1, 1979
917
918	The meanings of semicolon and newline, broken in 2.8, have been fixed.
919	Newline with two arguments still prints the range, unless a semicolon
920	was present, in which case only the last line is printed. Semicolon
921	otherwise behaves as in ed (and ex 2.7).
922
923	For compatibility with ed: '%' is an abbreviation for '1,$'.
924	The default starting line for 'z' is '.+1' instead of '.'.
925	If 'z' is followed by a number, this number is remembered
926	(by setting the scroll option).
927
928	The + options to the command line invocation and to the edit
929	command now also work for the next command. In addition, the
930	text after the + is no longer limited to a line number or
931	/ or ? search string, but can be any single command. (It cannot
932	contain spaces except on command line invocation, and then must
933	be quoted to make the shell happy.)  The only special case is
934	where + is used by itself - this is the same as +$.
935
936	The way window sizes and scrolling commands are based on the options
937	window and scroll has been rearranged. All command mode scrolling
938	commands (z and ctrl D) are based on scroll: ^D moves scroll lines,
939	z moves scroll*2 lines. Everything in visual (^D, ^U, ^F, ^B, z,
940	window sizes in general) are based on the window option. The
941	defaults are arranged so that everything seems as before, but
942	on hardcopy terminals at 300 baud the default for scroll is
943	11 instead of 6.
944
945	Whether ex prompts for commands now depends on the setting of the
946	prompt variable, so inside script you can say 'set prompt' and
947	get ex to prompt.
948
949	Tags are now searched for in nomagic mode instead of the funny
950	mode where magic characters were impossible to get.
951
952	Paragraphs and sections with one letter names (such as those
953	used by PWB/MM) now work - use a space (escaped by a backslash)
954	for the second letter. Default paragraphs and sections are included
955	for both MM and MS. (Thanks to adb for this)
956
957	A bug involving 16 bit arithmetic on a vax for the yank command
958	has been fixed.
959
960	The text of the mailed message from expreserve has been improved
961	slightly.
962
963	The editor now always turns off the XTABS stty bit when in visual
964	mode, making terminals that do special things with ^I work.
965
966	The editor now knows about terminals with destructive tabs, like
967	the teleray 1061, having the xt option.
968
969	A bug that caused going past column 80 on terminals with insert line
970	but not insert char (like the mime, h1500, or i100) to mess up the
971	screen has been fixed.
972
973	A bug on 2621's that causes lines longer than 80 chars long with
974	embedded tabs to mess up when a tab was inserted has been fixed.
975
976	A bug that caused the wrong line to suddenly appear under very
977	rare circumstances involving small window sizes and long lines
978	where a search left the cursor on the top line of the screen
979	has been fixed.
980
981	The bug that caused inverse video to sometimes be scrolled up
982	into the file from an error message has been fixed.
983
984	The join command has been fixed, so that '3,3j' no longer joins
985	lines 3 and 4. ('3j' still does.) Thus, '/a/;/b/-j' works right
986	even if b is found on the line after a.
987
988	ex -v now finds your .exrc. In related changes, the default in
989	vi is now magic and nobeautify.
990
991	If your buffer is empty, ex won't refuse to do an edit, quit,
992	or tag command because you haven't done a write.
993
994	A bug causing visual undo not to work after '1,$!cat' has been
995	fixed.
996
997	Ex now decides for itself whether to use CBREAK or TIOCSETN
998	by whether they are defined in <sgtty.h>. This eliminates much
999	of the #ifdef USG or V6 lines. One USG line remains due to a bug
1000	in the USG tty driver at 1200 baud.
1001	Note that this will mess up if you use libretro because <sgtty.h>
1002	has CBREAK and TIOCSETN defined. Take these out of sgtty.h to fix this.
1003
1004	Termcap options TI and TE have been added.  These strings are
1005	respectively output at the beginning and end of the editing session.
1006
1007	Values for the set command may now include `\ ' for space and
1008	control characters.
1009
1010	Changes have been made to /etc/termcap (several new fields have
1011	been added) and to termlib (it now looks for TERMCAP in the environment
1012	and treats it as a termcap entry if the name of the terminal mentioned
1013	is the same as TERM and the entry doesn't start with a slash.
1014	If it starts with a slash it is treated as a filename, as before.
1015	Termcap also checks the 512 byte entry limit and skips lines beginning
1016	with # as comments. It is possible to define one terminal as being
1017	similar to another one with a few differences without making two
1018	copies of the description.) New termcap fields:
1019		ti	terminal initialization string. This should be sent
1020			out at the beginning of any program that addresses
1021			the cursor.
1022		te	Like te but at end of the program.
1023			(Thanks to adb for these two fields)
1024		us	Start underlining.
1025		ue	End underlining.
1026		uc	Underline one character & move over it.
1027		hc	(bool) terminal is hardcopy
1028		ns	(bool) terminal doesn't scroll (tektronix)
1029		ff	(bool) hardcopy knows ^L means formfeed.
1030		pt	(bool) hardware tabs, maybe set by is
1031		xt	(bool) destructive tabs (teleray 1061)
1032		ku	sequence sent by keypad "up" arrow
1033		kd	"down" arrow
1034		kl	"left" arrow
1035		kr	"right" arrow
1036		kh	"home" arrow
1037		ks	sequence to make keypad send these codes
1038		ke	sequence to make keypad not send these codes.
1039		k0-k9	sequences sent by up to 10 "other" keys
1040		l0-l9	labels on k0-k9. If omitted, default = "f0" - "f9".
1041		ko	additional keys on keypad, in terms of their
1042			termcap entry. For example, if "home down" and "clear"
1043			are present and send the same codes as ll and cl, use
1044				:ko=cl,ll:
1045		tc	This entry is a list of differences from the named
1046			entry. THIS MUST BE THE LAST FIELD. Example: hp2621
1047			with no ks or ke (e.g. null string):
1048				hn|hp2621nl:ks@:ke@:tc=hp2621:
1049			The @ cancels the string even if it is defined later.
1050
1051Version 2.8 -- July 18, 1979
1052
1053	It is now possible to backspace over the first character (:, /, or ?)
1054	on the echo line from visual. The effect is as though delete were hit
1055	except the bell isn't rung.
1056
1057	The trailing slash in global commands is now optional.
1058	g/pat	means	g/pat/p
1059	(This change, as well as the corresponding changes to the substitute
1060	command and r.e. address are also in the latest version of ed.)
1061
1062	The j, k, and l keys now move the cursor down, up, and right,
1063	respectively, in visual mode, as they used to do (and still do on
1064	3a's). This is to avoid the creeping of these keys into the map
1065	descriptions of terminals and to compensate for the lack of arrow
1066	keys on terminals like HP's.
1067
1068	Two arguments given to a newline command now print the range of
1069	lines instead of just the last line (as though 'p' were appended).
1070	To make forms like /foo/;/bar/	still work, the ; operator sets
1071	the dot as before but then forgets everything to the left of the ;.
1072
1073	The + option invoked from the shell or the edit command has
1074	two new forms:	+/pat	and 	+?pat
1075	These cause the initial line to be chosen by a search for the
1076	pattern pat. Note that if any special characters are in the
1077	argument (such as ^, $, and even ?) it must be quoted.
1078
1079	Two new options are added: autowrite (aw) and hardtabs (ht).
1080	Autowrite is a toggle, off by default. When on, if you have
1081	unsaved changes before a context switching command, a write
1082	is done automatically. The commands that may write are !,
1083	next, and tag. Note that there is an equivalent way to do the
1084	command with autowrite set without the write in each case:
1085	shell, tag!, and edit do not write.
1086
1087	Hardtabs is a numeric option,, set to 8 by default.
1088	Changing this to, say, 4, tells ex that either your system
1089	expands tabs to every 4 spaces, or your terminal has hardware
1090	tabs set every 4 spaces.
1091
1092	A bug that caused strange behaviour when an echo line contained
1093	more than 79 characters (from a long : command or one or more long
1094	filenames) has been patched by not printing any such characters
1095	past column 79.
1096
1097	Handling of systems with nonstandard locations of files (where
1098	the maintainer of ex is not a superuser and cannot create files
1099	with names like /usr/lib/ex2.0strings or /etc/termcap) has been
1100	improved. If the file can't be found as is, it is tried in the
1101	current directory. If that fails, ex tries to run without it.
1102	(Previously it bombed immediately if the error message file wasn't
1103	in /usr/lib.)
1104
1105	Shell commands containing ! or % characters are no longer echoed
1106	when in hush mode (as in 'ex -' from a shell file.)
1107
1108Version 2.7 -- June 10, 1979
1109
1110	An inefficiency introduced in version 2.3, which increased the
1111	amount of time spent preparing output by approximately 30 percent
1112	has been corrected.
1113
1114	A bug which caused ``wrapmargin'' to work as though all hardcopy
1115	terminals were 160 columns wide has been corrected.
1116
1117	A bug which caused the display to become confused after the display
1118	of a long line at the bottom of the screen was suppressed (being
1119	replaced temporarily by an @) has been fixed.  Previously, under
1120	some circumstances (e.g. after a put created the situation), scrolling
1121	up of the following text would cause the display of this long
1122	line to be skipped, so that the @ line would remain and the line
1123	itself would not be displayed.
1124
1125Version 2.6 -- June 2, 1979
1126
1127	A bug which prevented the first field separator in a tags file
1128	from beginning with a blank has been fixed; if the separator
1129	was a blank previously, the tag would not be found in the tags file.
1130
1131	A bug which caused the display to be messed up after a ``:''
1132	escape which created long lines has been fixed.  Previously
1133	a substitute command which changed the last few lines on the screen
1134	to be very long would leave the screen messed up.
1135
1136	A bug in display after 2 successive ``undo'' commands has been fixed.
1137	Previously if you opened new lines on the display, and then did
1138	2 successive undo commands, the display would be messed up after the
1139	second undo if your terminal had insert/delete line.
1140
1141	A bug on intelligent terminals which caused unnecessary delete
1142	character commands to be sent has been fixed.  This occurred when
1143	you did not have ``autoindent'' set, and opened a new line
1144	below an existing line with tabs.
1145
1146	The change operations in open mode on hardcopy terminals has been
1147	fixed.  Previously there were several bugs in cursor placement
1148	when the change extended to just before a tab character.
1149
1150	Several bugs in the handling of tabs in insert mode on intelligent
1151	terminals have been fixed.  Previously, tabs would often expand
1152	incorrectly, leaving the wrong amount of white space, when an
1153	insert occurred just before a tab.
1154
1155	A bug has been fixed which caused the editor to skip processing
1156	of the ``.exrc'' file when the terminal type set in the
1157	environment was unknown.  The editor now processes ``.exrc'' in
1158	this case.
1159
1160	[[A number of formatting changes have been made to the editor code
1161	to eliminate unreasonably long lines.  In addition, the code
1162	from the Murray Hill and USG sites has been merged in conditionally,
1163	so that all sites can compile from the same source.]]
1164
1165Version 2.5 -- May 28, 1979
1166
1167	A bug which caused the VE sequence not to be sent when exiting
1168	the editor via :q or :wq from visual has been fixed.
1169
1170	A bug which caused the command r^Q<ESC> to be weird when it
1171	was repeated has been fixed.
1172
1173	The $ command now sets the column for future cursor motions to
1174	effective infinity.  Thus a `$' followed by up/down cursor motions
1175	moves at the right margin of each line.
1176
1177	[[Internal: a bug in conditional compilation without the LISP
1178	features has been fixed.]]
1179
1180	Several bugs relating to insert mode and intelligent terminals
1181	have been fixed:
1182
1183	A bug which caused inserts on HP/DATAMEDIA like terminals to act
1184	strangely when the material was inserted immediately before a tab
1185	has been fixed.
1186
1187	A bug which caused the insertion of full tabs to not appear to
1188	insert as many spaces as required (under strange circumstances)
1189	has been fixed.
1190
1191	A bug which caused inserts on terminals with insert/delete line
1192	but no insert/delete character to act strangely if the insert
1193	caused a line to overflow has been fixed.
1194
1195	The ``expreserve'' program has been improved; you now will get
1196	mail if a file is saved for you as a result of your phone being
1197	hung up accidentally.
1198
1199Version 2.4 -- May 19, 1979
1200
1201	A bug during inserts on intelligent terminals which occasionally
1202	caused double ``~~'' characters on the last few lines of the display
1203	rather than just single `~' characters has been fixed.
1204
1205	The w W b B e and E operations in visual now wrap around line
1206	boundaries.  Thus a sequence of enough w commands will get to any
1207	word below the current position in the file, and b's will back
1208	up to any place before.  Thus these are more like the sentence
1209	operations ( and ).  You still can't back around line boundaries
1210	duing inserts however.
1211
1212Version 2.3 -- May 13, 1979
1213
1214	The P command to ex is now a synonym for p, so that 1,$P works,
1215	if you don't let up on the shift key soon enough.
1216
1217	The / and ? operations within visual and open now hit later
1218	(or earlier resp) occurrences of the same string on the same
1219	line.  This makes scans using / and ? much more useful.  You
1220	can move to the right on the current line by typing /pref<ESC>
1221	where `pref' is a prefix of the word you wish to move to, and
1222	delete to a following string `str' by doing d/str<ESC> if it is
1223	on the same or succeeding line.  Previously the command
1224		d/pat/
1225	deleted lines through the next line containing `pat'; it now
1226	deletes text up to the next instance of `pat'.  To delete to
1227	the next line containing `pat', do
1228		d/pat/0
1229	which is short for
1230		d/pat/+0
1231	In general if you use an offset after the scanning pattern,
1232	whole lines will always be affected.
1233
1234	Several bugs relating to the setting of the previous context mark
1235	`` have been fixed, including one which caused operations such as
1236	d`` or c`` to occasionally dump core.  In particular, the operations
1237		( ) { } [[ ]] and %
1238	now set the previous context mark correctly, and the mark is set
1239	even if the motion by these operations lands in the same line.
1240
1241	More optimization is now done on output cursor motions.  This
1242	is particularly much better on HP terminals which have
1243	ridiculously long cursor addressing sequences.  A new
1244	capability has been added to the termcap file to aid this:
1245	``bt'' (backtab).  Thanks to Chuck Haley for the new code to
1246	implement this.
1247
1248	A bug has been fixed on intelligent terminals which caused part
1249	of the screen to be accidentally erased during insertions.
1250	This occurred only on the first line on the screen, when it
1251	became longer than one displayed line and only if a part of
1252	the screen (at the top) was currently not in use.
1253
1254	A bug has been fixed which caused the command ``dp'' to be interpreted
1255	as ``delete to register p''.  This normally went unnoticed since
1256	the ``autoprint'' option would cause the effect which the ``p'' was
1257	forcing.
1258
1259Version 2.2 -- May 6, 1979
1260
1261	"d)" now deletes a line if the current line is a sentence rather
1262	than leaving an empty line.
1263
1264	The command
1265		:s/str
1266	now deletes str if it can find it; previously it was an error.
1267
1268	The editor now handles multiple ":" escapes correctly; previously
1269	the screen would not be redrawn necessitating a ^L to fix it if you
1270	gave a `:!command' to ``[Hit return to continue]''.
1271
1272	Recursive calls to visual from within open or visual are no longer
1273	permitted.  Previously ``:vi'' from within open mode would eventually
1274	leave the editor in a strange state.
1275
1276	The %age in the status line is now correctly printed on 11's;
1277	Previously internal 16-bit overflows often caused it to be incorrect.
1278
1279	The editor now ignores a ":" in front of commands.
1280	Thus you can say ``:read foo'' within ex.
1281
1282	A bug which caused commands involving ]] to not be repeatable has
1283	been fixed.  Previously ``d]]'' followed by ``.'' caused an error.
1284
1285	"ayw now works correctly.  Previously this silently did nothing.
1286
1287	Several bugs in "recover" and "ex -r" have been fixed.  Thanks
1288	to Andy Koenig for the fixes.
1289
1290	In input mode in open and visual ^V (like tenex) is now equivalent
1291	to ^Q (which is reminiscent of ITS) superquoting the next character.
1292	A later version of the UNIX tty driver will implement the standard for
1293	^S ^Q handshaking and make ^Q unusable.
1294
1295	There are several typos on page 3 of the ``edit'' manual section:
1296		s/move "a/delete a/
1297		s/"a move ./put a/
1298		/move to copy/s//delete to yank/
1299
1300Version 2.1 -- April 5, 1979
1301
1302	Invoking ex via
1303		ex -l
1304	now sets "lisp" and "showmatch".  This is suitable for invocations
1305	from within Franz Lisp.  If you don't like "showmatch", you can
1306	still use "ex -l", just put the command
1307		set noshowmatch
1308	in your .exrc file.
1309
1310