ELVIS.9
资源名称:os_source.zip [点击查看]
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:36k
源码类别:
操作系统开发
开发平台:
C/C++
- .CD "elvis (en clone of the Berkeley vi editor"
- .SX "elvis fR[fB(enRervfR] [fB(ent fItagfR] fR[fIfilefR] ..."
- .FL "(enR" "Set the read-only option"
- .FL "(ene" "Start up emulating fIexfR"
- .FL "(enr" "Tell the user to use fIelvrecfR instead
- .FL "(ent" "Start editing at the given tag"
- .FL "(env" "Start up emulating fIvifR"
- .EX "elvis" "Call the editor"
- .EX "elvis prog.c" "edit fIprog.cfR"
- .PP
- fIElvisfR is a full-screen editor closely modeled on the famous Berkeley
- fIvifR editor.
- It provides essentially the same interface to the user as fIvifR, but the
- code is completely new, written from scratch.
- This document provides a brief introduction to fIvifR.
- It is not intended as a tutorial for beginners.
- Most books on
- .Ux
- cover fIvifR.
- .PP
- Like fIvifR, fIelvisfR can operate as a screen editor
- (fIvifR mode) or as a line editor (fIexfR) mode.
- It can be called either as fIelvisfR fIvifR,or as fIexfR,
- depending on which is desired.
- They are all links to the same file.
- .SS "Vi Commands"
- .PP
- Below is a list of the fIvifR 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 fIdeletefR and fIchangefR:
- .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, .IPfR etc.)
- .ti -0.3i
- [ Previous section (delimited by fI.SHfR or fI.NHfR)
- .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 fImvfR 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
- .nf
- .na
- .ti -2i
- fBCount~~~~ Command Description TypefR
- .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 fIcountfR lines (default 1/2 screen)
- .ti -2i
- count ^E Scroll up fIcountfR 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 fIhfR 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 fIcountfR 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 fIcountfR 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 fIlfR 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 fIcountfR sentences MOVE
- .ti -2i
- count ) Move forward fIcountfR sentences MOVE
- .ti -2i
- * (Not defined)
- .ti -2i
- count + Move to the front of the next line MOVE
- .ti -2i
- count , Repeat the previous [fIfFtTfR] 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 fIexfR 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 #fIcountfR (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 fIcountfRcc
- .ti -2i
- count T key Move leftward fIalmostfR 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 fIcountfR 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 fIcountfR 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 fIcountfR chars by a given character EDIT
- .ti -2i
- count s inp Replace fIcountfR chars with text from the user EDIT
- .ti -2i
- count t key Move rightward fIalmostfR to a given character MOVE
- .ti -2i
- u Undo the previous edit command
- .ti -2i
- v (Not defined)
- .ti -2i
- count w Move forward fIcountfR 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 fIcountfR paragraphs MOVE
- .ti -2i
- count | Move to column fIcountfR (the leftmost column is 1)
- .ti -2i
- count } Move forward fIcountfR paragraphs MOVE
- .ti -2i
- .tr ~~
- count (ap Switch a character between upper & lower case EDIT
- .tr ~
- .ti -2i
- DEL (Not defined)
- .in -2i
- .fi
- .ad
- .SS "Ex Commands"
- .PP
- Below is a list of the fIexfR 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 fInotfR 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 notfR 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 fIelvisfR 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 fIelvisfR 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.exrcfR 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, fIelvisfR will start emulating vi.
- The (ve)rsion command tells you that what version of fIelvisfR 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 fIelvisfR from your shell's command line, any filenames
- that you give to fIelvisfR 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.
- fIElvisfR 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 fIelvisfR with the
- fB-DDEBUGfR 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 fIelvisfR that are not present in fIvifR.
- They are described below.
- .ti -0.25i
- .B .exrc
- .br
- fIElvisfR first runs a fI.exrcfR file (if there is one) from your $HOME
- directory. After that, it runs a fI.exrcfR (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 fIelvisfR 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 fIelvisfR
- 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 fIvifR can only remember up to 128 characters of input, but fIelvisfR
- can remember any amount.
- .ti -0.25i
- .B :set
- charattr
- .ti -0.25i
- .B :se
- ca
- .br
- fIElvisfR can display *(OQbackslash-f*(CQ style character attributes on the
- screen as you edit. The following example shows the recognized
- attributes:
- normal fBboldfacefR fIitalicsfR
- NOTE: you must compile fIelvisfR without the (enDSET_NOCHARATTR flag for
- this to work.
- .in -0.25i
- .SS "Omissions"
- .PP
- A few fIvifR 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, fIelvisfR 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(enrfR 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 DescriptionfR
- 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/shfR 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 fIelvisfR will normally print an error
- message and refuse to switch.
- However, if the autowrite option is on, then fIelvisfR 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.
- fIElvisfR normally treats those special strings just like any other
- text.
- However, if the fIcharattrfR option is on, then fIelvisfR 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 fIelvisfR 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, fIelvisfR 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 fIelvisfR writes many lines to the screen. You can make
- fIelvisfR 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 fIvifR mode.
- .ti -0.25i
- .B ignorecase
- .br
- Normally, when fIelvisfR 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, fIelvisfR 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 fIelvisfR 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
- fIElvisfR has a special keyword lookup feature. You move the cursor
- onto a word, and hit shift-K, and fIelvisfR 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 fInotfR checked.
- The default value of this option is fI/usr/bin/reffR, 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. fIelvisfR 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
- fIelvisfR 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) fIelvisfR 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 fImorefR.
- Sometimes, though, it can be handy to have the tabs displayed as *(OQ^I".
- In *(OQlist" mode, fIelvisfR does this, and also displays a *(OQ$"
- after the end of the line.
- .ti -0.25i
- .B magic
- .br
- The search mechanism in fIelvisfR 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 fIelvisfR
- 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, fIelvisfR 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 fIdifferentfR
- file.
- If you set the readonly option, then fIelvisfR will pretend you do not
- have write permission to fIanyfR file you edit. It is useful when
- you really only mean to use fIelvisfR 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 fIelvisfR.
- *(OQView*(CQ is like fIvifR except that the readonly option is on.
- .ti -0.25i
- .B report
- .br
- Commands in fIelvisfR may affect many lines. For commands that affect
- a lot of lines, fIelvisfR 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 fIelvisfR 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 fIelvisfR forks a shell (perhaps for the :! or :shell commands)
- this is the program that is uses as a shell. This is fI/bin/shfR
- 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, fIelvisfR scrolls sideways. (This is different from
- the real fIvifR, which wraps a single long line onto several rows of
- the screen.)
- To minimize the number of scrolls needed, fIelvisfR 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 fIelvisfR 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), fIelvisfR lets the operating system
- control when data is written to the disk. This is generally faster.
- In sync mode, fIelvisfR 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
- fIelvisfR 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
- fIElvisfR 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) fIelvisfR will let you type in extremely long
- lines, if you wish.
- However, with wrapmargin set to something other that 0 (wrapmargin=65
- is nice), fIelvisfR 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, fIelvisfR will find it no matter
- where it is in the file. fIelvisfR starts at the cursor position, and
- searches forward. If fIelvisfR 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 fIelvisfR hits
- EOF during a search, it will stop and say so.
- .in -0.25i
- .SS "Cflags"
- .PP
- fIElvisfR uses many preprocessor symbols to control compilation.
- Most of these flags allow you to disable small sets of features.
- s-2MINIXs0-ST users will probably want all features enabled, but
- s-2MINIXs0-PC users will have to disable one or two feature sets
- because otherwise fIelvisfR 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 fIelvisfR to use System-V ioctl() calls for controlling
- your terminal; normally it uses v7/BSD/s-2MINIXs0 ioctl() calls.
- .ti -0.25i
- .B (enDDATE
- .br
- The symbol DATE should be defined to look like a string constant,
- giving the date when fIelvisfR 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, fIelvisfR will recycle space in the temporary file which contains
- totally obsolete text.
- The fB(enDNO_RECYCLEfR 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 fRnrofffR 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 fIelvisfR,
- 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"
- fIElvisfR 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 DescriptionfR
- :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
- fIElvisfR was written by Steve Kirkendall.
- He can be reached by email at: kirkenda@cs.pdx.edu
- for comments regarding fIelvisfR.