1273 lines
		
	
	
		
			36 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			1273 lines
		
	
	
		
			36 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| .so mnx.mac
 | |
| .TH ELVIS 1x
 | |
| .CD "elvis \(en clone of the Berkeley vi editor"
 | |
| .SX "elvis \fR[\fB\(enRerv\fR] [\fB\(ent \fItag\fR] \fR[\fIfile\fR] ..."
 | |
| .TP 5
 | |
| .B \(enR
 | |
| # Set the read-only option
 | |
| .TP 5
 | |
| .B \(ene
 | |
| # Start up emulating \fIex\fR
 | |
| .TP 5
 | |
| .B \(enr
 | |
| # Tell the user to use \fIelvrec\fR instead
 | |
| .TP 5
 | |
| .B \(ent
 | |
| # Start editing at the given tag
 | |
| .TP 5
 | |
| .B \(env
 | |
| # Start up emulating \fIvi\fR
 | |
| .TP 20
 | |
| .B elvis
 | |
| # Call the editor
 | |
| .TP 20
 | |
| .B elvis prog.c
 | |
| # edit \fIprog.c\fR
 | |
| .PP
 | |
| \fIElvis\fR is a full-screen editor closely modeled on the famous Berkeley
 | |
| \fIvi\fR editor.
 | |
| It provides essentially the same interface to the user as \fIvi\fR, but the 
 | |
| code is completely new, written from scratch.
 | |
| This document provides a brief introduction to \fIvi\fR.
 | |
| It is not intended as a tutorial for beginners.
 | |
| Most books on
 | |
| .Ux
 | |
| cover \fIvi\fR.
 | |
| .PP
 | |
| Like \fIvi\fR, \fIelvis\fR can operate as a screen editor
 | |
| (\fIvi\fR mode) or as a line editor (\fIex\fR) mode.  
 | |
| It can be called either as \fIelvis\fR \fIvi\fR,or as \fIex\fR, 
 | |
| depending on which is desired.
 | |
| They are all links to the same file.
 | |
| .SS "Vi Commands"
 | |
| .PP
 | |
| Below is a list of the \fIvi\fR commands supported.
 | |
| The following symbols are used in the table:
 | |
| .HS
 | |
| .in +1.25i
 | |
| .ta +1.0i
 | |
| .ti -1.0i
 | |
| count	Integer parameter telling how many or how much
 | |
| .ti -1.0i
 | |
| key	One character parameter to the command
 | |
| .ti -1.0i
 | |
| inp	Interactive input expected
 | |
| .ti -1.0i
 | |
| mv	Indicates how much for commands like \fIdelete\fR and \fIchange\fR:
 | |
| .in +0.8i
 | |
| .ta +0.3i
 | |
| .ti -0.3i
 | |
| (	Previous sentence
 | |
| .ti -0.3i
 | |
| )	Next sentence
 | |
| .ti -0.3i
 | |
| {	Previous paragraph
 | |
| .ti -0.3i
 | |
| }	Next paragraph (delimited by blank line, \fI.PP, .LP, .IP\fR etc.)
 | |
| .ti -0.3i
 | |
| [	Previous section (delimited by \fI.SH\fR or \fI.NH\fR)
 | |
| .br
 | |
| A repeated command character means the scope is this line
 | |
| .in -0.8i
 | |
| .ta +1.0i
 | |
| .ti -1.0i
 | |
| MOVE	Indicates commands that may also be used where \fImv\fR is specified
 | |
| .ti -1.0i
 | |
| EDIT	These commands affect text and may be repeated by the \fI.\fR command
 | |
| .in -1.25i
 | |
| .HS
 | |
| In addition to the above notation, the caret (^) is used as an abbreviation
 | |
| for CTRL.
 | |
| For example, ^A means CTRL-A.
 | |
| .HS
 | |
| .in +2i
 | |
| .ta +1i +1i +3.3i
 | |
| .ti -2i
 | |
| \fBCount~~~~	Command	Description	Type\fR
 | |
| .ti -2i
 | |
| 	^A	(Not defined)
 | |
| .ti -2i
 | |
| 	^B	Move toward the top of the file by 1 screenful
 | |
| .ti -2i
 | |
| 	^C	(Not defined)
 | |
| .ti -2i
 | |
| count	^D	Scroll down \fIcount\fR lines (default 1/2 screen)
 | |
| .ti -2i
 | |
| count	^E	Scroll up \fIcount\fR lines
 | |
| .ti -2i
 | |
| 	^F	Move toward the bottom of the file by 1 screenful
 | |
| .ti -2i
 | |
| 	^G	Show file status, and the current line 
 | |
| .ti -2i
 | |
| count	^H	Move left, like \fIh\fR	MOVE
 | |
| .ti -2i
 | |
| 	^I	(Not defined)
 | |
| .ti -2i
 | |
| count	^J	Move down	MOVE
 | |
| .ti -2i
 | |
| 	^K	(Not defined)
 | |
| .ti -2i
 | |
| 	^l	Redraw the screen
 | |
| .ti -2i
 | |
| count	^M	Move to the front of the next line	MOVE
 | |
| .ti -2i
 | |
| count	^N	Move down	MOVE
 | |
| .ti -2i
 | |
| 	^O	(Not defined)
 | |
| .ti -2i
 | |
| count	^P	Move up	MOVE
 | |
| .ti -2i
 | |
| 	^Q	(Not defined)
 | |
| .ti -2i
 | |
| 	^R	Redraw the screen
 | |
| .ti -2i
 | |
| 	^S	(Not defined)
 | |
| .ti -2i
 | |
| 	^T	(Not defined)
 | |
| .ti -2i
 | |
| count	^U	Scroll up \fIcount\fR lines (default 1/2 screen)
 | |
| .ti -2i
 | |
| 	^V	(Not defined)
 | |
| .ti -2i
 | |
| 	^W	(Not defined)
 | |
| .ti -2i
 | |
| 	^X	(Not defined)
 | |
| .ti -2i
 | |
| count	^Y	Scroll down \fIcount\fR lines
 | |
| .ti -2i
 | |
| 	^Z	(Not defined)
 | |
| .ti -2i
 | |
| 	ESC	(Not defined)
 | |
| .ti -2i
 | |
| 	^\e	(Not defined)
 | |
| .ti -2i
 | |
| 	^]	If the cursor is on a tag name, go to that tag
 | |
| .ti -2i
 | |
| 	^^	Save this file and edit the previous file
 | |
| .ti -2i
 | |
| 	^_	(Not defined)
 | |
| .ti -2i
 | |
| count	SPACE	Move right,like \fIl\fR	MOVE
 | |
| .ti -2i
 | |
| 	! mv	Run the selected lines thru an external filter program
 | |
| .ti -2i
 | |
| 	" key	Select which cut buffer to use next
 | |
| .ti -2i
 | |
| 	#	(Not defined)
 | |
| .ti -2i
 | |
| 	$	Move to the rear of the current line	MOVE
 | |
| .ti -2i
 | |
| 	%	move to the matching (){}[] character	MOVE
 | |
| .ti -2i
 | |
| 	&	(Not defined)
 | |
| .ti -2i
 | |
| 	' key	Move to a marked line	MOVE
 | |
| .ti -2i
 | |
| count	(	Move backward \fIcount\fR sentences	MOVE
 | |
| .ti -2i
 | |
| count	)	Move forward \fIcount\fR sentences	MOVE
 | |
| .ti -2i
 | |
| 	*	(Not defined)
 | |
| .ti -2i
 | |
| count	+	Move to the front of the next line	MOVE
 | |
| .ti -2i
 | |
| count	,	Repeat the previous [\fIfFtT\fR] but the other way	MOVE
 | |
| .ti -2i
 | |
| count	\(en	Move to the front of the preceding line	MOVE
 | |
| .ti -2i
 | |
| 	.	Repeat the previous \*(OQedit\*(CQ command
 | |
| .ti -2i
 | |
| 	 /	Text search forward for a given regular expr	MOVE
 | |
| .ti -2i
 | |
| 	0	If not part of count, move to 1st char of this line	MOVE
 | |
| .ti -2i
 | |
| 	1	Part of count
 | |
| .ti -2i
 | |
| 	2	Part of count
 | |
| .ti -2i
 | |
| 	3	Part of count
 | |
| .ti -2i
 | |
| 	4	Part of count
 | |
| .ti -2i
 | |
| 	5	Part of count
 | |
| .ti -2i
 | |
| 	6	Part of count
 | |
| .ti -2i
 | |
| 	7	Part of count
 | |
| .ti -2i
 | |
| 	8	Part of count
 | |
| .ti -2i
 | |
| 	9	Part of count
 | |
| .ti -2i
 | |
| 	:	Text. Run single \fIex\fR cmd
 | |
| .ti -2i
 | |
| count	;	Repeat the previous [fFtT] cmd	MOVE
 | |
| .ti -2i
 | |
| count	< mv	Shift text left	EDIT
 | |
| .ti -2i
 | |
| 	=	(Not defined)
 | |
| .ti -2i
 | |
| count	> mv	Shift text right	EDIT
 | |
| .ti -2i
 | |
| 	? text	Search backward for a given regular expression	MOVE
 | |
| .ti -2i
 | |
| 	@	(Not defined)
 | |
| .ti -2i
 | |
| count	A inp	Append at end of the line	EDIT
 | |
| .ti -2i
 | |
| count	B	Move back Word	MOVE
 | |
| .ti -2i
 | |
| 	C inp	Change text from cursor through end of line	EDIT
 | |
| .ti -2i
 | |
| 	D	Delete text from  cursor through end of line	EDIT
 | |
| .ti -2i
 | |
| count	E	Move end of Word	MOVE
 | |
| .ti -2i
 | |
| count	F key	Move leftward to a given character	MOVE
 | |
| .ti -2i
 | |
| count	G	Move to line #\fIcount\fR (default is the bottom line)	MOVE
 | |
| .ti -2i
 | |
| count	H	Move to home row (the line at the top of the screen)
 | |
| .ti -2i
 | |
| count	I inp	Insert at the front of the line (after indents)	EDIT
 | |
| .ti -2i
 | |
| count	J	Join lines, to form one big line	EDIT
 | |
| .ti -2i
 | |
| 	K	Look up keyword
 | |
| .ti -2i
 | |
| count	L	Move to last row (the line at the bottom of the screen)
 | |
| .ti -2i
 | |
| 	M	Move to middle row (the line in the middle)
 | |
| .ti -2i
 | |
| 	N	Repeat previous search, but the opposite way	MOVE
 | |
| .ti -2i
 | |
| count	O inp	Open up a new line above the current line	EDIT
 | |
| .ti -2i
 | |
| 	P	Paste text before the cursor
 | |
| .ti -2i
 | |
| 	Q	Quit to EX mode
 | |
| .ti -2i
 | |
| 	R inp	Overtype	EDIT
 | |
| .ti -2i
 | |
| count	S inp	Change lines, like \fIcount\fRcc
 | |
| .ti -2i
 | |
| count	T key	Move leftward \fIalmost\fR to a given character	MOVE
 | |
| .ti -2i
 | |
| 	U	Undo all recent changes to the current line
 | |
| .ti -2i
 | |
| 	V	(Not defined)
 | |
| .ti -2i
 | |
| count	W	Move forward \fIcount\fR Words	MOVE
 | |
| .ti -2i
 | |
| count	X	Delete the character(s) to the left of the cursor	EDIT
 | |
| .ti -2i
 | |
| count	Y	Yank text line(s) (copy them into a cut buffer)
 | |
| .ti -2i
 | |
| 	Z Z	Save the file & exit
 | |
| .ti -2i
 | |
| 	[ [	Move back 1 section	MOVE
 | |
| .ti -2i
 | |
| 	\e	(Not defined)
 | |
| .ti -2i
 | |
| 	] ]	Move forward 1 section					MOVE
 | |
| .ti -2i
 | |
| 	^	Move to the front of the current line (after indent)	MOVE
 | |
| .ti -2i
 | |
| 	\(ul	(Not defined)
 | |
| .ti -2i
 | |
| 	` key	Move to a marked character	MOVE
 | |
| .ti -2i
 | |
| count	a inp	Insert text after the cursor	EDIT
 | |
| .ti -2i
 | |
| count	b	Move back \fIcount\fR words	MOVE
 | |
| .ti -2i
 | |
| 	c mv	Change text	EDIT
 | |
| .ti -2i
 | |
| 	d mv	Delete text	EDIT
 | |
| .ti -2i
 | |
| count	e	Move forward to the end of the current word	MOVE
 | |
| .ti -2i
 | |
| count	f key	Move rightward to a given character	MOVE
 | |
| .ti -2i
 | |
| 	g	(Not defined)
 | |
| .ti -2i
 | |
| count	h	Move left	MOVE
 | |
| .ti -2i
 | |
| count	i inp	Insert text at the cursor	EDIT
 | |
| .ti -2i
 | |
| count	j	Move down	MOVE
 | |
| .ti -2i
 | |
| count	k	Move up	MOVE
 | |
| .ti -2i
 | |
| count	l	Move right	MOVE
 | |
| .ti -2i
 | |
| 	m key	Mark a line or character
 | |
| .ti -2i
 | |
| 	n	Repeat the previous search	MOVE
 | |
| .ti -2i
 | |
| count	o inp	Open a new line below the current line	EDIT
 | |
| .ti -2i
 | |
| 	p	Paste text after the cursor
 | |
| .ti -2i
 | |
| 	q	(Not defined)
 | |
| .ti -2i
 | |
| count	r key	Replace \fIcount\fR chars by a given character	EDIT
 | |
| .ti -2i
 | |
| count	s inp	Replace \fIcount\fR chars with text from the user	EDIT
 | |
| .ti -2i
 | |
| count	t key	Move rightward \fIalmost\fR to a given character	MOVE
 | |
| .ti -2i
 | |
| 	u	Undo the previous edit command
 | |
| .ti -2i
 | |
| 	v	(Not defined)
 | |
| .ti -2i
 | |
| count	w	Move forward \fIcount\fR words	MOVE
 | |
| .ti -2i
 | |
| count	x	Delete the character that the cursor's on	EDIT
 | |
| .ti -2i
 | |
| 	y mv	Yank text (copy it into a cut buffer)
 | |
| .ti -2i
 | |
| 	z key	Scroll current line to the screen's +=top -=bottom .=middle
 | |
| .ti -2i
 | |
| count	{	Move back \fIcount\fR paragraphs	MOVE
 | |
| .ti -2i
 | |
| count	|	Move to column \fIcount\fR (the leftmost column is 1)
 | |
| .ti -2i
 | |
| count	}	Move forward \fIcount\fR paragraphs	MOVE
 | |
| .ti -2i
 | |
| .tr ~~
 | |
| count	\(ap	Switch a character between upper & lower case	EDIT
 | |
| .tr ~
 | |
| .ti -2i
 | |
| 	DEL	(Not defined)
 | |
| .in -2i
 | |
| .SS "Ex Commands"
 | |
| .PP
 | |
| Below is a list of the \fIex\fR commands supported.  All can be abbreviated.
 | |
| .UU "General"
 | |
| .LP
 | |
| .nf
 | |
| .ta 1.2i 2.4i
 | |
| [line]	append
 | |
| 	args	[files]
 | |
| 	cd	[directory]
 | |
| 	chdir	[directory]
 | |
| [line][,line]	change
 | |
| [line][,line]	copy	line
 | |
| [line][,line]	debug[!]
 | |
| [line][,line]	Delete	[\*(CQx]
 | |
| 	edit[!]	[file]
 | |
| 	ex[!]	[file]
 | |
| 	file
 | |
| [line][,line]	global	/regexp/ command
 | |
| [line]	Insert
 | |
| [line][,line]	join
 | |
| [line][,line]	list
 | |
| 	map[!]	key mapped_to
 | |
| [line]	mark	x
 | |
| 	mkexrc
 | |
| [line][,line]	Move	line
 | |
| 	next[!]	[files]
 | |
| 	Next[!]
 | |
| 	previous[!]
 | |
| [line][,line]	print
 | |
| [line]	put	[\*(CQx]
 | |
| 	quit[!]
 | |
| [line]	read	file
 | |
| 	rewind[!]
 | |
| 	set	[options]
 | |
| [line][,line]	substitute	/regexp/replacement/[p][g]
 | |
| 	tag[!]	tagname
 | |
| [line][,line]	to	line
 | |
| 	Undo
 | |
| 	unmap[!]	key
 | |
| 	validate[!]
 | |
| 	version
 | |
| [line][,line]	vglobal	/regexp/ command
 | |
| 	visual
 | |
| 	wq
 | |
| [line][,line]	write[!]	[[>>]file]
 | |
| 	xit[!]
 | |
| [line][,line]	yank	[\*(CQx]
 | |
| [line][,line]	!	command
 | |
| [line][,line]	<
 | |
| [line][,line]	=
 | |
| [line][,line]	>
 | |
| .SP 0.25
 | |
| .UU "Text Entry"
 | |
| .SP 0.25
 | |
| .LP
 | |
| .ta 1.2i 2.4i
 | |
| .nf
 | |
| [line]	append
 | |
| [line][,line]	change [\*(CQx]
 | |
| [line]	Insert
 | |
| .fi
 | |
| 
 | |
| The (a)ppend command inserts text after the specified line.
 | |
| 
 | |
| The (i)nsert command inserts text before the specified line.
 | |
| 
 | |
| The (c)hange command copies the range of lines into a cut buffer,
 | |
| deletes them, and inserts new text where the old text used to be.
 | |
| 
 | |
| For all of these commands, you indicate the end of the text you're
 | |
| inserting by hitting ^D or by entering a line which contains only
 | |
| a period.
 | |
| .SP 0.25
 | |
| .UU "Cut & Paste"
 | |
| .SP 0.25
 | |
| .LP
 | |
| .ta 1.2i 2.4i
 | |
| .nf
 | |
| [line][,line]	Delete [\*(CQx]
 | |
| [line][,line]	yank [\*(CQx]
 | |
| [line]	put[!] [\*(CQx]
 | |
| [line][,line]	copy line
 | |
| [line][,line]	to line
 | |
| [line][,line]	Move line
 | |
| 
 | |
| .fi
 | |
| The (d)elete command copies the specified range of lines into a
 | |
| cut buffer, and then deletes them.
 | |
| 
 | |
| The (y)ank command copies the specified range of lines into a cut
 | |
| buffer, but does \fInot\fR delete them.
 | |
| 
 | |
| The (pu)t command inserts text from a cut buffer after the specified
 | |
| line\(emor before it if the ! is present.
 | |
| 
 | |
| The (co)py and (t)o commands yank the specified range of lines and then
 | |
| immediately paste them after some other line.
 | |
| 
 | |
| The (m)ove command deletes the specified range of lines and then
 | |
| immediately pastes them after some other line.  If the destination
 | |
| line comes after the deleted text, then it will be adjusted
 | |
| automatically to account for the deleted lines.
 | |
| .UU "Displaying Text"
 | |
| .LP
 | |
| .ta 1.2i 2.4i
 | |
| .nf
 | |
| [line][,line]	print
 | |
| [line][,line]	list
 | |
| 
 | |
| .fi
 | |
| The (p)rint command displays the specified range of lines.
 | |
| 
 | |
| The (l)ist command also displays them, but it is careful to make
 | |
| control characters visible.
 | |
| .UU "Global Operations"
 | |
| .LP
 | |
| .ta 1.2i 2.4i
 | |
| .nf
 | |
| [line][,line]	global /regexp/ command
 | |
| [line][,line]	vglobal /regexp/ command
 | |
| 
 | |
| .fi
 | |
| The (g)lobal command searches through the lines of the specified range
 | |
| (or through the whole file if no range is specified) for lines that
 | |
| contain a given regular expression.  It then moves the cursor to each
 | |
| of these lines and runs some other command on them.
 | |
| 
 | |
| The (v)global command is similar, but it searches for lines that
 | |
| \fIdo not\fR contain the regular expression.
 | |
| .UU "Line Editing"
 | |
| .LP
 | |
| .ta 1.2i 2.4i
 | |
| .nf
 | |
| [line][,line]	join
 | |
| [line][,line]	! program
 | |
| [line][,line]	<
 | |
| [line][,line]	>
 | |
| [line][,line]	substitute /regexp/replacement/[p][g]
 | |
| 
 | |
| .fi
 | |
| The (j)oin command concatenates all lines in the specified range together
 | |
| to form one big line.  If only a single line is specified, then the
 | |
| following line is catenated onto it.
 | |
| 
 | |
| The ! command runs an external filter program, and feeds the specified
 | |
| range of lines to it's stdin.  The lines are then replaced by the
 | |
| output of the filter.  A typical example would be \*(OQ:'a,'z!sort -n\*(CQ to
 | |
| sort the lines 'a,'z according to their numeric values.
 | |
| 
 | |
| The < and > commands shift the specified range of lines left or right,
 | |
| normally by the width of 1 tab character.  The \*(OQshiftwidth\*(CQ option
 | |
| determines the shifting amount.
 | |
| 
 | |
| The (s)ubstitute command finds the regular expression in each line,
 | |
| and replaces it with the replacement text.  The \*(OQp\*(CQ option causes
 | |
| the altered lines to be printed, and the \*(OQg\*(CQ option permits all
 | |
| instances of the regular expression to be found & replaced.  (Without
 | |
| \*(OQg\*(CQ, only the first occurrence is replaced.)
 | |
| .SP 0.25
 | |
| .UU "Undo"
 | |
| .SP 0.25
 | |
| .LP
 | |
| .ta 1.2i 2.4i
 | |
| .nf
 | |
| 	undo
 | |
| 
 | |
| .fi
 | |
| The (u)ndo command restores the file to the state it was in before your
 | |
| most recent command which changed text.
 | |
| .SP 0.25
 | |
| .UU "Configuration & Status"
 | |
| .SP 0.25
 | |
| .LP
 | |
| .ta 1.2i 2.4i
 | |
| .nf
 | |
| 	map[!] [key mapped_to]
 | |
| 	unmap[!] key
 | |
| 	set [options]
 | |
| 	mkexrc
 | |
| [line]	mark x
 | |
| 	visual
 | |
| 	version
 | |
| [line][,line]	=
 | |
| 	file
 | |
| 
 | |
| .fi
 | |
| The (ma)p command allows you to configure \fIelvis\fR to recognize your
 | |
| function keys, and treat them as though they transmitted some other
 | |
| sequence of characters.  Normally this mapping is done only when in
 | |
| the visual command mode, but with the [!]	present it will map keys
 | |
| under all contexts.  When this command is given with no arguments,
 | |
| it prints a table showing all mappings currently in effect.  When
 | |
| called with two arguments, the first is the sequence that your
 | |
| function key really sends, and the second is the sequence that you
 | |
| want \fIelvis\fR to treat it as having sent.
 | |
| 
 | |
| The (unm)ap command removes key definitions that were made via the
 | |
| map command.
 | |
| 
 | |
| The (se)t command allows you examine or set various options.  With
 | |
| no arguments, it displays the values of options that have been
 | |
| changed.  With the single argument \*(OQall\*(CQ it displays the values of
 | |
| all options, regardless of whether they've been explicitly set or
 | |
| not.  Otherwise, the arguments are treated as options to be set.
 | |
| 
 | |
| The (mk)exrc command saves the current configuration to a file
 | |
| called \fI.exrc\fR in the current directory.
 | |
| 
 | |
| The mar(k) command defines a named mark to refer to a specific place
 | |
| in the file.  This mark may be used later to specify lines for other
 | |
| commands.
 | |
| 
 | |
| The (vi)sual command puts the editor into visual mode.  Instead of
 | |
| emulating ex, \fIelvis\fR will start emulating vi.
 | |
| 
 | |
| The (ve)rsion command tells you that what version of \fIelvis\fR this is.
 | |
| 
 | |
| The = command tells you what line you specified, or, if you specified
 | |
| a range of lines, it will tell you both endpoints and the number of
 | |
| lines included in the range.
 | |
| 
 | |
| The file command tells you the name of the file, whether it has been
 | |
| modified, the number of lines in the file, and the current line number.
 | |
| .UU "Multiple Files"
 | |
| .LP
 | |
| .ta 1.2i 2.4i
 | |
| .nf
 | |
| 	args [files]
 | |
| 	next[!] [files]
 | |
| 	Next[!]
 | |
| 	previous[!]
 | |
| 	rewind[!]
 | |
| 
 | |
| .fi
 | |
| When you invoke \fIelvis\fR from your shell's command line, any filenames
 | |
| that you give to \fIelvis\fR as arguments are stored in the args list.  The
 | |
| (ar)gs command will display this list, or define a new one.
 | |
| 
 | |
| The (n)ext command switches from the current file to the next one in
 | |
| the args list.  You may specify a new args list here, too.
 | |
| 
 | |
| The (N)ext and (pre)vious commands (they're really aliases for the same
 | |
| command) switch from the current file to the preceding file in the
 | |
| args list.
 | |
| 
 | |
| The (rew)ind command switches from the current file to the first file
 | |
| in the args list.
 | |
| .SP 1
 | |
| .UU "Switching Files"
 | |
| .SP 1
 | |
| .LP
 | |
| .ta 1.2i 2.4i
 | |
| .nf
 | |
| 	edit[!] [file]
 | |
| 	tag[!] tagname
 | |
| 
 | |
| .fi
 | |
| The (e)dit command allows to switch from the current file to some other
 | |
| file.  This has nothing to do with the args list, by the way.
 | |
| 
 | |
| The (ta)g command looks up a given tagname in a file called \*(OQtags".
 | |
| This tells it which file the tag is in, and how to find it in that file.
 | |
| \fIElvis\fR then switches to the tag's file and finds the tag.
 | |
| .SP 1
 | |
| .UU "Exiting"
 | |
| .SP 1
 | |
| .LP
 | |
| .ta 1.2i 2.4i
 | |
| .nf
 | |
| 	quit[!]
 | |
| 	wq
 | |
| 	xit
 | |
| 
 | |
| .fi
 | |
| The (q)uit command exits from the editor without saving your file.
 | |
| 
 | |
| The (wq) and (x)it commands (really two names for the same command)
 | |
| both write the file before exiting.
 | |
| .UU "File I/O"
 | |
| .LP
 | |
| .ta 1.2i 2.4i
 | |
| .nf
 | |
| [line]	read file
 | |
| [line][,line]	write[!][[>>]file]
 | |
| 
 | |
| .fi
 | |
| The (r)ead command gets text from another file and inserts it after
 | |
| the specified line.
 | |
| 
 | |
| .fi
 | |
| The (w)rite command writes the whole file, or just part of it, to
 | |
| some other file.  The !, if present, will permit the lines to be
 | |
| written even if you've set the readonly option.  If you precede the
 | |
| filename by >> then the lies will be appended to the file.
 | |
| .UU "Directory"
 | |
| .LP
 | |
| .ta 1.2i 2.4i
 | |
| .nf
 | |
| 	cd [directory]
 | |
| 	chdir [directory]
 | |
| 	shell
 | |
| 
 | |
| .fi
 | |
| The (cd) and (chd)ir commands (really two names for one command)
 | |
| switch the current working directory.
 | |
| 
 | |
| The (sh)ell command starts an interactive shell.
 | |
| .SP 0.5
 | |
| .UU "Debugging"
 | |
| .SP 0.5
 | |
| .LP
 | |
| .ta 1.2i 2.4i
 | |
| .nf
 | |
| [line][,line]	debug[!]
 | |
| 	validate[!]
 | |
| 
 | |
| .fi
 | |
| These commands are only available if you compile \fIelvis\fR with the
 | |
| \fB-DDEBUG\fR flag.
 | |
| 
 | |
| The de(b)ug command lists stats for the blocks which contain the
 | |
| specified range of lines.  If the ! is present, then the contents
 | |
| of those blocks is displayed, too.
 | |
| 
 | |
| The (va)lidate command checks certain variables for internal
 | |
| consistency.  Normally it does not output anything unless it detects
 | |
| a problem.  With the !, though, it will always produce *some*
 | |
| output.
 | |
| .SP 0.5
 | |
| .SS "Extensions"
 | |
| .SP 0.5
 | |
| .PP.
 | |
| .ta 1i
 | |
| .in +0.25i
 | |
| In addition to the standard commands, a variety of extra features are
 | |
| present in \fIelvis\fR that are not present in \fIvi\fR.
 | |
| They are described below.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B .exrc
 | |
| .br
 | |
| \fIElvis\fR first runs a \fI.exrc\fR file (if there is one) from your $HOME
 | |
| directory. After that, it runs a \fI.exrc\fR (if there is one) from the
 | |
| current directory.  The one in the current directory may override
 | |
| settings made by the one in the $HOME directory.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B :mkexrc
 | |
| .ti -0.25i
 | |
| .B :mk
 | |
| .br
 | |
| This EX command saves the current :set and :map configurations in
 | |
| the \*(OQ.exrc\*(CQ file in your current directory.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B :args
 | |
| .ti -0.25i
 | |
| .B :ar
 | |
| .br
 | |
| You can use the :args command to define a new args list, as in:
 | |
| 
 | |
| 	:args *.h
 | |
| 
 | |
| After you have defined a new args list, the next time you issue a
 | |
| :next command \fIelvis\fR will switch to the first file of the new list.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B :Next
 | |
| .ti -0.25i
 | |
| .B :previous
 | |
| .ti -0.25i
 | |
| .B :N
 | |
| .ti -0.25i
 | |
| .B :pre
 | |
| .br
 | |
| These commands move backwards through the args list.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B zz
 | |
| .br
 | |
| In VI, the (lowercase) \*(OQzz\*(CQ command will center the current line on
 | |
| the screen, like \*(OQz="
 | |
| 
 | |
| .ti -0.25i
 | |
| .B .
 | |
| .br
 | |
| The default count value for . is the same as the previous command
 | |
| which . is meant to repeat.  However, you can supply a new count
 | |
| if you wish.  
 | |
| For example, after \*(OQ3dw\*(CQ, \*(OQ.\*(CQ will delete 3 words,
 | |
| but \*(OQ5.\*(CQ will delete 5 words.
 | |
| 
 | |
| .ti -0.25i
 | |
| \fB"\fR
 | |
| .br
 | |
| The text which was most recently input (via a \*(OQcw\*(CQ command, or
 | |
| something similar) is saved in a cut buffer called ". (which is a
 | |
| pretty hard name to write in an English sentence).  You can use this
 | |
| with the \*(OQp\*(CQ or \*(OQP\*(CQ commands thusly:
 | |
| .HS
 | |
| 	".p
 | |
| .HS
 | |
| .ti -0.25i
 | |
| .B K
 | |
| .br
 | |
| You can move the cursor onto a word and press shift-K to have \fIelvis\fR
 | |
| run a reference program to look that word up.  This command alone is
 | |
| worth the price of admission!  See the ctags and ref programs.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B input
 | |
| .br
 | |
| You can backspace back past the beginning of the line.
 | |
| If you type CTRL-A, then the text that you input last time is
 | |
| inserted.  You will remain in input mode, so you can backspace over
 | |
| part of it, or add more to it.  (This is sort of like CTRL-@ on
 | |
| the real vi, except that CTRL-A really works.)
 | |
| 
 | |
| Real \fIvi\fR can only remember up to 128 characters of input, but \fIelvis\fR
 | |
| can remember any amount.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B :set
 | |
| charattr
 | |
| .ti -0.25i
 | |
| .B :se
 | |
| ca
 | |
| .br
 | |
| \fIElvis\fR can display \*(OQbackslash-f\*(CQ style character attributes on the
 | |
| screen as you edit.  The following example shows the recognized
 | |
| attributes:
 | |
| 
 | |
| 	normal \fBboldface\fR \fIitalics\fR 
 | |
| 
 | |
| NOTE: you must compile \fIelvis\fR without the \(enDSET_NOCHARATTR flag for
 | |
| this to work.
 | |
| .in -0.25i
 | |
| .SS "Omissions"
 | |
| .PP
 | |
| A few \fIvi\fR features are missing.
 | |
| The replace mode is a hack.  It does not save the text that it overwrites.
 | |
| .PP
 | |
| Long lines are displayed differently\(emwhere the real vi would wrap a long
 | |
| line onto several rows of the screen, \fIelvis\fR simply displays part of the line,
 | |
| and allows you to scroll the screen sideways to see the rest of it.
 | |
| .PP
 | |
| The \*(OQ:preserve\*(CQ and \*(OQ:recover\*(CQ commands are missing, as 
 | |
| is the \fB\(enr\fR flag.
 | |
| \*(OQ:Preserve" is practically never used and since use of \*(OQ:recover\\*(CQ
 | |
| is so rare, it was decided to implement it as a separate program.  There's no
 | |
| need to load the recovery code into memory every time you edit a file.
 | |
| .PP
 | |
| LISP support is missing.
 | |
| The \*(OQ@\*(CQ and \*(OQ:@\*(CQ commands are missing.
 | |
| You cannot APPEND to a cut buffer.
 | |
| .SS "Options"
 | |
| .PP
 | |
| A variety of options can be set as described below:
 | |
| .HS
 | |
| .nf
 | |
| .in +0.25i
 | |
| .ta 0.9i 1.35i 2.1i 3.0i
 | |
| \fBName	Abbr	Type	Default	Description\fR
 | |
| autoindent	as	Bool	FALSE	autoindent during input?
 | |
| autowrite	aw	Bool	FALSE	write file for :n command?
 | |
| charattr	ca	Bool	FALSE	display bold & underline chars?
 | |
| columns	co	Number	80	width of screen, in characters
 | |
| directory	dir	String	/usr/tmp	where tmp files are kept
 | |
| errorbells	eb	Bool	TRUE	ring bell on error?
 | |
| exrefresh	er	Bool	TRUE	EX mode calls write() often?
 | |
| ignorecase	ic	Bool	FALSE	searches: upper/lowercase OK?
 | |
| keytime	kt	Number	1	allow slow receipt of ESC seq?
 | |
| keywordprg	kp	String	/usr/bin/ref	program to run for shift-K
 | |
| lines	ln	Number	25	height of screen, in lines
 | |
| list	li	Bool	FALSE	show tabs as \*(OQ^I\*(CQ?
 | |
| magic	ma	Bool	TRUE	searches: allow metacharacters?
 | |
| paragraphs	pa	String	PPppPApa	paragraphs start with .PP, etc.
 | |
| readonly	ro	Bool	FALSE	no file should be written back?
 | |
| report	re	Number	5	report changes to X lines?
 | |
| scroll	sc	Number	12	default #lines for ^U and ^D
 | |
| sections	se	String	SEseSHsh	sections start with .SE, etc.
 | |
| shell	sh	String	\fI/bin/sh\fR	shell program, from environment
 | |
| shiftwidth	sw	Number	8	width of < or > commands
 | |
| sidescroll	ss	Number	8	#chars to scroll sideways by
 | |
| sync	sy	Bool	FALSE	call sync() after each change?
 | |
| tabstop	ts	Number	8	width of a tab character
 | |
| term	te	String	"?"	terminal type, from environment
 | |
| vbell	vb	Bool	TRUE	use visible bell if possible?
 | |
| warn	wa	Bool	TRUE	warn if file not saved for :!cmd
 | |
| wrapmargin	wm	Number	0	Insert newline after which col?
 | |
| wrapscan	ws	Bool	TRUE	searches: wrap at EOF?
 | |
| 
 | |
| .fi
 | |
| .ti -0.25i
 | |
| .B autoindent
 | |
| .br
 | |
| During input mode, the autoindent option will cause each added line
 | |
| to begin with the same amount of leading whitespace as the line above
 | |
| it.  Without autoindent, added lines are initially empty.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B autowrite
 | |
| .br
 | |
| When you're editing one file and decide to switch to another\(emvia
 | |
| the :tag command, or :next command, perhaps\(emif your current
 | |
| file has been modified, then \fIelvis\fR will normally print an error
 | |
| message and refuse to switch.
 | |
| 
 | |
| However, if the autowrite option is on, then \fIelvis\fR will write the
 | |
| modified version of the current file and successfully switch to the
 | |
| new file.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B charattr
 | |
| .br
 | |
| Many text formatting programs allow you to designate portions of
 | |
| your text to be underlined, italicized, or boldface by embedding
 | |
| the special strings \\fU, \\fI, and \\fB in your text.  The special
 | |
| string \\fR marks the end of underlined or boldface text.
 | |
| 
 | |
| \fIElvis\fR normally treats those special strings just like any other
 | |
| text.
 | |
| However, if the \fIcharattr\fR option is on, then \fIelvis\fR will interpret
 | |
| those special strings correctly, to display underlined or boldface
 | |
| text on the screen.  (This only works, of course, if your terminal
 | |
| can display underlined and boldface, and if the TERMCAP entry says
 | |
| how to do it.)
 | |
| 
 | |
| .ti -0.25i
 | |
| .B columns
 | |
| .br
 | |
| This is a \*(OQread only\*(CQ option.  You cannot change its value, but you
 | |
| can have \fIelvis\fR print it.  It shows how wide your screen is.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B directory
 | |
| .br
 | |
| Elvis uses temporary files to store changed text.
 | |
| This option allows you to control where those temporary files will be.
 | |
| Ideally, you should store them on in fast non-volatile memory,
 | |
| such as a hard disk.
 | |
| 
 | |
| This option can only be set in the ".exrc" file.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B errorbells
 | |
| .br
 | |
| Normally, \fIelvis\fR will ring your terminal's bell if you make an error.
 | |
| However, in noerrorbells mode, your terminal will remain silent.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B exrefresh
 | |
| .br
 | |
| The EX mode of \fIelvis\fR writes many lines to the screen.  You can make
 | |
| \fIelvis\fR either write each line to the screen separately, or save up
 | |
| many lines and write them all at once.
 | |
| 
 | |
| The exrefresh option is normally on, so each line is written to the
 | |
| screen separately.
 | |
| 
 | |
| You may wish to turn the exrefresh option off (:se noer) if the
 | |
| \*(OQwrite\*(CQ system call is costly on your machine, or if you're using a
 | |
| windowing environment.  (Windowing environments scroll text a lot
 | |
| faster when you write many lines at once.)
 | |
| 
 | |
| This option has no effect in \fIvi\fR mode.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B ignorecase
 | |
| .br
 | |
| Normally, when \fIelvis\fR searches for text, it treats uppercase letters
 | |
| as being different for lowercase letters.
 | |
| 
 | |
| When the ignorecase option is on, uppercase and lowercase are treated
 | |
| as equal.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B keytime
 | |
| .br
 | |
| The arrow keys of most terminals send a multi-character sequence.
 | |
| It takes a measurable amount of time for these sequences to be
 | |
| transmitted.  The keytime option allows you to control the maximum
 | |
| amount of time to allow for an arrow key (or other mapped key) to
 | |
| be received in full.
 | |
| 
 | |
| The default keytime value is 2.  Because of the way 
 | |
| .Ux
 | |
| timekeeping works, the actual amount of time allowed will vary slightly, but it
 | |
| will always be between 1 and 2 seconds.
 | |
| 
 | |
| If you set keytime to 1, then the actual amount of time allowed will
 | |
| be between 0 and 1 second.  This will generally make the keyboard's
 | |
| response be a little faster (mostly for the ESC key), but on those
 | |
| occasions where the time allowed happens to be closer to 0 than 1
 | |
| second, \fIelvis\fR may fail to allow enough time for an arrow key's
 | |
| sequence to be received fully.  Ugh.
 | |
| 
 | |
| As a special case, you can set keytime to 0 to disable this time
 | |
| limit stuff altogether.  The big problem here is:  If your arrow
 | |
| keys' sequences start with an ESC, then every time you hit your ESC
 | |
| key \fIelvis\fR will wait... and wait... to see if maybe that ESC was
 | |
| part of an arrow key's sequence.
 | |
| 
 | |
| NOTE: this option is a generalization of the timeout option of the
 | |
| real vi.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B keywordprg
 | |
| .br
 | |
| \fIElvis\fR has a special keyword lookup feature.  You move the cursor
 | |
| onto a word, and hit shift-K, and \fIelvis\fR uses another program to
 | |
| look up the word and display information about it.
 | |
| 
 | |
| This option says which program gets run.  It should contain the full
 | |
| pathname of the program; your whole execution path is \fInot\fR checked.
 | |
| 
 | |
| The default value of this option is \fI/usr/bin/ref\fR, which is a
 | |
| program that looks up the definition of a function in C.  It looks
 | |
| up the function name in a file called \*(OQrefs\*(CQ which is created by
 | |
| ctags.
 | |
| 
 | |
| You can substitute other programs, such as an English dictionary
 | |
| program or the online manual.  \fIelvis\fR runs the program, using the
 | |
| keyword as its only argument.  The program should write information
 | |
| to stdout.  The program's exit status should be 0, unless you want
 | |
| \fIelvis\fR to print \*(OQ<<< failed >>>".
 | |
| 
 | |
| .ti -0.25i
 | |
| .B lines
 | |
| .br
 | |
| This \*(OQread only\*(CQ option shows how many lines you screen has.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B list
 | |
| .br
 | |
| Normally (in \*(OQnolist" mode) \fIelvis\fR will expand tabs to the proper
 | |
| number of spaces on the screen, so that the file appears the same would it would
 | |
| be if you printed it or looked at it with \fImore\fR.
 | |
| 
 | |
| Sometimes, though, it can be handy to have the tabs displayed as \*(OQ^I".
 | |
| In \*(OQlist" mode, \fIelvis\fR does this, and also displays a \*(OQ$"
 | |
| after the end of the line.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B magic
 | |
| .br
 | |
| The search mechanism in \fIelvis\fR can accept \*(OQregular 
 | |
| expressions\*(CQ\(emstrings in which certain characters have special meaning.
 | |
| The magic option is normally on, which causes these characters to
 | |
| be treated specially.
 | |
| If you turn the magic option off (:se noma), then all characters
 | |
| except ^ and $ are treated literally.   ^ and $ retain their special
 | |
| meanings regardless of the setting of magic.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B paragraphs
 | |
| .br
 | |
| The { and } commands move the cursor forward or backward in increments
 | |
| of one paragraph.  Paragraphs may be separated by blank lines, or by
 | |
| a \*(OQdot\*(CQ command of a text formatter.  Different text formatters use
 | |
| different \*(OQdot\*(CQ commands.  This option allows you to configure \fIelvis\fR
 | |
| to work with your text formatter.
 | |
| 
 | |
| It is assumed that your formatter uses commands that start with a
 | |
| ".\*(CQ character at the front of a line, and then have a one- or
 | |
| two-character command name.
 | |
| 
 | |
| The value of the paragraphs option is a string in which each pair
 | |
| of characters is one possible form of your text formatter's paragraph
 | |
| command.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B readonly
 | |
| .br
 | |
| Normally, \fIelvis\fR will let you write back any file to which you have
 | |
| write permission.  If you do not have write permission, then you
 | |
| can only write the changed version of the file to a \fIdifferent\fR
 | |
| file.
 | |
| 
 | |
| If you set the readonly option, then \fIelvis\fR will pretend you do not
 | |
| have write permission to \fIany\fR file you edit.  It is useful when
 | |
| you really only mean to use \fIelvis\fR to look at a file, not to change
 | |
| it.  This way you cannot change it accidentally.
 | |
| 
 | |
| This option is normally off, unless you use the \*(OQview\*(CQ alias of \fIelvis\fR.
 | |
| \*(OQView\*(CQ is like \fIvi\fR except that the readonly option is on.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B report
 | |
| .br
 | |
| Commands in \fIelvis\fR may affect many lines.  For commands that affect
 | |
| a lot of lines, \fIelvis\fR will output a message saying what was done and
 | |
| how many lines were affected.  This option allows you to define
 | |
| what \*(OQa lot of lines\*(CQ means.  The default is 5, so any command which
 | |
| affects 5 or more lines will cause a message to be shown.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B scroll
 | |
| .br
 | |
| The CTRL-U and CTRL-D keys normally scroll backward or forward
 | |
| by half a screenful, but this is adjustable.  The value of this option
 | |
| says how many lines those keys should scroll by.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B sections
 | |
| .br
 | |
| The [[ and ]] commands move the cursor backward or forward in
 | |
| increment of 1 section.  Sections may be delimited by a { character
 | |
| in column 1 (which is useful for C source code) or by means of
 | |
| a text formatter's \*(OQdot\*(CQ commands.
 | |
| 
 | |
| This option allows you to configure \fIelvis\fR to work with your text
 | |
| formatter's \*(OQsection\*(CQ command, in exactly the same way that the
 | |
| paragraphs option makes it work with the formatter's \*(OQparagraphs"
 | |
| command.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B shell
 | |
| .br
 | |
| When \fIelvis\fR forks a shell (perhaps for the :! or :shell commands)
 | |
| this is the program that is uses as a shell.  This is \fI/bin/sh\fR
 | |
| by default, unless you have set the SHELL environment variable,
 | |
| it which case the default value is copied from the environment.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B shiftwidth
 | |
| .br
 | |
| The < and > commands shift text left or right by some uniform number
 | |
| of columns.  The shiftwidth option defines that uniform number.
 | |
| The default is 8.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B sidescroll
 | |
| .br
 | |
| For long lines, \fIelvis\fR scrolls sideways.  (This is different from
 | |
| the real \fIvi\fR, which wraps a single long line onto several rows of
 | |
| the screen.)
 | |
| To minimize the number of scrolls needed, \fIelvis\fR moves the screen
 | |
| sideways by several characters at a time.  The value of this option
 | |
| says how many characters' widths to scroll at a time.
 | |
| Generally, the faster your screen can be redrawn, the lower the value
 | |
| you will want in this option.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B sync
 | |
| .br
 | |
| If the system crashes during an edit session, then most of your work
 | |
| can be recovered from the temporary file that \fIelvis\fR uses to store
 | |
| changes.  However, sometimes 
 | |
| .MX
 | |
| will not copy changes to the
 | |
| hard disk immediately, so recovery might not be possible.  The [no]sync
 | |
| option lets you control this.
 | |
| In nosync mode (which is the default), \fIelvis\fR lets the operating system
 | |
| control when data is written to the disk.  This is generally faster.
 | |
| In sync mode, \fIelvis\fR forces all changes out to disk every time you make
 | |
| a change.  This is generally safer, but slower.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B tabstop
 | |
| .br
 | |
| Tab characters are normally 8 characters wide, but you can change
 | |
| their widths by means of this option.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B term
 | |
| .br
 | |
| This \*(OQread only\*(CQ option shows the name of the termcap entry that
 | |
| \fIelvis\fR is using for your terminal.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B vbell
 | |
| .br
 | |
| If your termcap entry describes a visible alternative to ringing
 | |
| your terminal's bell, then this option will say whether the visible
 | |
| version gets used or not.  Normally it will be.
 | |
| 
 | |
| If your termcap does NOT include a visible bell capability, then
 | |
| the vbell option will be off, and you cannot turn it on.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B warn
 | |
| .br
 | |
| \fIElvis\fR will normally warn you if you run a shell command without saving
 | |
| your changed version of a file.
 | |
| The \*(OQnowarn" option prevents this warning.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B wrapmargin
 | |
| .br
 | |
| Normally (with wrapmargin=0) \fIelvis\fR will let you type in extremely long
 | |
| lines, if you wish.
 | |
| However, with wrapmargin set to something other that 0 (wrapmargin=65
 | |
| is nice), \fIelvis\fR will automatically cause long lines to be \*(OQwrapped"
 | |
| on a word break for lines longer than wrapmargin's setting.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B wrapscan
 | |
| .br
 | |
| Normally, when you search for something, \fIelvis\fR will find it no matter
 | |
| where it is in the file.  \fIelvis\fR starts at the cursor position, and
 | |
| searches forward.  If \fIelvis\fR hits EOF without finding what you're
 | |
| looking for, then it wraps around to continue searching from line 1.
 | |
| 
 | |
| If you turn off the wrapscan option (:se nows), then when \fIelvis\fR hits
 | |
| EOF during a search, it will stop and say so.
 | |
| .in -0.25i
 | |
| .SS "Cflags"
 | |
| .PP
 | |
| \fIElvis\fR uses many preprocessor symbols to control compilation.
 | |
| Most of these flags allow you to disable small sets of features.
 | |
| \s-2MINIX\s0-ST users will probably want all features enabled, but
 | |
| \s-2MINIX\s0-PC users will have to disable one or two feature sets
 | |
| because otherwise \fIelvis\fR would be too large to compile and run.
 | |
| 
 | |
| These symbols can be defined via flags passed to the compiler.
 | |
| The best way to do this is to edit the Makefile, and append the flag
 | |
| to the \*(OQCFLAGS=\*(CQ line.
 | |
| After you do that, you must recompile elvis completely by saying
 | |
| .HS
 | |
| .Cx "make  clean"
 | |
| .br
 | |
| .Cx "make"
 | |
| .HS
 | |
| .in +0.25i
 | |
| .ti -0.25i
 | |
| .B \(enDM_SYSV
 | |
| .br
 | |
| This flag causes \fIelvis\fR to use System-V ioctl() calls for controlling
 | |
| your terminal; normally it uses v7/BSD/\s-2MINIX\s0 ioctl() calls.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B \(enDDATE
 | |
| .br
 | |
| The symbol DATE should be defined to look like a string constant,
 | |
| giving the date when \fIelvis\fR was compiled.
 | |
| This date is reported by the \*(OQ:version\*(CQ command.
 | |
| 
 | |
| You can also leave DATE undefined, in which case \*(OQ:version\*(CQ will not
 | |
| report the compilation date.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B \(enDCRUNCH
 | |
| .br
 | |
| This flag causes several large often-used macros to be replaced by
 | |
| equivalent functions.
 | |
| This saves about 4K of space in the \*(OQ.text\*(CQ segment, and it does not
 | |
| cost you any features.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B \(enDDEBUG
 | |
| .br
 | |
| This adds many internal consistency checks and the \*(OQ:debug\*(CQ 
 | |
| and \*(OQ:validate\*(CQ
 | |
| commands.  It increases the size of \*(OQtext\*(CQ by about 5K bytes.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B \(enDNO_CHARATTR
 | |
| .br
 | |
| This permanenently disables the \*(OQcharattr\*(CQ option.
 | |
| It reduces the size of \*(OQ.text\*(CQ by about 850 bytes.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B \(enDNO_RECYCLE
 | |
| .br
 | |
| Normally, \fIelvis\fR will recycle space in the temporary file which contains
 | |
| totally obsolete text.
 | |
| The \fB\(enDNO_RECYCLE\fR option disables this, making your \*(OQ.text\*(CQ  segment 
 | |
| smaller by about 1K but also permitting the temporary file to grow very 
 | |
| quickly.
 | |
| If you have less than two megabytes of free space on your disk,
 | |
| then do not even consider using this flag.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B \(enDNO_SENTENCE
 | |
| .br
 | |
| This leaves out the \*(OQ(\*(CQ and \*(OQ)\*(CQ visual commands, and 
 | |
| removes the code that allows the \*(OQ[[\*(CQ, \*(OQ]]\*(CQ, \*(OQ{\*(CQ, 
 | |
| and \*(OQ}\*(CQ commands to recognize \fRnroff\fR macros.
 | |
| The \*(OQ[[\*(CQ and \*(OQ]]\*(CQ commands will still move to the start of 
 | |
| the previous/next C function source code, though, and \*(OQ{\*(CQ 
 | |
| and \*(OQ}\*(CQ will move to the previous/next blank line.
 | |
| This saves about 650 bytes from the \*(OQ.text\*(CQ segment.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B \(enDNO_CHARSEARCH
 | |
| .br
 | |
| This leaves out the visual commands which locate a given character in the
 | |
| current line: \*(OQf\*(CQ, \*(OQt\*(CQ, \*(OQF\*(CQ, \*(OQT\*(CQ, \*(OQ;\*(CQ, and \*(OQ,\*(CQ.
 | |
| This saves about 900 bytes.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B \(enDNO_EXTENSIONS
 | |
| .br
 | |
| This leaves out the \*(OQ:mkexrc\*(CQ command, and the \*(OQK\*(CQ and \*(OQ#\*(CQ visual commands.
 | |
| Other extensions are either inherent in the design of \fIelvis\fR,
 | |
| or are too tiny to be worth removing.
 | |
| This saves about 500 bytes.
 | |
| 
 | |
| .ti -0.25i
 | |
| .B \(enDNO_MAGIC
 | |
| .br
 | |
| This permanently disables the \*(OQmagic\*(CQ option, so that most 
 | |
| meta-characters in a regular expression are not recognized.  
 | |
| This saves about 3K bytes from the \*(OQ.text\*(CQ segment.
 | |
| .HS
 | |
| .in -0.25i
 | |
| .SS "Termcap"
 | |
| \fIElvis\fR can use standard termcap entries,
 | |
| but it also recognizes and uses several extra capabilities, if you give them.
 | |
| All of these are optional.
 | |
| .nf
 | |
| .in +0.25i
 | |
| .ta 1.5i
 | |
| .HS
 | |
| \fBCapability	Description\fR
 | |
| :PU=:	sequence received from the <PgUp> key
 | |
| :PD=:	sequence received from the <PgDn> key
 | |
| :HM=:	sequence received from the <Home> key
 | |
| :EN=:	sequence received from the <End> key
 | |
| :VB=:	sequence sent to start bold printing
 | |
| :Vb=:	sequence sent to end bold printing
 | |
| .in -0.25i
 | |
| .SS "Author"
 | |
| .PP
 | |
| \fIElvis\fR was written by Steve Kirkendall.
 | |
| He can be reached by email at: kirkenda@cs.pdx.edu
 | |
| for comments regarding \fIelvis\fR.
 | 
