ELVIS.9
资源名称:os_source.zip [点击查看]
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:43k
源码类别:
操作系统开发
开发平台:
C/C++
- Command: elvis - clone of the Berkeley vi editor
- Syntax: elvis [-Rerv] [-t tag] [file] ...
- Flags: -R Set the read-only option
- -e Start up emulating ex
- -r Tell the user to use elvrec instead
- -t Start editing at the given tag
- -v Start up emulating vi
- Examples: elvis # Call the editor
- elvis prog.c # edit prog.c
- Elvis is a full-screen editor closely modeled on the famous
- Berkeley vi editor. It provides essentially the same interface to the
- user as vi, but the code is completely new, written from scratch. This
- document provides a brief introduction to vi. It is not intended as a
- tutorial for beginners. Most books on UNIX cover vi.
- Like vi, elvis can operate as a screen editor (vi mode) or as a
- line editor (ex) mode. It can be called either as elvis vi,or as ex,
- depending on which is desired. They are all links to the same file.
- Vi Commands
- Below is a list of the vi commands supported. The following
- symbols are used in the table:
- count Integer parameter telling how many or how much
- key One character parameter to the command
- inp Interactive input expected
- mv Indicates how much for commands like delete and change:
- ( Previous sentence
- ) Next sentence
- { Previous paragraph
- } Next paragraph (delimited by blank line, .PP,
- .LP, .IP etc.)
- [ Previous section (delimited by .SH or .NH)
- A repeated command character means the scope is
- this line
- MOVE Indicates commands that may also be used where mv is
- specified
- EDIT These commands affect text and may be repeated by the .
- command
- In addition to the above notation, the caret (^) is used as an
- abbreviation for CTRL. For example, ^A means CTRL-A.
- Count Command Description Type
- ^A (Not defined)
- ^B Move toward the top of the file by 1 screenful
- ^C (Not defined)
- count ^D Scroll down count lines (default 1/2 screen)
- count ^E Scroll up count lines
- ^F Move toward the bottom of the file by 1
- screenful
- ^G Show file status, and the current line
- count ^H Move left, like h MOVE
- ^I (Not defined)
- count ^J Move down MOVE
- ^K (Not defined)
- ^l Redraw the screen
- count ^M Move to the front of the next line MOVE
- count ^N Move down MOVE
- ^O (Not defined)
- count ^P Move up MOVE
- ^Q (Not defined)
- ^R Redraw the screen
- ^S (Not defined)
- ^T (Not defined)
- count ^U Scroll up count lines (default 1/2 screen)
- ^V (Not defined)
- ^W (Not defined)
- ^X (Not defined)
- count ^Y Scroll down count lines
- ^Z (Not defined)
- ESC (Not defined)
- ^ (Not defined)
- ^] If the cursor is on a tag name, go to that tag
- ^^ Save this file and edit the previous file
- ^_ (Not defined)
- count SPACE Move right,like l MOVE
- ! mv Run the selected lines thru an external filter
- program
- " key Select which cut buffer to use next
- # (Not defined)
- $ Move to the rear of the current line MOVE
- % move to the matching (){}[] character MOVE
- & (Not defined)
- ' key Move to a marked line MOVE
- count ( Move backward count sentences MOVE
- count ) Move forward count sentences MOVE
- * (Not defined)
- count + Move to the front of the next line MOVE
- count , Repeat the previous [fFtT] but the other way
- MOVE
- count - Move to the front of the preceding line MOVE
- . Repeat the previous 'edit' command
- / Text search forward for a given regular expr
- MOVE
- 0 If not part of count, move to 1st char of this
- line
- MOVE
- 1 Part of count
- 2 Part of count
- 3 Part of count
- 4 Part of count
- 5 Part of count
- 6 Part of count
- 7 Part of count
- 8 Part of count
- 9 Part of count
- : Text. Run single ex cmd
- count ; Repeat the previous [fFtT] cmd MOVE
- count < mv Shift text left EDIT
- = (Not defined)
- count > mv Shift text right EDIT
- ? text Search backward for a given regular expression
- MOVE
- @ (Not defined)
- count A inp Append at end of the line EDIT
- count B Move back Word MOVE
- C inp Change text from cursor through end of line EDIT
- D Delete text from cursor through end of line
- EDIT
- count E Move end of Word MOVE
- count F key Move leftward to a given character MOVE
- count G Move to line #count (default is the bottom line)
- MOVE
- count H Move to home row (the line at the top of the
- screen)
- count I inp Insert at the front of the line (after indents)
- EDIT
- count J Join lines, to form one big line EDIT
- K Look up keyword
- count L Move to last row (the line at the bottom of the
- screen)
- M Move to middle row (the line in the middle)
- N Repeat previous search, but the opposite way
- MOVE
- count O inp Open up a new line above the current line EDIT
- P Paste text before the cursor
- Q Quit to EX mode
- R inp Overtype EDIT
- count S inp Change lines, like countcc
- count T key Move leftward almost to a given character MOVE
- U Undo all recent changes to the current line
- V (Not defined)
- count W Move forward count Words MOVE
- count X Delete the character(s) to the left of the
- cursor
- EDIT
- count Y Yank text line(s) (copy them into a cut buffer)
- Z Z Save the file & exit
- [ [ Move back 1 section MOVE
- (Not defined)
- ] ] Move forward 1 section MOVE
- ^ Move to the front of the current line (after
- indent)
- MOVE
- _ (Not defined)
- ` key Move to a marked character MOVE
- count a inp Insert text after the cursor EDIT
- count b Move back count words MOVE
- c mv Change text EDIT
- d mv Delete text EDIT
- count e Move forward to the end of the current word MOVE
- count f key Move rightward to a given character MOVE
- g (Not defined)
- count h Move left MOVE
- count i inp Insert text at the cursor EDIT
- count j Move down MOVE
- count k Move up MOVE
- count l Move right MOVE
- m key Mark a line or character
- n Repeat the previous search MOVE
- count o inp Open a new line below the current line EDIT
- p Paste text after the cursor
- q (Not defined)
- count r key Replace count chars by a given character EDIT
- count s inp Replace count chars with text from the user EDIT
- count t key Move rightward almost to a given character MOVE
- u Undo the previous edit command
- v (Not defined)
- count w Move forward count words MOVE
- count x Delete the character that the cursor's on EDIT
- y mv Yank text (copy it into a cut buffer)
- z key Scroll current line to the screen's +=top
- -=bottom .=middle
- count { Move back count paragraphs MOVE
- count | Move to column count (the leftmost column is 1)
- count } Move forward count paragraphs MOVE
- count ~ Switch a character between upper & lower case
- EDIT
- DEL (Not defined)
- Ex Commands
- Below is a list of the ex commands supported. All can be
- abbreviated.
- General
- [line] append
- args [files]
- cd [directory]
- chdir [directory]
- [line][,line] change
- [line][,line] copy line
- [line][,line] debug[!]
- [line][,line] Delete ['x]
- 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 ['x]
- 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 ['x]
- [line][,line] ! command
- [line][,line] <
- [line][,line] =
- [line][,line] >
- Text Entry
- [line] append
- [line][,line] change ['x]
- [line] Insert
- 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.
- Cut & Paste
- [line][,line] Delete ['x]
- [line][,line] yank ['x]
- [line] put[!] ['x]
- [line][,line] copy line
- [line][,line] to line
- [line][,line] Move line
- 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 not delete them.
- The (pu)t command inserts text from a cut buffer after the specified
- line----or 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.
- Displaying Text
- [line][,line] print
- [line][,line] list
- 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.
- Global Operations
- [line][,line] global /regexp/ command
- [line][,line] vglobal /regexp/ command
- 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 do not
- contain the regular expression.
- Line Editing
- [line][,line] join
- [line][,line] ! program
- [line][,line] <
- [line][,line] >
- [line][,line] substitute /regexp/replacement/[p][g]
- 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 ':'a,'z!sort -n' 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 'shiftwidth' option
- determines the shifting amount.
- The (s)ubstitute command finds the regular expression in each line, and
- replaces it with the replacement text. The 'p' option causes the
- altered lines to be printed, and the 'g' option permits all instances of
- the regular expression to be found & replaced. (Without 'g', only the
- first occurrence is replaced.)
- Undo
- undo
- The (u)ndo command restores the file to the state it was in before your
- most recent command which changed text.
- Configuration & Status
- map[!] [key mapped_to]
- unmap[!] key
- set [options]
- mkexrc
- [line] mark x
- visual
- version
- [line][,line] =
- file
- The (ma)p command allows you to configure elvis 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 elvis 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 'all' 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
- .exrc 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, elvis will start emulating vi.
- The (ve)rsion command tells you that what version of elvis 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.
- Multiple Files
- args [files]
- next[!] [files]
- Next[!]
- previous[!]
- rewind[!]
- When you invoke elvis from your shell's command line, any filenames that
- you give to elvis 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.
- Switching Files
- edit[!] [file]
- tag[!] tagname
- 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 'tags".
- This tells it which file the tag is in, and how to find it in that file.
- Elvis then switches to the tag's file and finds the tag.
- Exiting
- quit[!]
- wq
- xit
- 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.
- File I/O
- [line] read file
- [line][,line] write[!][[>>]file]
- The (r)ead command gets text from another file and inserts it after the
- specified line.
- 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.
- Directory
- cd [directory]
- chdir [directory]
- shell
- 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.
- Debugging
- [line][,line] debug[!]
- validate[!]
- These commands are only available if you compile elvis with the -DDEBUG
- 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.
- Extensions
- In addition to the standard commands, a variety of extra
- features are present in elvis that are not present in vi. They are
- described below.
- .exrc
- Elvis first runs a .exrc file (if there is one) from your $HOME
- directory. After that, it runs a .exrc (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.
- :mkexrc
- :mk
- This EX command saves the current :set and :map configurations in the
- '.exrc' file in your current directory.
- :args
- :ar
- 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 elvis will switch to the first file of the new list.
- :Next
- :previous
- :N
- :pre
- These commands move backwards through the args list.
- zz
- In VI, the (lowercase) 'zz' command will center the current line on
- the screen, like 'z="
- .
- 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 '3dw', '.' will delete 3 words, but '5.'
- will delete 5 words.
- "
- The text which was most recently input (via a 'cw' 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 'p' or 'P' commands thusly:
- ".p
- K
- You can move the cursor onto a word and press shift-K to have elvis
- run a reference program to look that word up. This command alone is
- worth the price of admission! See the ctags and ref programs.
- input
- 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 vi can only remember up to 128 characters of input, but elvis
- can remember any amount.
- :set charattr
- :se ca
- Elvis can display 'backslash-f' style character attributes on the
- screen as you edit. The following example shows the recognized
- attributes:
- normal boldface italics
- NOTE: you must compile elvis without the -DSET_NOCHARATTR flag for
- this to work.
- Omissions
- A few vi features are missing. The replace mode is a hack. It
- does not save the text that it overwrites.
- Long lines are displayed differently----where the real vi would
- wrap a long line onto several rows of the screen, elvis simply displays
- part of the line, and allows you to scroll the screen sideways to see
- the rest of it.
- The ':preserve' and ':recover' commands are missing, as is the -r
- flag. ':Preserve" is practically never used and since use of
- ':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.
- LISP support is missing. The '@' and ':@' commands are missing.
- You cannot APPEND to a cut buffer.
- Options
- A variety of options can be set as described below:
- Name Abbr Type Default Description
- 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 '^I'?
- 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 /bin/sh 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?
- autoindent
- 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.
- autowrite
- When you're editing one file and decide to switch to another----via
- the :tag command, or :next command, perhaps----if your current file
- has been modified, then elvis will normally print an error message
- and refuse to switch.
- However, if the autowrite option is on, then elvis will write the
- modified version of the current file and successfully switch to the
- new file.
- charattr
- 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.
- Elvis normally treats those special strings just like any other text.
- However, if the charattr option is on, then elvis 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.)
- columns
- This is a 'read only' option. You cannot change its value, but you
- can have elvis print it. It shows how wide your screen is.
- directory
- 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.
- errorbells
- Normally, elvis will ring your terminal's bell if you make an error.
- However, in noerrorbells mode, your terminal will remain silent.
- exrefresh
- The EX mode of elvis writes many lines to the screen. You can make
- elvis 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
- 'write' 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 vi mode.
- ignorecase
- Normally, when elvis 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.
- keytime
- 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 UNIX 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, elvis 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 elvis 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.
- keywordprg
- Elvis has a special keyword lookup feature. You move the cursor onto
- a word, and hit shift-K, and elvis 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 not checked.
- The default value of this option is /usr/bin/ref, which is a program
- that looks up the definition of a function in C. It looks up the
- function name in a file called 'refs' which is created by ctags.
- You can substitute other programs, such as an English dictionary
- program or the online manual. elvis 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
- elvis to print '<<< failed >>>".
- lines
- This 'read only' option shows how many lines you screen has.
- list
- Normally (in 'nolist" mode) elvis 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 more.
- Sometimes, though, it can be handy to have the tabs displayed as
- '^I". In 'list" mode, elvis does this, and also displays a '$" after
- the end of the line.
- magic
- The search mechanism in elvis can accept 'regular expressions'--
- --strings 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.
- paragraphs
- The { and } commands move the cursor forward or backward in
- increments of one paragraph. Paragraphs may be separated by blank
- lines, or by a 'dot' command of a text formatter. Different text
- formatters use different 'dot' commands. This option allows you to
- configure elvis to work with your text formatter.
- It is assumed that your formatter uses commands that start with a ".'
- 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.
- readonly
- Normally, elvis 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 different file.
- If you set the readonly option, then elvis will pretend you do not
- have write permission to any file you edit. It is useful when you
- really only mean to use elvis 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 'view' alias of
- elvis. 'View' is like vi except that the readonly option is on.
- report
- Commands in elvis may affect many lines. For commands that affect a
- lot of lines, elvis will output a message saying what was done and
- how many lines were affected. This option allows you to define what
- 'a lot of lines' means. The default is 5, so any command which
- affects 5 or more lines will cause a message to be shown.
- scroll
- 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.
- sections
- 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 'dot' commands.
- This option allows you to configure elvis to work with your text
- formatter's 'section' command, in exactly the same way that the
- paragraphs option makes it work with the formatter's 'paragraphs"
- command.
- shell
- When elvis forks a shell (perhaps for the :! or :shell commands) this
- is the program that is uses as a shell. This is /bin/sh by default,
- unless you have set the SHELL environment variable, it which case the
- default value is copied from the environment.
- shiftwidth
- 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.
- sidescroll
- For long lines, elvis scrolls sideways. (This is different from the
- real vi, which wraps a single long line onto several rows of the
- screen.) To minimize the number of scrolls needed, elvis 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.
- sync
- If the system crashes during an edit session, then most of your work
- can be recovered from the temporary file that elvis uses to store
- changes. However, sometimes MINIX 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),
- elvis lets the operating system control when data is written to the
- disk. This is generally faster. In sync mode, elvis forces all
- changes out to disk every time you make a change. This is generally
- safer, but slower.
- tabstop
- Tab characters are normally 8 characters wide, but you can change
- their widths by means of this option.
- term
- This 'read only' option shows the name of the termcap entry that
- elvis is using for your terminal.
- vbell
- 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.
- warn
- Elvis will normally warn you if you run a shell command without
- saving your changed version of a file. The 'nowarn" option prevents
- this warning.
- wrapmargin
- Normally (with wrapmargin=0) elvis will let you type in extremely
- long lines, if you wish. However, with wrapmargin set to something
- other that 0 (wrapmargin=65 is nice), elvis will automatically cause
- long lines to be 'wrapped" on a word break for lines longer than
- wrapmargin's setting.
- wrapscan
- Normally, when you search for something, elvis will find it no matter
- where it is in the file. elvis starts at the cursor position, and
- searches forward. If elvis 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 elvis hits
- EOF during a search, it will stop and say so.
- Cflags
- Elvis uses many preprocessor symbols to control compilation. Most
- of these flags allow you to disable small sets of features. MINIX-ST
- users will probably want all features enabled, but MINIX-PC users will
- have to disable one or two feature sets because otherwise elvis 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
- 'CFLAGS=' line. After you do that, you must recompile elvis completely
- by saying
- make clean
- make
- -DM_SYSV
- This flag causes elvis to use System-V ioctl() calls for controlling
- your terminal; normally it uses v7/BSD/MINIX ioctl() calls.
- -DDATE
- The symbol DATE should be defined to look like a string constant,
- giving the date when elvis was compiled. This date is reported by
- the ':version' command.
- You can also leave DATE undefined, in which case ':version' will not
- report the compilation date.
- -DCRUNCH
- This flag causes several large often-used macros to be replaced by
- equivalent functions. This saves about 4K of space in the '.text'
- segment, and it does not cost you any features.
- -DDEBUG
- This adds many internal consistency checks and the ':debug' and
- ':validate' commands. It increases the size of 'text' by about 5K
- bytes.
- -DNO_CHARATTR
- This permanenently disables the 'charattr' option. It reduces the
- size of '.text' by about 850 bytes.
- -DNO_RECYCLE
- Normally, elvis will recycle space in the temporary file which
- contains totally obsolete text. The -DNO_RECYCLE option disables
- this, making your '.text' 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.
- -DNO_SENTENCE
- This leaves out the '(' and ')' visual commands, and removes the code
- that allows the '[[', ']]', '{', and '}' commands to recognize nroff
- macros. The '[[' and ']]' commands will still move to the start of
- the previous/next C function source code, though, and '{' and '}'
- will move to the previous/next blank line. This saves about 650
- bytes from the '.text' segment.
- -DNO_CHARSEARCH
- This leaves out the visual commands which locate a given character in
- the current line: 'f', 't', 'F', 'T', ';', and ','. This saves about
- 900 bytes.
- -DNO_EXTENSIONS
- This leaves out the ':mkexrc' command, and the 'K' and '#' visual
- commands. Other extensions are either inherent in the design of
- elvis, or are too tiny to be worth removing. This saves about 500
- bytes.
- -DNO_MAGIC
- This permanently disables the 'magic' option, so that most meta-
- characters in a regular expression are not recognized. This saves
- about 3K bytes from the '.text' segment.
- Termcap Elvis can use standard termcap entries, but it also recognizes
- and uses several extra capabilities, if you give them. All of these are
- optional.
- Capability Description
- :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
- Author
- Elvis was written by Steve Kirkendall. He can be reached by email
- at: kirkenda@cs.pdx.edu for comments regarding elvis.