xref: /illumos-gate/usr/src/cmd/vi/port/ex.news (revision 8b80e8cb6855118d46f605e91b5ed4ce83417395)
1#ident	"%Z%%M%	%I%	%E% SMI"	/* SVr4.0 1.12	*/
2#
3# CDDL HEADER START
4#
5# The contents of this file are subject to the terms of the
6# Common Development and Distribution License, Version 1.0 only
7# (the "License").  You may not use this file except in compliance
8# with the License.
9#
10# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
11# or http://www.opensolaris.org/os/licensing.
12# See the License for the specific language governing permissions
13# and limitations under the License.
14#
15# When distributing Covered Code, include this CDDL HEADER in each
16# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
17# If applicable, add the following below this CDDL HEADER, with the
18# fields enclosed by brackets "[]" replaced with your own identifying
19# information: Portions Copyright [yyyy] [name of copyright owner]
20#
21# CDDL HEADER END
22#
23
24**********************************************************************
25*** NOTE: All pre-1980 commentary has been removed from this file. ***
26**********************************************************************
27
28Version SVR3.1  	1986
29
30   MAJOR STRUCTURAL CHANGES & ENHANCEMENTS:
31
32	1. ex/vi modified to use an interim version of getopt(3),
33	   so that ex/vi can migrate to standardized command syntax.
34	   Syntax changes:
35
36		ILLEGAL (old)		LEGAL
37
38		-r [optional arg]	-L  (for listing of recovered files)
39					-r arg   (to recover file "arg")
40		+cmd			-c cmd
41		-   (for silent)	-s
42
43	   Both legal and (old) illegal options will be accepted
44	   for a period of time; later, the old illegal options
45	   will be dropped from ex/vi.
46
47	2. It is now possible to recover encrypted files.  The file header has
48	   been changed to include an encrypted flag.  Therefore, if the user
49	   types "vi -r file" when "file" is encrypted, the program will
50	   automatically check the header flag and prompt the user for the
51	   encryption key.  The actions are as follows:
52
53	      command line	encrypted file	  actions
54	      ------------	--------------	  -------
55	       vi -r file	   YES		prompted for key associated
56						with recovered file
57						[editing session not encrypted]
58
59	       vi -r file	   NO		regular recovery
60						[editing session not encrypted]
61
62	      vi -r -x file	   YES		prompted for editing session key
63						[editing session encrypted,
64						editing session key is used
65						to recover file]
66
67	      vi -r -x file	   NO  		prompted for editing session key
68						[editing session encrypted]
69
70	3. The structure of /usr/preserve has been changed to improve security.
71	   The directory /usr/preserve will have read-write-execute permissions
72	   for everybody.  Recovered files will be saved in a subdirectory in
73	   /usr/preserve.  The subdirectory name is the same as the user's id,
74	   owned by the user, and has read-write-execute permissions for the
75	   user only.  The recovered file in the subdirectory has read-write
76	   permissions for the user only.  Expreserve, exrecover, and /usr/preserve
77	   all have owner and group of "bin"; setuid bits in expreserve and
78	   exrecover have been turned off.
79
80	4. the command "vi -r" or "vi -L" used to list recoverable files,
81	   now lists the user's files found in /tmp as well as /usr/preserve/user
82	   so the user has a complete list.  Files are listed under the
83	   appropriate directory names.
84
85	5. name of source directory "vax" changed to "port"
86
87	6. exit code of ex/vi reflects number of error/warning messages
88	   incurred
89
90	7. ctags (used in conjunction with -t option and ":ta") now
91	   installed in /usr/bin/ctags (manual page in Section 1).
92
93	8. added ed-like enhancement such that "s/text/%" will replace
94	   "text" with the righthand side of the previous substitute
95	   command.
96
97	9. added argument to case operator "~" so that multiple substitutions
98	   per line can occur (e.g. "10~").
99
100   BUG FIXES:
101
102	1.*if input being read by source'd file and an error is
103	   encountered, the user is bumped up to the previous source
104	   level, instead of being thrown back into command mode.
105	2.*ex/vi restores tty state if fork fails.
106	3.*ex/vi allows backspacing and retyping of conditional
107	   responses (in the case of ":s/old/new/c").
108	4.*"U" (undo line changes) no longer marks file as modified
109	   when no editing has been done.
110	5.*file not automatically considered modified when "vi +cmd file"
111	   syntax used.
112	6.*actions of "ZZ" altered as follows:
113
114		COMMAND		      OLD ACTIONS	NEW ACTIONS
115		-------		      -----------	-----------
116		vi newfn; ZZ	      no file created	same as old action
117		vi oldfn; ZZ	      oldfn unchanged	same as old action
118		vi newfn; 1,$d; ZZ    no file created	write empty file
119		vi newfn; a text		         (0 char; 0 bytes)
120		  1,$d; ZZ	      no file created	write empty file
121		vi oldfn; 1,$d; ZZ    oldfn unchanged	write empty file
122		vi oldfn; a text;
123		 1,$d; ZZ	      oldfn unchanged	write empty file
124		vi oldfn; dd all; ZZ  write empty file	same as old action@
125
126	7.*cursor now moves to column 1 when HOME arrow key pushed in
127	   INSERT mode.
128	8.*if showmode set, it will display APPEND/INSERT/REPLACE(etc.) mode
129	   as appropriate.
130	9.*"novice" option can now be set or unset properly.
131       10.*yank-put now works when wrapmargin set and user tries to
132	   do a put at the end of a line (i.e., overlapping the wrap
133	   margin).  Similar problem also fixed for ":R" for replacements
134	   beyond 80 columns or overlapping wrap margins (whichever comes
135	   first).
136       11.*stop "!" from being expanded  within the shell escaped command
137	   line.  Now ":!!" or any "!!" (after the initial shell escape)
138	   will cause substitution of the last command.
139       12.*code fixed to allow hardtabs set to 0.  Now, if hardtabs set
140	   to 0 (i.e., terminal does not support hardtabs), ex/vi will
141	   use spaces to emulate tabbing.
142       13.*marks no longer lost after undo
143       14.*Note that the REPORT variable is 5 by default. For informatory
144	   messages when changes have been make for fewer than 5 lines,
145	   the user should ":set report=x" where x is a number.
146       15.*"/" no longer considered a command (for undo purposes)
147       16.*read done by ":Nr file" command  (where N is a line number)
148	   now correctly undone (by "undo" command)
149       17.*added boundary checks so that exceeding maximum permitted map
150	   statements does not generate core dump/infinite loops
151       18.*terminal-dependent mapping removed when the user redefines the
152	   terminal by "set term=xxx" from ex editor (i.e., so only one
153	   terminal is mapped).
154       19.*'w' (advance a word) no longer fails on lines with trailing spaces.
155       20.*newline character not added to empty file.
156       21.*showmode indicator remains on when arrow keys used (e.g., while in
157	   input mode, INPUT MODE indicator is on until the ESC key is pressed).
158       22.*an interrupt during a write operation will no longer cause truncated
159	   file with no backup (happened only if file had NOT been modified
160	   during edit session; otherwise, backup was automatically initiated).
161       23.*new set option "modelines" (abbreviated "ml") created to prevent
162	   accidental interpretation of code by modelines (i.e., any characters
163	   following "ex:" or "vi:" and ending with a ":" would be interpreted
164	   as an ex command that would be executed before the file is loaded
165	   into the editor).  Default of modelines is OFF.
166       24.*"ei:" and "vx:" no longer considered valid triggers to modelines
167       25.*abbreviations fixed so they do not loop recursively
168	   (i.e., ab yes yes!, or ab O O'Connal).
169       26.*J, 1J and 2J perform same operation: joining the current line and
170	   the next line together. 0J is actually two commands: 0 (meaning
171	   go to the beginning of the line) and J (join).
172       27.*when tmp file becomes too big, line of garbage no longer added to
173 	   file.
174       28.*":n +command" no longer infinite loops on 3b2's.
175       29.*%-matching is now interruptible.
176       30.*version information put into /usr/lib/exstrings file.
177
178Version 3.9  February 10, 1983
179
180	A new option "showmode" (smd) causes input mode to be indicated
181	toward the right end of the message line.  This is useful for
182	learning vi and for people who get confused about what mode they
183	are in.  Only the first letter of the message is shown if "terse"
184	is also set.
185
186	A new invocation "vedit" is for novices.  This is like edit but
187	puts you into visual mode right away.  It also sets showmode.
188
189	The default number of lines to scroll in visual mode on a
190	control D is now the variable scroll, not half the variable
191	window.
192
193	A bug causing extra CPU usage when vi is reentered after ^Z
194	has been fixed.  This also fixes a bug causing a hang until the
195	user types something if you are past column 80 before ^Z.
196
197Version 3.8  April 22, 1982
198
199	The main change is conversion from termcap to terminfo.
200
201	More function keys are supported now.  Most function keys
202	with a meaning to vi work both in command mode and input mode.
203
204	A bug in the encryption command causing plain text in the
205	temp file and encrypted text on your screen has been fixed.
206
207	A new command "crypt" or "X" enters encryption mode once
208	you have started editing, like the ed "x" command.
209
210	A new command line option "-V" (verbose) is useful for
211	debugging ex scripts.
212
213	A new boolean set option "flash" allows you to control whether
214	vi uses the visible bell in your terminal (if it has one).
215	The default is "flash", do "set noflash" if the flashing
216	is annoying.
217
218	The "open" boolean option has been deleted.  Ex will no longer
219	prevent the user from entering open mode.  This clears up problems
220	with paths and invocations containing the letter "d".
221
222	If the local system has the Cornell "Fast Timer" driver, vi uses
223	it instead of alarm to detect function keys.  This means that the
224	delay after typing escape will usually only be 0.1 second instead
225	of a full second.  Of course, if the user continues typing, there
226	is no delay at all.
227
228Version 3.7  October 16, 1981
229
230	It is now possible to split lines with substitute commands from vi,
231	by using ^V<return> in the rhs.  This takes care of the last
232	good reason for using ex command mode.
233
234	Mode lines are now supported.  Put a line containing
235		ex: xxx :
236	in the first or last 5 lines of the file, where xxx is any ex
237	command you want executed when that file is read in.  To make
238	other programs happy, it should probably be inside a comment.
239	You can use vi: as well as ex:.  (Note: no space allowed
240	between the "ex" and ":".  The spaces around xxx are considered
241	part of the command, and so are optional.)
242
243	If there is a file .exrc in the current directory, it will be
244	sourced when you enter vi, after your EXINIT or ~/.exrc.
245
246	The changeable scrolling region of the vt100 is now used in
247	place of insert line, resulting in much better performance.
248
249	Vi uses the new AL, DL, LE, RI, DO, and UP (all upper case)
250	termcap capabilities, which are parameterized versions of their
251	lower case equivalents.  This will results in better performance
252	on ANSI terminals, and especially on the Tektronix 4025 which
253	has parameterized local motions but cannot cursor address.
254
255	Vi uses backtabs again.  Now it knows how to handle backtabs on
256	terminals that have tabs set at intervals other than 8, and it
257	won't use backtabs if gtty indicates it can't use tabs.
258
259	A bug causing <escape> <del> to core dump vi has been fixed.
260
261	A bug causing writes to filters when editing encrypted files
262	to write encrypted text has been fixed.
263
264	A bug causing the message "substitution loop", when you enter a
265	1,$s/xxx/yyy/g with lots of changes, has been fixed.
266
267	A bug causing the current directory to be chmod'ed to 0 if you
268	set nomesg after starting up the editor has been fixed.  Note
269	that the nomesg option is intended for your EXINIT, since it only
270	takes effect on entry to the editor.
271
272	The eat newline glitch has been fixed so that vt100's and tab132's
273	handle long lines correctly.
274
275	Some internal changes have been made so that vi can run under UNIX
276	on the Bell Labs 3B machine, the BBN C/70, and the IBM 370.
277
278Version 3.6  October 30, 1980
279
280	A kernel problem on the V7 pdp-11 overlay systems which causes
281	bad EMT traps to happen randomly, core dumping the editor,
282	has been programmed around by catching EMT traps.
283
284	A bug which prevented using a screen larger than 48 lines has
285	been fixed.
286
287	A bug which allowed you to set window to a value larger than
288	your screen size has been fixed.
289
290	The screen size limit on non-VM/Unix systems has been increased
291	to 66 lines or 5000 characters, to allow the Ann Arbor Ambassador
292	terminal to be used.
293
294	A bug which caused hangups to be ignored on USG systems has
295	been fixed.
296
297	A bug which caused maps with multiple changes on multiple lines
298	to mess up has been fixed.
299
300	If you get I/O errors, the file is considered "not edited" so
301	that you don't accidentally clobber the good file with a munged
302	up buffer.
303
304	An inefficiency in 3.5 which caused the editor to always call
305	ttyname has been fixed.
306
307	A bug which prevented the "source" command from working in an
308	EXINIT or from visual has been fixed.
309
310	A bug which caused readonly to be cleared when reading from
311	a writable file with "r" has been fixed.
312
313	The name "suspend" has been made an alias for "stop".
314
315	The stop command now once again works correctly from command mode.
316
317	On a dumb terminal at 1200 baud, "slowopen" is now the default.
318
319	A bug in the shell script "makeoptions" which searched for a
320	string that appeared earlier in a comment has been fixed.
321
322	A bug that caused an infinite loop when you did ":s/\</&/g"
323	has been fixed.
324
325	A bug that caused & with no previous substitution to give
326	"re internal error" has been fixed.
327
328	A bug in the binary search algorithm for tags which sometimes
329	prevented the last tag in the file from being found has been fixed.
330
331	Error messages from expreserve no longer output a linefeed,
332	messing up the screen.
333
334	The message from expreserve telling you a buffer was saved when
335	your phone was hung up has be amended to say the editor was
336	terminated, since a kill can also produce that message.
337
338	The "directory" option, which has been broken for over
339	a year, has been fixed.
340
341	The "r" command no longer invokes input mode macros.
342
343	A bug which caused strangeness if you set wrapmargin to 1
344	and typed a line containing a backslash in column 80 has
345	been fixed.
346
347	A bug which caused the "r<cr>" at the wrapmargin column
348	to mess up has been fixed.
349
350	On terminals with both scroll reverse and insert line,
351	the least expensive of the two will be used to scroll up.
352	This is usually scroll reverse, which is much less annoying
353	than insert line on terminals such as the mime I and mime 2a.
354
355	A bug which caused vi to estimate the cost of cursor motion
356	without taking into account padding has been fixed.
357
358	The failure of the editor to check counts on ^F and ^B commands
359	has been fixed.
360
361	The "remap" option failed completely if it was turned off.
362	This has been fixed.
363
364	A check of the wrong limit on a buffer for the right hand side
365	of substitutions has been fixed.  Overflowing this buffer could
366	produce a core dump.
367
368	A bug causing the editor to go into insert mode if you typed
369	return during an R command has been fixed.
370
371	A bug preventing the + command from working when you edit a
372	new file has been fixed by making it no longer an error to
373	edit a new file (when you first enter the editor.)  Instead
374	you are told it is a new file.
375
376	If an error happens when you are writing out a file, such as
377	an interrupt, you are warned that the file is incomplete.
378
379Version 3.5 -- August 20, 1980
380
381	The provisions for changing the window size with a numeric
382	prefix argument to certain visual commands have been deleted.
383	The correct way to change the window size is to use the z
384	command, for example z5<cr> to change the window to 5 lines.
385
386	The code to handle the -x (encryption) option has been made
387	conditionally compiled, so that ex can run on an an 11/34 (!)
388	with overlays.  Since this code calls getpass, stdio was
389	being pulled in even without VMUNIX being defined.  The
390	savings from not defining CRYPT are about 4K of text and 4.5K
391	of bss.
392
393	Bill Joy put in a buffering scheme under the VMUNIX flag so
394	that up to 64K of file is edited in-core until you make enough
395	changes to force a temp file sync.  This makes entry into the
396	editor much faster, but also makes vi much bigger.
397
398	The source to ex is now sccs'ed.
399
400	An undocumented "feature" which caused the ^^ command to return
401	to the previous tag, if in the current file, instead of the
402	previous file, has been removed.
403
404	A bug which prevented ex from compiling on systems with the new
405	tty driver but no process control (such as Cory) was fixed.
406
407Version 3.4 -- June 24, 1980
408
409	The visual page motion commands ^F and ^B now treat any preceding
410	counts as number of pages to move, instead of changes to the
411	window size.  That is, 2^F moves forward 2 pages.
412
413	A :vi <file> command from visual mode is now treated the same
414	as a :edit <file> or :ex <file> command.  The meaning of the
415	vi command from ex command mode is not affected.
416
417	Provisions to handle the new process stopping features of the
418	Berkeley TTY driver have been added.  A new command, "stop",
419	takes you out of the editor cleanly and efficiently, returning
420	you to the shell.  Resuming the editor puts you back in command
421	or visual mode, as appropriate.  If autowrite is set and there
422	are outstanding changes, a write is done first unless you say
423	"stop!".  From visual mode, the command ^Z is the same as :stop.
424	Note that if you have an arrow key that sends ^Z the stop function
425	will take priority over the arrow function.  If you have your
426	"susp" character set to something besides ^Z, that key will be
427	honored as well.
428
429	A read only mode now lets you guarantee you won't clobber your
430	file by accident.  You can set the on/off option "readonly" (ro)
431	and writes will fail unless you use an ! after the write.
432	Commands such as x, ZZ, and autowrite, and in general anything
433	that writes is affected.  This option is turned on if you invoke
434	ex with the -R flag.  A new link called "view" has been  created.
435	View is just like vi but it sets readonly.
436
437	The encryption code from the v7 editor is now part of ex.
438	You invoke ex with the -x option and it will ask for a key,
439	as ed.  The ed "x" command (to enter encryption mode from
440	within the editor) is not available.
441
442	The editor now adopts the convention that a null string in the
443	environment is the same as not being set.  This applies to
444	TERM, TERMCAP, and EXINIT.
445
446	A word abbreviation mode is now available.  You can define
447	abbreviations with the abbreviate command
448		:abbr foo find outer otter
449	which maps "foo" to "find outer otter".  Abbreviations can be
450	turned off with the "unabbreviate" command.  The syntax of these
451	commands is identical to the map and unmap commands, except
452	that the ! forms do not exist.  Abbreviations are considered
453	when in visual input mode only, and only affect whole words
454	typed in, using the conservative definition.  (Thus "foobar"
455	will not be mapped as it would using map!)
456	Abbreviate and unabbreviate can be abbreviated to "ab" and
457	"una", respectively.
458
459	The editor now supports certain terminals that use strings other
460	then \r and \n for return and linefeed by implementing the cr
461	and nl termcap options.  (Thanks to UCLA for these enhancements).
462
463	The termcap attribute ns is now checked for, and ex refuses to
464	go into visual mode on such a terminal unless it has sf.
465
466	Terminals that can cursor address but cannot go up a line
467	now work in visual.
468
469	If you change your start and stop characters to something other
470	than the default ^S and ^Q, vi now turns them off.  This causes
471	people who change them to escape not to lose so badly.
472	The quit character is once again turned off so that datamedias
473	which send ^\ for the right arrow key work.
474
475	The ~ command now repeats correctly with ".".
476
477	If you type in an unmatched ) or } in showmatch mode, the editor
478	will now beep to warn you about your mistake.  The ) or } is
479	still accepted.
480
481	The way macros are undone has been improved considerably.
482	The number of changes inside the macro is counted, and just
483	before the second change the state before the macro is recreated
484	internally and saved to allow the macro to be undoable as a unit.
485	Hence, if the macro makes only one change the particular change is
486	undone (which will probably not redraw the screen).  If no changes
487	are made (for example, the arrow keys) the previous thing that could
488	be undone is not clobbered.
489
490	The undomacro option has been deleted since it is no longer needed.
491
492	Editor scripts can now contain comments.  Begin the comments with "
493	(double quote).  Comments can be on their own line or come at the
494	end of command lines.  The comment continues to the end of the line.
495
496	The 3rd version of the USG tty driver is now supported, making it
497	possible on USG systems to interrupt redrawing the screen and to
498	not flush output when interruptible commands take place.
499
500	The rewind command has been added to the list of commands that
501	the autowrite option knows about.
502
503	The wrapmargin option is now usable.  The way it works has been
504	completely revamped.  Now if you go past the margin (even in the
505	middle of a word) the entire word is erased and rewritten on the
506	next line.  This changes the semantics of the number given to
507	wrapmargin.  0 still means off.  Any other number is still a
508	distance from the right edge of the screen, but this location
509	is now the right edge of the area where wraps can take place,
510	instead of the left edge.  Wrapmargin now behaves much like
511	fill/nojustify mode in nroff.
512
513	A bug on the USG system where hanging up the phone causes more
514	than one SIGHUP to be sent has been compensated for.
515
516	A bug which caused the :sh command not to send the vs and ti
517	sequences when you returned has been fixed.
518
519	A bug which caused a file that bombed out in the middle of
520	an edit command to be considered modified has been fixed.
521
522	A bug which caused the screen to be wrong after undoing a
523	:move command has been fixed.
524
525	A bug which messed up the buffer and the screen after
526	undoing a :join command has been fixed.
527
528	The source file ex_io.c has been split into ex_io.c and
529	ex_unix.c to avoid a problem where many C compilers overflowed
530	the symbol table.
531
532	A bug which prevented turning off your prompt in your .exrc
533	has been fixed.
534
535	Some of the code internal to the editor has been rearranged
536	and some comments added.
537
538	The bug fix to the USG tty driver to output a null character
539	as padding at 1200 baud has been improved to output a DEL
540	at 1200 baud or above.
541
542	Terminals with small screens (less than 20 columns or less
543	than 5 lines) should now work.
544
545	A bug which prevented you from entering the character DEL
546	into the buffer if you changed your interrupt character to
547	something else besides DEL has been fixed.
548
549	A bug which caused the current line to be clobbered when
550	you did a /, ?, or : command which mapped an input macro
551	successfully has been fixed.
552
553	If you map o to O and O to o and have remap set, the editor
554	now catches the infinite loop.
555
556	A put command after a macro now beeps instead of putting
557	a copy of the whole buffer.  (Note that the arrow keys
558	on terminals are considered macros.)
559
560	A bug which caused things like d) and d} to miss the last
561	character when they should have deleted to the end of the
562	buffer has been fixed.
563
564	A bug which caused the last character to be lost when you
565	read in a file with no newline at the end of the last line
566	has been fixed.
567
568	A bug that caused garbage to be in the buffer if the temp file
569	overflowed has been fixed.  (This only affected non-VMUNIX systems
570	since the temp file cannot overflow on VMUNIX.)
571
572	When a macro or global is undone, you no longer get picked up and
573	dropped on line 1.
574
575	The character | can now be escaped with \| in file names.
576
577	A bug which prevented the confirm option to a substitution that
578	was inside a source command has been fixed.
579
580	A bug which caused the editor to not work if the tab stop size
581	did not divide the screen width has been fixed.
582
583	A bug on HP terminals that caused the screen to be messed up if
584	you scrolled up something that began the same way as the echo line
585	has been fixed.
586
587	A macro bug which sometimes caused the next character after an
588	escape to be ignored on an HP terminal has been fixed.
589
590	A bug which caused unmap of strings with length 2 to fail has been
591	fixed.
592
593	A bug which left vi confused if you invoked a macro containing a
594	quit to command mode and then did an undo has been fixed.
595
596	An old ed bug which caused globals to fail when they did a substitute
597	on the next line has been fixed.
598
599	The % operator will now find matching square brackets the same way
600	it does parentheses and braces.  It will not display them in
601	showmatch mode, however, and will not use a ] to match all ('s.
602
603	Code has been added to handle the Beehive Superbee terminal,
604	using f1 for escape and f2 for control C.
605
606	The default value of the option shell is now taken from the
607	environment variable SHELL, if present.
608
609Version 3.3 -- February 2, 1980
610
611	The default window sizes have been changed.  At 300 baud the
612	window is now 8 lines (was 1/2 the screen size).  At 1200 baud
613	the window is now 16 lines (was 2/3 the screen size, which was
614	usually also 16 for a typical 24 line CRT).  At 9600 baud the
615	window is still the full screen size.  Any baud rate less than
616	1200 behaves like 300, any over 1200 like 9600.
617
618	A new command mode command "x" (for "xit") has been added.  This
619	is the same as wq but will not bother to write if there have been
620	no changes to the file.  The command letter was chosen for
621	convenience and compatibility with hed.
622
623	The command "ZZ" from vi is the same as ":x<cr>".  This is
624	the recommended way to leave the editor.  Z must be typed twice
625	since this is two easy to type by accident and has such severe
626	effects if unintentional.
627
628	The options w300, w1200, and w9600 can be set.  They are synonyms
629	for "window", but only apply at 300, 1200, or 9600 baud, resp.
630	Thus you can specify you want a 12 line window at 300 baud and
631	a 23 line window at 1200 baud with
632		:set w300=12 w1200=23
633
634	It is now possible to say
635		:set window=5
636	and get the effect the next time the screen is redrawn from scratch.
637	(^L and Hit return to continue don't start from scratch.)
638	This is sort of pointless, since both
639		5:<cr>
640	and
641		z5<cr>
642	do the same thing with better results.
643
644	The editor no longer uses nondestructive space, except when in
645	insert mode.  It instead prints the character it would be
646	moving over.  This is a real win on terminals that use an
647	escape sequence to nd space.
648
649	It is now possible from visual to string several search expressions
650	together separated by semicolons the same as command mode.  For
651	example, you can say
652		/foo/;/bar
653	from visual and it will move to the first "bar" after the next "foo".
654	This also works within one line.
655
656	The option "mapinput" is dead.  It has been replaced by a much
657	more powerful mechanism: :map! (e.g. put an ! after the map).
658	Map and unmap commands with ! apply only to input, others apply
659	only to command mode.
660
661	The new option "timeout" (default on) causes macros to time out
662	after one second.  Turn it off and they will wait forever.
663
664	By using map! and setting notimeout, it is possible to get the
665	effect of emacs abbreviation mode.  Sanity checking is turned off
666	for map when ! is present.  This is a crude facility and does not
667	take into account things like the abbreviation being part of a longer
668	word.  It also does not echo until it is satisfied.
669
670	The new option "remap" (default on) causes the editor to attempt
671	to map the result of a macro mapping again until the mapping fails.
672	This makes it possible, say, to map q to # and #1 to something else
673	and get q1 mapped to something else.  Turning it off makes it possible
674	to map ^L to l and map ^R to ^L without having ^R map to l.
675
676	The new option "undomacro" (default on) makes it possible to undo
677	macros as a unit.  Leaving it off causes macros not to be treated
678	specially.  Macros with zero or one change work better with noum,
679	with two or more changes better with um.  This option may go away
680	if it becomes unnecessary.
681
682	The new (string) valued option "tags" allows you to specify a list
683	of tag files, similar to the "path" variable of csh.  The files
684	are separated by spaces (which are entered preceded by a backslash)
685	and are searched left to right.  The default value is
686	"tags /usr/lib/tags", which has the same effect as before.
687	It is recommended that "tags" always be the first entry.
688	On Ernie, /usr/lib/tags contains entries for the system defined
689	library procedures from section 3 of the manual.
690
691	^R is now the same as ^L on terminals where the right arrow key
692	sends ^L (The tvi and the adm 31).
693
694	Looking for a tag now uses binary search.
695
696	The "q" command from visual no longer works at all.  You must
697	use "Q" to get to ex command mode.
698
699	A minor incompatibility with the v7 ed has been fixed.  Previously,
700	to do a global substitute with an escaped newline in the rhs, you
701	had to put two \'s in ex and one in ed.  Ex now accepts the single
702	form as well as the double form.  For example, instead of
703		g/foo/s//foo\\
704		bar/g
705	(which still works), you can now type, as in ed,
706		g/foo/s//foo\
707		bar/g
708	This means that the following ex command, which used to "work":
709		g/foo/s//foo bar\
710		.+1,/mumble/d
711	won't work anymore unless you put the trailing / on the substitution.
712	This usage is pretty obscure anyway.
713
714	Several bugs relating to undoing macros have been fixed.
715
716	A bug which caused the command "g/pattern" to print an error
717	message if "pattern" occurred on the last line has been fixed.
718
719	If you reply ":" to "Hit return to continue", you will again be
720	asked "Hit return to continue" after the next command finishes.
721
722	The maximum length of a string valued option has been raised from
723	32 to 64, for the benefit of the "tags" option.
724
725	It is now possible to search for an escape or delete using f, F, t,
726	T, ;, and ,.  These characters must be quoted with ^V.
727
728	The option "ttytype" is now in correct alphabetical order.
729
730	A bug that caused HP terminals to mess up in insert mode when inserting
731	before a tab which follows 7 or fewer characters at the beginning of a
732	line (such as a tags file) has been fixed.
733
734	It is now possible to include control D in your EXINIT or .exrc.
735
736	A bug which caused the screen to mess up when a glob (such as xx*)
737	doesn't match anything has been fixed.
738
739	The editor now checks for extra junk after a /r.e./ from visual
740	(other than the allowed z command) and beeps if any is found.
741	Previously it was just ignored.
742
743	A bug that caused j and k (up and down) to behave strangely after
744	an insertion has been fixed.
745
746	A bug which causes term to be displayed incorrectly and which
747	caused a crash when changing terminal type when there happened
748	to be several |'s and a long string in genbuf has been fixed.
749	This bug was introduced in ex 2.9.
750
751	The patch for echo lines longer than 80 characters has been
752	repaired to do "Hit return to continue" after such lines and
753	print the entire output.
754
755	A bug that caused a messed up screen after a :sh command from
756	open mode has been fixed.
757
758	A bug which caused a tag request for a nonexistent tag to leave
759	the editor in nomagic mode has been fixed.
760
761	A bug which caused strange behavior if there is no default file
762	name when an autowrite save is attempted has been fixed.
763
764	A bug which caused the cursor to go to the wrong position when
765	^^D or 0^D is entered from column 2 in autoindent mode on terminals
766	that can backspace has been fixed.
767
768Version 3.2 -- January 4, 1980
769
770	A bug that caused nomagic to be set if an error happened within
771	a tag command has been fixed.
772
773	A bug that caused put commands to beep after a macro containing
774	an error has been fixed.
775
776	The mapinput option has been placed in alphabetical order.
777
778	A bug that caused undo to undo more than one macro invocation
779	on the same line has been fixed.
780
781	On non VM/UNIX systems, the screen size has been increased to
782	allow a 40 X 80 Ann Arbor to be used.
783
784Version 3.2 -- December 28, 1980
785
786	Several limits have been increased for VM/UNIX.  Longer lines,
787	more characters of file names, longer regular expressions, etc.
788	Huge files can now be edited directly.  Larger terminals (up to
789	66 lines) can be used.
790
791	An internal change has been made for VM/UNIX that causes error
792	messages to be stored directly instead of in a disk file.
793	This should cause faster response to errors.
794
795Version 3.1.1 -- December 13, 1979
796
797	A bug that caused nested macros not to be undoable has been fixed.
798
799	A bug that caused pounding on the escape key on terminals with
800	arrow keys that send escape sequences to cause undo to mess up
801	has been fixed.
802
803	It is now acknowledged that macros cannot contain the put command.
804	This is due to the implementation of put - previously a put inside
805	a macro dumped a copy of the buffer instead of the desired text and
806	left the editor in a very strange state.  Now such a put just beeps.
807
808Version 3.1 -- November 1, 1979
809
810	Versions from 3.1 up are too large to fit on pdp-11's.
811	(Special overlay software is expected to be available soon
812	for v7 pdp-11 Unix that will make it fit.) Version 2.9
813	is 3.1 with only the bug fixes and very few of the enhancements.
814	2.9 will fit on a pdp-11. Version 2.10 will come out and may
815	correspond to 3.2. (It turned out to correspond to 3.3)
816
817	For compatibility with ed:  's<newline>' may be used as a
818	command and means '&'.  If you set the option "edcompatible"
819	(abbr "ed") the presence or absence of g and c suffices is
820	remembered and can be toggled by repeating the suffices.  The
821	suffix "r" makes the substitution into "~" instead of "&".
822
823	A new command line option -w<n> sets the value of window before
824	starting ex. Hence: 'vi -w5 file' makes a quick change to a file
825	easier at 300 baud.
826
827	Arrow keys on terminals that send more than 1 character now
828	work.  Home up keys are supported as are the four directions.
829	Ex no longer looks at the ma= entry in termcap, but uses the
830	ku, kd, kl, kr, and kh entries.  (Note that the HP 2621 will
831	turn on function key labels, and even then you have to hold
832	shift down.  To avoid turning on the labels, and to give up the
833	function keys, use terminal type 2621nl instead of 2621.)
834
835	A parameterless macro facility is included from visual. Briefly,
836	there are two flavors of macros:
837		a) Put the macro body in a buffer register, say x. Then
838		   type @x to invoke it. @ may be followed by another @
839		   to repeat the last macro.
840		   This allows macros up to 512 chars.
841		b) Use the map command from command mode (typically in the
842		   .exrc file) as follows:
843			map lhs rhs
844		   where lhs will be mapped to rhs.
845		   There are restrictions: lhs's should be 1-keystroke
846		   (either 1 char or 1 function key) since they must be
847		   entered within 1 second. lhs no longer than 10 chars,
848		   rhs no longer than 100. To get " ", "\t", "|", or "\n"
849		   into lhs or rhs, escape them with ctrl V. (It may be
850		   necessary to escape the ctrl V with ctrl V if the map
851		   command is given from visual mode.)
852	For 1 shot macros it is best to put the macro in a buffer register
853	and map a key to '@r', since this will allow the macro to be edited.
854
855	Macros can be deleted with
856		unmap lhs
857
858	The boolean option "mapinput" (mi) will, if on, cause macros to
859	be mapped in input mode as well as command mode (in visual only).
860	For example, you can define ctrl T to be four spaces with
861		:map ^V^T_^V^V____
862		:set mi
863	where underlines represent spaces and the ctrl V's are necessary
864	to get ctrl chars and spaces past various levels, and make ^T be
865	a software tab that even works in the middle of a line.
866
867	If the lhs of a macro is "#0" through "#9", this maps the particular
868	function key instead of the 2 char # sequence, if the terminal has
869	function keys. This only works if termcap has function key entries
870	for the particular terminal. For terminals without function keys,
871	the sequence #x means function key x, as typed. As a special case,
872	on terminals without function keys, the #x sequence need not be
873	typed within one second. The character # can be changed by using
874	a macro in the usual way:
875		map ^V^I #
876	to use tab, for example. (This won't affect the map command, which
877	still uses #, but just the invocation from visual mode.)
878	The undo command will undo an entire macro call as a unit.
879
880	New commands in visual: ^Y and ^E. These glitch the screen up
881	and down 1 line, respectively. They can be given counts, controlling
882	the number of lines the screen is glitched. They differ from ^U
883	and ^D in that the cursor stays over the same line in the buffer
884	it was over before rather than staying in the same place on the
885	screen. (^Y on a dumb terminal with a full screen will redraw the
886	screen moving the cursor up a few lines.) If you're looking for
887	mnemonic value in the names, try this: Y is right next to U and
888	E is right next to D.
889
890	More new commands in visual: '&' is a synonym for ':&<cr>'.
891	'~' changes the case of the letter under the cursor and moves
892	to the next character.
893
894	Ex looks in your environment for EXINIT. If it finds it, that
895	is used instead of looking for your .exrc. This should make
896	entry into ex faster, along with the termlib feature of looking
897	for a termcap entry in TERMCAP.
898
899Version 2.13 -- September 23, 1980
900
901	The provisions for changing the window size with a numeric
902	prefix argument to certain visual commands have been deleted.
903	The correct way to change the window size is to use the z
904	command, for example z5<cr> to change the window to 5 lines.
905
906	An undocumented "feature" which caused the ^^ command to return
907	to the previous tag, if in the current file, instead of the
908	previous file, has been removed.
909
910Version 2.12 -- July 23, 1980
911
912	A change was made to the sys_errlist array in ex_subr.c so that
913	Berkeley V7 quotas will produce the right error message.
914
915	A couple of minor bug fixes were made to get the editor to
916	compile on version 6.  The option to use 1K BUFSIZ has been
917	deleted, since it is no longer used on our 1K system.
918
919Version 2.11 -- June 24, 1980
920
921	The visual page motion commands ^F and ^B now treat any preceding
922	counts as number of pages to move, instead of changes to the
923	window size.  That is, 2^F moves forward 2 pages.
924
925	A :vi <file> command from visual mode is now treated the same
926	as a :edit <file> or :ex <file> command.  The meaning of the
927	vi command from ex command mode is not affected.
928
929	A read only mode now lets you guarantee you won't clobber your
930	file by accident.  You can set the on/off option "readonly" (ro)
931	and writes will fail unless you use an ! after the write.
932	Commands such as x, ZZ, and autowrite, and in general anything
933	that writes is affected.  This option is turned on if you invoke
934	ex with the -R flag.  A new link called "view" has been  created.
935	View is just like vi but it sets readonly.
936
937	The editor now supports certain terminals that use strings other
938	then \r and \n for return and linefeed by implementing the cr
939	and nl termcap options.  (Thanks to UCLA for these enhancements).
940
941	The termcap attribute ns is now checked for, and ex refuses to
942	go into visual mode on such a terminal unless it has sf.
943
944	If you change your start and stop characters to something other
945	than the default ^S and ^Q, vi now turns them off.  This causes
946	people who change them to escape not to lose so badly.
947	The quit character is once again turned off so that datamedias
948	which send ^\ for the right arrow key work.
949
950	If you type in an unmatched ) or } in showmatch mode, the editor
951	will now beep to warn you about your mistake.  The ) or } is
952	still accepted.
953
954	Editor scripts can now contain comments.  Begin the comments with "
955	(double quote).  Comments can be on their own line or come at the
956	end of command lines.  The comment continues to the end of the line.
957
958	The 3rd version of the USG tty driver is now supported, making it
959	possible on USG systems to interrupt redrawing the screen and to
960	not flush output when interruptable commands take place.
961
962	The rewind command has been added to the list of commands that
963	the autowrite option knows about.
964
965	A bug on the USG system where hanging up the phone causes more
966	than one SIGHUP to be sent has been compensated for.
967
968	A bug which caused a file that bombed out in the middle of
969	an edit command to be considered modified has been fixed.
970
971	The source file ex_io.c has been split into ex_io.c and
972	ex_unix.c to avoid a problem where many C compilers overflowed
973	the symbol table.
974
975	A bug which prevented turning off your prompt in your .exrc
976	has been fixed.
977
978	Some of the code internal to the editor has been rearranged
979	and some comments added.
980
981	The bug fix to the USG tty driver to output a null character
982	as padding at 1200 baud has been improved to output a DEL
983	at 1200 baud or above.
984
985	Terminals with small screens (less than 20 columns or less
986	than 5 lines) should now work.
987
988	A bug which prevented you from entering the character DEL
989	into the buffer if you changed your interrupt character to
990	something else besides DEL has been fixed.
991
992	A bug which caused things like d) and d} to miss the last
993	character when they should have deleted to the end of the
994	buffer has been fixed.
995
996	A bug which caused the last character to be lost when you
997	read in a file with no newline at the end of the last line
998	has been fixed.
999
1000	A bug that caused garbage to be in the buffer if the temp file
1001	overflowed has been fixed.
1002
1003	The character | can now be escaped with \| in file names.
1004
1005	A bug which caused the editor to not work if the tab stop size
1006	did not divide the screen width has been fixed.
1007
1008	A bug on HP terminals that caused the screen to be messed up if
1009	you scrolled up something that began the same way as the echo line
1010	has been fixed.
1011
1012	An old ed bug which caused globals to fail when they did a substitute
1013	on the next line has been fixed.
1014
1015	The % operator will now find matching square brackets the same way
1016	it does parentheses and braces.  It will not display them in
1017	showmatch mode, however, and will not use a ] to match all ('s.
1018
1019	Ex looks in your environment for EXINIT. If it finds it, that
1020	is used instead of looking for your .exrc. This should make
1021	entry into ex faster, along with the termlib feature of looking
1022	for a termcap entry in TERMCAP.
1023
1024	Internally, it is possible to turn off about a dozen different
1025	options when compiling the editor to make it fit in 64K.
1026	See the makefile for a list of options.
1027
1028Version 2.10 -- February 2, 1980 (Corresponds to 3.3)
1029
1030	The default window sizes have been changed.  At 300 baud the
1031	window is now 8 lines (was 1/2 the screen size).  At 1200 baud
1032	the window is now 16 lines (was 2/3 the screen size, which was
1033	usually also 16 for a typical 24 line CRT).  At 9600 baud the
1034	window is still the full screen size.  Any baud rate less than
1035	1200 behaves like 300, any over 1200 like 9600.
1036
1037	A new command mode command "x" (for "xit") has been added.  This
1038	is the same as wq but will not bother to write if there have been
1039	no changes to the file.  The command letter was chosen for
1040	convenience and compatibility with hed.
1041
1042	The command "ZZ" from vi is the same as ":x<cr>".  This is
1043	the recommended way to leave the editor.  Z must be typed twice
1044	since this is two easy to type by accident and has such severe
1045	effects if unintentional.
1046
1047	The options w300, w1200, and w9600 can be set.  They are synonyms
1048	for "window", but only apply at 300, 1200, or 9600 baud, resp.
1049	Thus you can specify you want a 12 line window at 300 baud and
1050	a 23 line window at 1200 baud with
1051		:set w300=12 w1200=23
1052
1053	The "q" command from visual no longer works at all.  You must
1054	use "Q" to get to ex command mode.
1055
1056	The editor no longer uses nondestructive space, except when in
1057	insert mode.  It instead prints the character it would be
1058	moving over.  This is a real win on terminals that use an
1059	escape sequence to nd space.
1060
1061	A minor incompatibility with the v7 ed has been fixed.  Previously,
1062	to do a global substitute with an escaped newline in the rhs, you
1063	had to put two \'s in ex and one in ed.  Ex now accepts the single
1064	form as well as the double form.  For example, instead of
1065		g/foo/s//foo\\
1066		bar/g
1067	(which still works), you can now type, as in ed,
1068		g/foo/s//foo\
1069		bar/g
1070	This means that the following ex command, which used to "work":
1071		g/foo/s//foo bar\
1072		.+1,/mumble/d
1073	won't work anymore unless you put the trailing / on the substitution.
1074	This usage is pretty obscure anyway.
1075
1076	A bug which caused the command "g/pattern" to print an error
1077	message if "pattern" occurred on the last line has been fixed.
1078
1079	Limits have been raised so that an Ann Arbor terminal can be used,
1080	and long tags can now be accommodated.
1081
1082	A bug that caused HP terminals to mess up in insert mode when inserting
1083	before a tab which follows 7 or fewer characters at the beginning of a
1084	line (such as a tags file) has been fixed.
1085
1086	A bug which causes term to be displayed incorrectly and which
1087	caused a crash when changing terminal type when there happened
1088	to be several |'s and a long string in genbuf has been fixed.
1089	This bug was introduced in ex 2.9.
1090
1091	The patch for echo lines longer than 80 characters has been
1092	repaired to do "Hit return to continue" after such lines and
1093	print the entire output.
1094
1095	A bug that caused a messed up screen after a :sh command from
1096	open mode has been fixed.
1097
1098	A bug which caused a tag request for a nonexistent tag to leave
1099	the editor in nomagic mode has been fixed.
1100
1101	A bug which caused strange behavior if there is no default file
1102	name when an autowrite save is attempted has been fixed.
1103
1104	A bug which caused the cursor to go to the wrong position when
1105	^^D or 0^D is entered from column 2 in autoindent mode on terminals
1106	that can backspace has been fixed.
1107
1108	In order to get 2.10 to fit on a v7 pdp-11, the following features
1109	have been deleted:
1110		The MASTERTAGS feature (undocumented use of /usr/lib/tags
1111		as an alternate tag file)
1112		Checking that a file being read in is an ascii file.
1113		Turning off ^Q/^S on a v7 system.
1114
1115