"SfR Fresh" - the SfR Freeware/Shareware Archive

Member "vil96w32/vile.hlp" of archive vile-w32.zip:


As a special service "SfR Fresh" has tried to format the requested source page into HTML format using source code syntax highlighting with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. That can be also achieved for any archive member file by clicking within an archive contents listing on the first character of the file(path) respectively on the according byte size field.
    1 
    2 Getting along with vile						(version 9.6)
    3 -----------------------						-------------
    4 
    5 	Use Ctrl-D and Ctrl-U to scroll through this help information.
    6 
    7 	Type Ctrl-O to make this the only window on the screen.
    8 	Type Ctrl-K to get rid of this window.
    9 
   10 	First, to leave vile, use any of the following:
   11 		:q
   12 		:quit
   13 		:exit
   14 		:wq	(writes current buffer before quitting)
   15 		:q!	(quits without writing any changes!)
   16 		Q
   17 		:wwq or ZZ	(will write all changed buffers)
   18 		^X-^C	(don't know why.  _They_ don't put in ":q" for _us_!
   19 			 Actually, if ^C is your interrupt character, this
   20 			 won't get you out of vile.)
   21 
   22 	To get help (probably just this text), use any of:
   23 		:h
   24 		:help
   25 		^X-h
   26 		^A-h
   27 
   28 	The only vile commands described herein are those not present in
   29 	vi, or differing greatly from those in vi.  There is a section at
   30 	the bottom describing other differences between vile and vi.
   31 
   32 	To get a complete list of all commands, type ":show-commands".  To
   33 	get a list of all commands that contain the string "name", type
   34 	":apropos name".  These lists will show all command synonyms and
   35 	key sequences that are bound to the same function, along with a
   36 	short description of the command, and whether it is a motion or
   37 	operator command.
   38 
   39 	To get information on a specific key-binding or function, use the
   40 	"describe-key" or "describe-function" commands.  You will be asked
   41 	for a keystroke or function name, and a short description will be
   42 	shown.
   43 
   44 	You needn't type full command names -- type a few characters and
   45 	hit TAB to perform command completion.  Hitting a second TAB will
   46 	pop up a window containing the list of possible completions.
   47 
   48 	If your screen hops around a lot when you scroll, see the "Note on
   49 	Scrolling" section near the bottom of this file.
   50 
   51 
   52 
   53 General Remarks
   54 ---------------
   55 	vile holds text in "buffers".  Usually, these correspond to a file
   56 	that you are editing, but not always.  For instance, a buffer
   57 	might be used to display this help text, or to hold the output
   58 	of a shell command that you have run.  Buffers have names, and
   59 	these usually match the names of the files they contain.
   60 
   61 	Buffers are sometimes displayed in windows.  A buffer may be
   62 	displayed in more than one window at the same time.  There is
   63 	no such thing as a hidden window.  All existing windows are on
   64 	the screen.  There may, however, be hidden buffers, which are not
   65 	currently associated with any window.
   66 
   67 	All yank/delete registers (the default unnamed register, the numbered
   68 	registers ("1-9") that hold line-deletes, and the named registers
   69 	("a-z")) are global to the editor, and not attached to any single
   70 	buffer.  Thus you can delete text in one buffer and put it back in
   71 	another.
   72 
   73 	Undo operations are attached to a buffer, not a window.  Thus if
   74 	you have two windows to the same buffer, and make a change in one,
   75 	you can undo it in the other.
   76 
   77 	vile supports many, many "modes" (aka options), which are
   78 	thoroughly explained in the section entitled "Editor modes".  But
   79 	do note that this help file makes references to modes before the
   80 	concept is fully described.  It's a chicken and egg problem....
   81 
   82 	vile is 8-bit clean, allowing it to be used more easily at non-
   83 	English speaking sites.  See the section on "8-Bit Operation" for
   84 	more information.
   85 
   86 
   87 
   88 Command Prefixes
   89 ----------------
   90 	To extend the vi command set in vile, two (or three, depending on
   91 	how you count them) command "prefixes" exist.  These keystrokes,
   92 	in combination with another key, can be bound as a pair to execute
   93 	any vile function.  The default values for these prefixes are
   94 		Key:			Bound to dummy function:
   95 		^X     Control-X	cntl_x-prefix
   96 		^A     Control-A	cntl_a-prefix
   97 		#      poundsign	function-prefix
   98 	If you find any of these keys hard to type, or would prefer that
   99 	they are all control characters (or all non-control), they can
  100 	be changed by binding a new key to the function listed above.  See
  101 	the section on "Key Rebinding" below.  If you do change the values
  102 	of these keys, most of vile's informational displays (the Binding
  103 	List, for instance) will reflect these changes.  This documentation,
  104 	of course, will not change.
  105 
  106 	(The '#' key is used in vi to give terminal independent access
  107 	to function key bindings.  This is also true in vile -- if something
  108 	is bound to '#2', then it is also probably available with key F2
  109 	on your keyboard.)
  110 
  111 
  112 
  113 Buffer manipulation commands
  114 ----------------------------
  115 	vile stores buffers in a sorted list.  Depending on the
  116 	setting of the "autobuffer" mode, this list is either sorted
  117 	in "most-recently-used" order (this is the vile default), or in a
  118 	fixed order dependent on the order of editing (this is how vi
  119 	normally does it, and can be attained by turning "autobuffer"
  120 	off, with "set noautobuffer").
  121 
  122 	_	Show a list of the first 9 buffers.  Follow this command
  123 		with a digit to select that buffer, or simply repeat it
  124 		("__") to select the buffer most-recently visited.  In
  125 		autobuffer mode, this is identical to "_1".  If autobuffer
  126 		mode is off, the buffer which will be visited with "__" is
  127 		flagged with a '#' character in the list.  Modified buffers
  128 		are preceded by a '*' in the history list.  There are many
  129 		different ways to get the previous file:
  130 			__
  131 			_1	(autobuffer mode on)
  132 			1_	(    "       "     )
  133 			:e#
  134 			^^   (ctrl-^)  (but many keyboards can't produce this)
  135 
  136 		The buffer number may also precede the '_' command.  This is
  137 		necessary when visiting buffers numbered higher than '9'.  For
  138 		example, one would type "13_" to visit buffer 13 in the list.
  139 
  140 		Use tab (or back-tab if supported) to scroll the list of
  141 		9 buffers right/left.  Pressing '_' will select the first
  142 		listed buffer; the 1-9 digits also work as expected when the
  143 		list is scrolled.
  144 
  145 		[ See the note under "Differences", below, for comments on
  146 		vi's use of '_'.]
  147 
  148 	:e	Edit a file.  If the file is already in a buffer, that buffer
  149 		will be recalled into the current window.  This occurs as
  150 		follows: If the name given contains no path delimiters
  151 		(i.e. slashes), then it will be compared to the existing
  152 		vile buffer names.  Failing that comparison (or if there
  153 		are any slashes in the name), the name will be stretched
  154 		into an absolute path, and will be compared to the existing
  155 		buffers' filenames.  In either case, the matching buffer
  156 		will be chosen.  If there are no such matches, the file
  157 		will be fetched from the filesystem.  This matching
  158 		technique introduces an ambiguity, since buffer names are
  159 		created from the last path component of filenames.  To
  160 		force vile to edit a file from the current directory whose
  161 		basename matches that of one that was edited elsewhere,
  162 		simply preface the name with "./".  For example, if you
  163 		edit "../Makefile" and later attempt to edit "Makefile",
  164 		vile will assume you are referring to the _buffer_ named
  165 		"Makefile".  To get the file in the current directory,
  166 		specify "./Makefile".
  167 
  168 	:e!	Re-edit a file.  A different filename can be given, and the
  169 		buffer name will change to match it.  This command is not as
  170 		necessary in vile as it is in vi, since multiple buffers may
  171 		have outstanding unwritten changes.
  172 
  173 	^X-_	Identical to '_', except that the selected buffer is placed
  174 		in the current window (windows are described in the next
  175 		help topic).  This is most useful when:
  176 
  177 		- two windows show a different view of the same buffer
  178 		  (for illustration's sake, call the views "A" and "B").
  179 		- :e is used to open a new buffer (call this view "C"),
  180 		  which obscures "A".
  181 		- eventually, you decide to return to "A" and "B".
  182 
  183 		^X-_1 does the trick (reverts to views "A" and "B"), but _1
  184 		simply moves the cursor into B's window, retaining views
  185 		"C" and "B".
  186 
  187 	:n	Go to the next buffer.  "Next" means "least recently used"
  188 		in autobuffer mode.  In noautobuffer mode, "next" means
  189 		next in numeric sequence.  (The ":n file ..." version of
  190 		the command is not supported.)
  191 
  192 	:rename-buffer   Rename the current buffer.  Prompts for a new name.
  193 		Does not affect the filename associated with the buffer.
  194 		Use ":f" to do that.  This command is useful for renaming
  195 		the "[Output]" buffer, if you wish to preserve its
  196 		contents, but run a new command.
  197 
  198 	:set-window   Set the current window to the specified buffer.  This
  199 		is useful especially when you have split the screen into a
  200 		number of windows and want to override the automatic layout of
  201 		"#" and "%" buffers.
  202 
  203 	:rewind	Go to the first buffer.  This is used only in 'noautobuffer'
  204 		(vi-style buffering) mode.  It does nothing in "autobuffer"
  205 		mode.  Remember that "autobuffer" mode is the default.
  206 
  207 	:unmark-buffer	Clears the "modified" status of a buffer.  Useful
  208 		for the creation of temporary buffer(s) that are discarded
  209 		when the editor exits.
  210 
  211 	:b	Edit a buffer.  Recalls the named buffer.  Does not look for
  212 		a file of that name.  Will find "invisible" buffers.
  213 
  214 	:ki	Kill a buffer.  Remove the buffer and its contents from the
  215 		editor.  Will ask if changes to the buffer should be
  216 		discarded.  Multiple buffer names may be specified via
  217 		wildcards (e.g., :ki *.log) and individual buffer names
  218 		may be selected via name completion (using the same
  219 		conventions as in filename completion, described below).
  220 
  221 	^X-e	Edit the file whose pathname appears under the cursor.  For
  222 		example, if you are editing a makefile, you could edit one
  223 		of the source files by placing the cursor at the start of
  224 		its name and using this command.  Note that this does not
  225 		know about some characters that your shell might usually
  226 		translate for you, like the '$' in '$HOME'.
  227 
  228 	^X-k	Kill the buffer whose name or filename appears under the
  229 		cursor.
  230 
  231 	*	Display a list of all buffers, or make that display go away
  232 		if it's already present.  Leave your finger on the key, and
  233 		it's easy to create and destroy the list.  The buffers are
  234 		numbered; the numbers correspond to the history numbers
  235 		shown and used by the '_' command, described above.  (If
  236 		the buffer number is greater than 9, then the "nn_" form of
  237 		the '_' command must be used, since '_' will only accept a
  238 		single following digit.)  The order of the list is either
  239 		most-recently-used, or fixed, depending on the setting
  240 		of "autobuffer" mode (see below).  vile attempts to keep
  241 		the contents of the buffer list window up to date if it
  242 		is left up on the screen while other buffer manipulation
  243 		commands are given.
  244 
  245 	^A-*	Always display a list of all buffers.  Useful for updating the
  246 		list if it's already on the screen but may be out of date.
  247 		Any argument will cause the list to include _all_ buffers,
  248 		even those normally considered "invisible".  (For example,
  249 		macros are stored in "invisible" buffers.)  [This command
  250 		isn't as necessary now that the buffer list is maintained
  251 		dynamically...]
  252 
  253 
  254 
  255 Window manipulation commands
  256 ----------------------------
  257 	^X-2	Make Two windows.  Splits the current window in half. This
  258 		is the usual way to create a new window.
  259 	^K or ^X-0	Get rid of (Kill) this window.
  260 	^O or ^X-1	Make this the Only window on the screen.
  261 
  262 	^X-o	Move to the next window.
  263 	^X-O	Move to the previous window.
  264 
  265 	v	Make the current window smaller.
  266 	V	Make the current window larger.
  267 
  268 	^A-^D	Scroll the next window down half a screen.
  269 	^A-^U	Scroll the next window up half a screen.
  270 	^A-^E	Scroll the next window up one line.
  271 	^A-^Y	Scroll the next window down one line.
  272 	(The previous four commands are useful when comparing two buffers.
  273 	 Mnemonic -- think of them as affecting the "A"lternate window.)
  274 
  275 	zH zM zL
  276 	zt zm zb
  277 		These are synonyms for vi's 'z+', 'z.', and 'z-', which
  278 		position the line holding the cursor at the top, middle, or
  279 		bottom of the screen, respectively.  (Any of the second
  280 		characters can be upper or lower case.)  Mnemonically, these
  281 		correspond to the H, M, and L screen positioning commands,
  282 		or to "top", "middle", or "bottom" -- take your choice.
  283 		In a macro, only the first character of the argument is
  284 		significant, but something like "position-window middle" is
  285 		most readable.  Supplying a count will offset that far
  286 		from the top or bottom of window.  (But the middle is
  287 		always the middle.)
  288 
  289 	^X-^R	Scroll the window right or left by 1/3 of a screen, or by the
  290 	^X-^L	number of columns specified.  Changes the "sideways" value.
  291 		Neither of these commands will actually move the cursor
  292 		in the buffer -- they only reframe your view into the buffer.
  293 		If the cursor would be forced to move off-screen (which is
  294 		of course impossible and undesirable) as a result of the
  295 		requested sideways scroll, then nothing at all will happen.
  296 		The commands are arguably crippled as is.
  297 
  298 	If for some reason you can't get your screen set right via a
  299 	TERM variable, try the ":screen-rows" or ":screen-columns"
  300 	commands (which take their args (number of rows or columns
  301 	respectively) before you type the ":").
  302 
  303 	[ I put the following bindings in my startup file (.vilerc):
  304 	    bind-key split-current-window ^T	; split into 'T'wo windows
  305 	    bind-key next-window ^N		; 'N'ext window
  306 	    bind-key previous-window ^P		; 'P'revious window
  307 	Since ^K already 'K'ills a window, and ^O makes it the 'O'nly window,
  308 	these give more mnemonic, and faster, access to multiple windows.
  309 	(These would be the default, but ^N, ^P, and ^T have other meanings
  310 	in real vi (all of which have alternate bindings in vile.) ]
  311 
  312 
  313 
  314 File manipulation commands:
  315 ---------------------------
  316 	The usual ":e", ":r", ":f", ":w" commands are available, though
  317 	only ":e!" and ":w!" are available of the "!" options.  The command
  318 	":w >> filename" appends one file to another.  The ":r" command
  319 	reads the named file in after the current line.  To read a file
  320 	before the first line, use ":0r".  File completion works like
  321 	command completion:  using the TAB and '?' keys you can complete or
  322 	see next character choices.  Additionally, on unix hosts,
  323 	backquotes may be used to invoke a shell command that returns the
  324 	path of a desired file.  For example:
  325 
  326 		:e `which locks`       # csh looks for script called "locks"
  327 		:e `type -path locks`  # bash equivalent
  328 
  329 	The commands ":ww" and ":wwq" correspond roughly to ":w" and ":wq",
  330 	but they each write all modified buffers, rather than just the
  331 	current one.  Giving any numeric argument to ":ww" (i.e. "1:ww")
  332 	will suppress the per-file and "Press return to continue" message.
  333 	This may be useful when using the command from within a macro.
  334 
  335 	The write-all-buffers command attempts to write all buffers whether
  336 	marked "modified" or not.
  337 
  338 	As in vi, ranges of lines specified by line numbers (including '.',
  339 	'$', and '%' shorthands) or marks may precede these commands.
  340 	Unlike vi, search patterns cannot be used as line specifiers.
  341 
  342 	In addition, two non-"colon" commands have been added:
  343 
  344 	^R	Prompts for a filename, and then reads it in _above_ the
  345 		current line.  If a register is specified (e.g., "a^R ),
  346 		the file is read into that named register, but not inserted
  347 		into the current buffer.
  348 
  349 	^W	is a writing operator, which prompts for a filename, and
  350 		writes the specified region to that file.  Like all operators,
  351 		if the command is repeated, as in ^W^W, then lines are
  352 		affected.  Use 10^W^W to write 10 lines.
  353 
  354 		If a register is specified (e.g. "a^W ) then the command
  355 		is _not_ an operator, but writes the specified register to
  356 		the named file.
  357 
  358 
  359 
  360 Shell Access
  361 ------------
  362 	Anywhere a filename is valid, a command name is also
  363 	valid, entered in the form "!shell-command".  The whole line is
  364 	handed to the shell, and the read or write operation is done on
  365 	the commands standard input or output, as appropriate.  Thus
  366 	you can type ":e !date" to edit a copy of today's date.
  367 
  368 	The ": !cmd" shell escape works pretty much as it does in vi.
  369 	The command ":!!" will rerun the previous such shell command.
  370 
  371 	The '!' operator works as a filter, as expected.
  372 
  373 	In addition, the ^X-! command runs a shell command and captures
  374 	its output in a specific buffer, called "[Output]".  This is
  375 	almost identical to ":e !cmd", except that in that case the buffer
  376 	is named according to the command name.
  377 
  378 	These "output capture" commands are most useful in conjunction with
  379 	the "error finder", '^X-^X', described below.
  380 
  381 	Filename completion is performed on words of the shell command
  382 	in response to a TAB character.  To actually include a TAB character
  383 	in the shell command, escape it with ^V.  Command completion is
  384 	not currently implemented -- so, for instance, $PATH is not searched
  385 	for possible completions to the first word of a command line.
  386 
  387 	On systems supporting job control, ^Z (or ":stop") will suspend vile.
  388 
  389 	The "set-environment-variable" (or "setenv") command can be used to
  390 	export new or changed environment values to spawned programs.
  391 	(Note that this might or might not affect the operation of vile
  392 	features that are themselves controlled by environment variables,
  393 	since those variables may only be checked once at the time that
  394 	vile is started.)
  395 
  396 	The :cd and :pwd commands are of course supported.  Unlike vi,
  397 	filenames will track their directory of origin, so you can't simply
  398 	edit a file in one directory, cd to another, and write it.  You
  399 	must explicitly write to ./filename in the new directory to
  400 	accomplish this.  ":cd -" will return to the previous directory, as
  401 	it does in some shells.  The CDPATH environment variable provides a
  402 	search path for the :cd command.  This variable's path delimiters
  403 	are host-specific, as follows:
  404 
  405 		Unix                colon
  406 		DOS, OS/2, Win32    semicolon
  407 		VMS                 comma
  408 
  409 	Giving an argument to the ": !" (also called "shell-command" when
  410 	writing macros) will suppress the "Press return to continue" message
  411 	after the command runs.
  412 
  413 	Additional shell-related features are described in the section of
  414 	this help file entitled "Working in a project hierarchy".
  415 
  416 
  417 
  418 Text manipulation command:
  419 --------------------------
  420 	Remember, these are only the new or different commands.  The
  421 	standard vi set should still work.
  422 
  423 	The vi "global" (":g") command is present.  So is the "substitute"
  424 	(":s") command.  These both look pretty different while they're
  425 	being used than they do in vi, due to the interactive nature of
  426 	the prompting.  And, since the searching is done right after the
  427 	pattern is entered, there may be a slight delay while you're trying
  428 	to finish typing your complete command.  (If the pattern does not
  429 	exist, you may not get to finish typing your command at all.)  You
  430 	can use the commands just as you would have in vi, i.e.
  431 	":g/oldpat/s//newstring/" will work.  But you won't see any of the
  432 	'/' characters.  Try it-- you'll get the idea.  Line ranges are not
  433 	possible on ":g", but they are on ":s".
  434 
  435 	The ":g" command can be followed by any of l (list), p (print),
  436 	< (left shift), > (right shift), r (read file), d (delete),
  437 	L (lower case), U (upper case), ~ (flip case), put (append
  438 	yanked text), Put (prepend yanked text), s (substitute),
  439 	trim (trim trailing whitespace).  For example, ":g/pattern/Put"
  440 	will insert the contents of the default yank register just
  441 	above every line containing "pattern".   The ":g" command can
  442 	only be used over the entire file -- smaller regions are not
  443 	permitted.
  444 
  445 	The ":v" counterpart to ":g" is also implemented -- it performs the
  446 	given command on all lines that don't match the given pattern.
  447 
  448 	The substitute command can be followed by any of 'g', a digit, or
  449 	'p', to do the substitution for all occurrences, the n'th
  450 	occurrence, or to print the resulting line respectively.  You can
  451 	also add a 'c', and you will be asked to confirm each replacement
  452 	before it occurs.  The text being replaced will be highlighted,
  453 	and you can answer with 'y', 'n', 'q', or 'a'.  'a' will suppress
  454 	further prompting, and will do the rest of the replacements.
  455 
  456 	The ":&" and '&' commands work much as they do in vi, and repeat
  457 	the last substitution.  The '^A-&' command is a new operator (see
  458 	below), so it can work on regions: for example use '^A-&}' to
  459 	"repeat the previous substitution over the rest of this paragraph".
  460 
  461 	The named marks such as "'a" work as they do in vi.  vile allows
  462 	a decimal digit as a mark.  It also recognizes special marks for
  463 	the beginning and end of a selection: '< for the beginning and
  464 	'> for the end (see the discussion of the quoted motion command).
  465 
  466 	Infinite Undo
  467 	--------------
  468 	The regular undo ('u') and line-undo ('U') are available for all
  469 	commands.  They are a little more predictable than their vi
  470 	counterparts, since they do not share the default yank register for
  471 	their operation.  Also, line-undo ('U') is available until the next
  472 	change anywhere in the file, rather than until you leave the line.
  473 
  474 	vile also lets you undo all changes made to a buffer since it was
  475 	first edited (so-called "infinite undo").  The '^X-u' command will
  476 	undo changes, one by one (or given a count, several at a time).
  477 	The '^X-r' command will walk forward, redoing the previously undone
  478 	changes one by one.  A fresh change to the buffer will cause
  479 	previously undone changes to no longer be redoable.  Remember that
  480 	with key rebinding, you can change your 'u' or 'U' command to be an
  481 	infinite undo, making it easier to type.
  482 
  483 	In addition, the '.' command, which normally re-executes the last
  484 	buffer-modifying command, has special behavior with respect to
  485 	undo.  If the '.' command immediately follows one of the undo
  486 	commands ('u', '^X-u', or '^X-r'), then it will perform another
  487 	undo or redo, as appropriate.  If there are any intervening commands,
  488 	then '.' will re-execute the last command prior to the undo.  [ This
  489 	modification to the behavior of "u." does not conflict (much) with
  490 	traditional use of '.', since by definition, the sequence "u." is
  491 	(almost) always identical to "uu", and the latter is more easily
  492 	typed.  (Credit goes to the designers of "nvi" for this trick.)
  493 	(BTW, the one case i know of where "u." is not identical to "uu" is
  494 	when putting back the contents of the numbered registers:  the
  495 	sequence "1pu.u.u.u. would successively insert the contents of "1,
  496 	"2, "3, "4, and "5, allowing you to choose the "correct" register.
  497 	This sequence no longer works.  You can still put them _all_ back
  498 	with "1p..... ("1p for screen) and then delete the ones you _don't_
  499 	want. ]
  500 
  501 	The number of changes stored in the undo "history" is controlled by
  502 	the numeric mode "undolimit".  The default history length is 10 --
  503 	that is, only 10 changes may be undone.  Set the undolimit to 0 for
  504 	truly infinite undo.  This can consume a lot of memory.  You can turn
  505 	it completely off (and purge the undo stack) by setting noundoable.
  506 
  507 	The cursor position after an undo may not always be the same as it
  508 	would be in vi.
  509 
  510 	Operators
  511 	---------
  512 	vi has a class of commands known as "operators".  Operator commands
  513 	are always immediately followed by a motion command.  The region of
  514 	text affected by an operator is bounded on one end by the initial
  515 	position of the cursor, and on the other by the cursor position
  516 	after the motion is completed.  Thus the delete operator ('d') can
  517 	be followed by the word motion command ('w'), causing the next word
  518 	to be deleted.  The sequence "dG" will delete from the cursor
  519 	through the end of the file, and "d/junk" will delete to the next
  520 	occurrence of the string "junk".  As a special "honorary" type of
  521 	motion, operators can all be "stuttered" to affect lines.  Thus
  522 	"dd" deletes one line, "4dd" affects 4 lines, etc.
  523 
  524 	Most operators affect the region exactly, but some cause only whole
  525 	lines to be affected.  This is usually a function of what sort of
  526 	motion follows the operator, but can sometimes be affected by the
  527 	operator itself.  The best example of motions having different
  528 	effects is the 'goto-mark' motions, the ''' and '`' commands.  If a
  529 	mark is set, say mark 'a', with the 'ma' command, then if the
  530 	command d`a is executed, the exact text between the cursor and the
  531 	mark will be deleted.  If, on the other hand, the d'a command is
  532 	used, the deleted region will include the lines containing the
  533 	cursor and the mark in their entirety.
  534 
  535 	Some operators in vile can be "forced" to affect regions of whole
  536 	lines, though the motion wouldn't normally imply it, by using the
  537 	'^X' form of the command.  (It's not really forced -- it's really
  538 	a separate operator.)  For example, "d%" (assuming you are on a
  539 	curly brace) will delete a C-style block of code.  "^X-d%" will
  540 	delete that same area, plus anything else on the lines containing
  541 	the curly-brace endpoints.
  542 
  543 	Note that some operators always affect whole lines, no matter
  544 	how the motion is specified.  The '!' operator is an example:
  545 	"!w" will always filter an entire line, and not just a single word.
  546 
  547 	vile extends this notion of the "shape" of a region by adding
  548 	the concept of rectangular regions, whose boundaries are
  549 	delimited by the rectangle whose opposite corners are at the
  550 	cursor and at the other end of the motion, respectively.  See
  551 	the section "Rectangular regions" below.
  552 
  553 	The "show-operators" command will show all available operators.
  554 	The "show-motions" command will show all available motions.
  555 	Any operator may be followed by any motion.
  556 
  557 	There are several new operator commands in vile:
  558 
  559 	^A-~	Is the operator form of the '~' command, so "^A-~~"
  560 		changes the case of all characters on the current
  561 		line, "^A-~w" does it to a word, "3^A-~}" does it for
  562 		3 paragraphs, etc.  (In vile, the simple '~' command
  563 		will take a repeat count, unlike some versions of vi.
  564 		If you wish it to be an operator, rebind '~' to the
  565 		"flip-til" command.)
  566 	^A-u	Like ^A-~, but converts the region to upper case.
  567 	^A-l	Like ^A-~, but converts the region to lower case.
  568 
  569 	^A-f	Format the region based on the current fill column.  The
  570 		initial indentation of both the first and second lines of
  571 		each "paragraph" in the region are preserved, and all
  572 		subsequent lines get the second line's indentation.  This
  573 		makes indented/outdented paragraphs (like this one) work
  574 		correctly.  (This is intentionally _not_ the same behavior
  575 		obtained by using "!fmt", since that behavior is obviously
  576 		available elsewhere.)  The usual usage of this command is
  577 		"^A-f}", which reformats the current paragraph.  The
  578 		re-formatting begins again with each new paragraph, where a
  579 		paragraph has the same boundaries used by the '{' and '}'
  580 		commands -- i.e. blank lines, or lines beginning in .I .L
  581 		.P .Q or .b.  This makes it possible to use "3^A-f}" or
  582 		"^A-fG" to reformat multiple paragraphs.  The reformatting
  583 		operation knows a little about both C, C++, and shell
  584 		comments, and will attempt to do the "right" thing with
  585 		lines that start with '#' or '*' characters.  (It also knows
  586 		about the '>' character, making it fairly easy to reformat
  587 		mail and news inclusions...  but is it ethical?  :-)
  588 
  589 	^X-s	For every occurrence of a search string, put in a replace-
  590 		ment string.  This is similar to "s/pattern/replacement/g"
  591 		over the region.
  592 
  593 	^A-&	Is an operator in vile, similar to the traditional & command.
  594 		It repeats the last substitution over the specified region.
  595 		(Unlike the '&' command, this one will remember trailing
  596 		g, p, l, or numeric options.)
  597 
  598 	^X-d	Delete the region, including the lines it starts and ends on.
  599 	^X-c	Change the region, including the lines it starts and ends on.
  600 	^X-y	Yank the region, including the lines it starts and ends on.
  601 
  602 	^A-t	Trim trailing whitespace from all lines in the region.
  603 
  604 	^A-<SPACE> Convert tabs to spaces, using the current tabstop value.
  605 	^A-<TAB>   Convert as many spaces to tabs as appropriate.
  606 
  607 	^A-b	Blank out a region.  Turns the region to whitespace.  Useful
  608 		with rectangular regions.
  609 	^A-r	Open up a rectangle.  Text to the right of the left edge
  610 		of the rectangular region will shift to the right by the
  611 		width of the rectangle, leaving a whitespace "hole".
  612 	^A-q	Sweep out a rectangle with multiple motion commands.  See
  613 		description of 'q', below.
  614 
  615 	^A-s	Select and yank a region.  The region will be highlighted
  616 		on the screen, as if it had been swept by a mouse.  It
  617 		is also yanked, as with the 'y' operator.  This operator
  618 		is useful in combination with the ^S motion command, which
  619 		lets one reference the selected region with other operators.
  620 		(If you use this command much, it is recommended that you
  621 		bind it to and easier to type sequence, such as 'S'.)
  622 		See also the q (quoted motion) command.
  623 
  624 	Text insertion
  625 	--------------
  626 	^X-p	Causes the previously yanked or deleted text, no matter
  627 		how it was obtained, to be inserted after the current line.
  628 		Usually text that did not consist of whole lines where it
  629 		came from is inserted immediately following the cursor.
  630 	^X-P	As above, but the text is put before the current line.
  631 		Thus "dw" followed by a "p" command does a normal insertion
  632 		of the deleted word, whereas "^X-p" results in the word
  633 		being inserted on a line by itself.
  634 
  635 	R	vi's overwrite mode is supported.  Note that the combination
  636 		of overwrite mode and the (ANSI) arrow keys can be used to
  637 		give a "picture drawing" mode of operation: anything you
  638 		type goes into the buffer without moving adjacent text, and
  639 		you can move around using the arrow keys without leaving
  640 		overwrite mode.  Hint: start with a buffer full of lines
  641 		that consist entirely of blanks (as opposed to blank
  642 		lines).
  643 
  644 	^A-i	Like their 'i', 'o', and 'O' counterparts, but any autoindent
  645 	^A-o    or cmode setting is ignored for the duration of this insert.
  646 	^A-O	These are most useful when pre-formatted text is being
  647 		pasted, as when using a mouse.
  648 
  649 	Searching
  650 	---------
  651 	^X-/	Does a forward search for the "word" located under the
  652 		cursor.
  653 	^X-?	Does a reverse search for the "word" located under the
  654 		cursor.
  655 	^A-/	Does not do a search, but sets the search pattern to the
  656 		"word" under the cursor.  Useful for "picking up" a word
  657 		from one buffer, and searching for it in another.
  658 
  659 	The following two commands may not always be present in vile,
  660 		depending on how it was built:
  661 	^X-S	Incremental forward searching.  As you enter the search
  662 		string, the cursor is advanced to the next match with
  663 		what you've typed so far.  Use ^F and ^R to continue the
  664 		search forward or in reverse, using the current pattern.
  665 	^X-R	As above, but in reverse.
  666 
  667 	Tags
  668 	----
  669 	vile supports vi-style "tags" files.
  670 
  671 	":ta" or ":tag" allows you to enter a tagname to locate.  The editor
  672 		opens a buffer containing the requested tag.  Take note
  673 		that tag completion is supported, so it's possible to type a
  674 		partial tagname and then press TAB to force vile to
  675 		complete the name, assuming it's unique.  If not unique,
  676 		press TAB twice to see a list of all possible completions.
  677 		Example (using the vile sources):
  678 
  679 			:ta is_sl<TAB>
  680 
  681 		is completed as "is_slashc" .  Pressing RETURN following
  682 		completion opens a buffer on estruct.h, with the cursor
  683 		positioned at the first definition of this tagname.
  684 
  685 	^]	Uses the identifier currently under the cursor as the
  686 		tagname.
  687 
  688 	^T or ^X-^] or ":pop" - pops to the file and location just previous
  689 		to the last tag command.
  690 
  691 	^A-^] or ":next-tag" continues searching through the tags file(s)
  692 		for additional matches.
  693 
  694 	When one of these commands is used, vile will (by default) look for
  695 	a file named "tags" in the current directory, and load it into a
  696 	hidden buffer for use during tag searches.  This buffer is editable
  697 	if you wish (":e tags"), but will not appear in the buffer lists.
  698 	If a buffer named "[Tags 1]" is already available when a tag is
  699 	first requested, it will be used instead of a file found by
  700 	searching the tags setting, and of course will remain visible.
  701 
  702 	Take note that the tag locate and pop commands, by default, move
  703 	the cursor out of the current window if the target tag is located
  704 	in one of the editor's other windows.  To "pin" all locate and pop
  705 	actions to the current window, set pin-tagstack mode.
  706 
  707 	The name of the default tags file may be changed with "set tags"
  708 	(see "tags" under "Editor modes", below).  If multiple filenames
  709 	are given in the "tags" setting (separated by whitespace), they are
  710 	searched in order, and placed in buffers named "[Tags 1]", "[Tags 2]",
  711 	"[Tags 3]", etc.
  712 
  713 	Tags searched for using '^]' will always be matched exactly.
  714 	If the ":ta" form of the command is used, tag matches will be
  715 	exact unless the mode "taglength" is set non-zero, in which case
  716 	the first tag matching that many characters will be used.
  717 
  718 	Filenames referred to in tags files are expanded, so environment
  719 	variables and shell special characters like ~ may be used.
  720 
  721 	The stack of buffer locations waiting to be "popped" to with the
  722 	'^T' (or '^X-^]' or ":pop") command may be viewed with the
  723 	"show-tagstack" command.  The "[Tag Stack]" buffer is animated --
  724 	it will dynamically keep track of current tag references.
  725 
  726 	Limitations:  In a real vi-style tags file, there are three tab
  727 	    separated fields.  The first contains the tagname.  The second
  728 	    contains the (relative or absolute) filename.  Everything after
  729 	    the second tab is an arbitrary ex-mode command.  vile is not
  730 	    quite so flexible as regular vi, and only supports a couple of
  731 	    commands in that last "field".  It can be a line number, in
  732 	    which case the tag is an absolute index into the file.  Or, it
  733 	    can be a search command.  If it begins with a '/', the search
  734 	    goes forward.  If it begins with a '?', the search goes
  735 	    backward.  In either case, the matching delimiter _must_ be the
  736 	    last character on the line in the tags file.
  737 
  738 	    All of this isn't as bad as it sounds, since ctags, the program
  739 	    most people use to generate tags files, does generate exactly
  740 	    this format.  (Surprise, surprise.)  However, if you attempt
  741 	    to create your own tags files, or have other tools that do so,
  742 	    you should be aware of these limitations.
  743 
  744 	For further tags usage examples, refer to the section of this help
  745 	file entitled "Working in a project hierarchy".
  746 
  747 
  748 
  749 Miscellaneous commands
  750 ----------------------
  751 	^A-d	Remove blank lines ("deblank").  If the cursor is on a blank
  752 		line, then it and any blank lines surrounding it will be
  753 		removed.  If a non-blank line, then any immediately following
  754 		blank lines will be removed.  If given an argument, will force
  755 		exactly that many blank lines to exist at that point,
  756 		regardless of how many were there before.  Moves current
  757 		location forward, to allow repeated use.
  758 
  759 	^X-^X	The "error finder".  Goes to the next file/line error pair
  760 		specified in the last buffer captured from a command's
  761 		output.  This buffer is usually created with the ^X-!
  762 		command.  For example, "^X-!cc -c junk.c" puts all of the
  763 		compiler output into the buffer named "[Output]".
  764 		Repeatedly hitting ^X-^X will position the editor at each
  765 		error in turn, and will eventually start over again at the
  766 		top.  The buffer searched for "errors" will be the last
  767 		shell command run, or the buffer named with the "error-
  768 		buffer" command.  The "Entering directory XXX" and "Leaving
  769 		directory XXX" messages that GNU make puts out with the -w
  770 		switch are honored, so that files are found with the
  771 		correct path.  Tip: I use the following macro to quickly
  772 		grep a source directory for the string under the cursor:
  773 		    use-register g load-register "^X!egrep -n : *.[chs]^M"
  774 		where the ^X and ^M are each single control characters,
  775 		entered using ^V to escape them.  Then I invoke with @g to
  776 		execute.  [NB:  this macro won't work with the DOS/VMS/Win32
  777 		versions of vile, since ':' doesn't expand to the word
  778 		under the cursor on those hosts due to conflicts with
  779 		filename drive/disk delimiters.  For those hosts,
  780 		substitute '&' instead.]
  781 
  782 		The command parsing is done with regular expressions.  Vile
  783 		compiles these from the buffer [Error Expressions], which are a
  784 		set of regular expressions with extra embedded information.
  785 		Unescaped '%' followed by 'V', 'B', 'F', 'L', 'C' or 'T'
  786 		substitute verb (Entering/Leaving for gmake), buffer (i.e.,
  787 		scratch buffer with a bracketed name), file, line, column and
  788 		text fields.
  789 
  790 		The line and column numbers are 1-based, treating tab character
  791 		as a single column.  Use %l and %c, respectively for 0-based
  792 		values.
  793 
  794 		The V, B, F, T substitutions are for nonblank fields, which is
  795 		not always enough, so vile additionally recognizes a range in
  796 		brackets, e.g.,
  797 
  798 			^%[^: 	]:\s*%L:%T
  799 
  800 		is compiled as
  801 
  802 			^\([^: 	]\+\):\s*\([0-9]\+\):\(.\+\)
  803 
  804 		; example of a macro to add to [Error Expressions]
  805 		store-procedure AddError
  806 			~local %oldbuffer
  807 			setv %oldbuffer=$cbufname
  808 			compile-error-expressions
  809 			yank-line
  810 			edit-file '[Error Expressions]'
  811 			unsetl view
  812 			goto-beginning-of-file
  813 			put-before
  814 			unmark
  815 			setl view
  816 			buffer %oldbuffer
  817 			compile-error-expressions
  818 		~endm
  819 
  820 		Use the show-error-expressions command to display the contents
  821 		of the [Error Expressions] buffer, along with the expanded
  822 		regular expression and annotation for the substitutions.
  823 		The result is shown in [Error Patterns].
  824 
  825 	^X-t	Set or report on the tab-stop width.  To set, the spacing must
  826 		precede the command, as in "4^X-t".  The "set tabstop"
  827 		command described below does the same thing.  The status
  828 		output indicates whether the buffer is currently using the
  829 		local or global copy of the tabstop value.
  830 
  831 	^X-f	Set the local fill-column to be used with ^A-f and auto-wrap
  832 		mode on insert.  The default value is 7/8's of the screen
  833 		size, with a maximum of 70.  Since arguments come before
  834 		commands, you type: 65^X-f.  The "set fillcol" command does
  835 		the same thing.  The status output indicates whether the
  836 		buffer is currently using the local or global copy of the
  837 		tabstop value.
  838 
  839 	^X-X    Set current encryption key for this buffer.  See "Encryption"
  840 		below for more information.
  841 
  842 	K	Count prefix.  The first time you type it, it is equivalent
  843 		to an argument of 4 to the following command.  If you repeat
  844 		it, it becomes worth 16, the next time 64, etc...
  845 
  846 	%	In addition to finding matching braces, brackets, and
  847 		parentheses, the '%' command will find matching #if's,
  848 		#ifdef's and C-style comments.  If the cursor is on the #
  849 		of "#ifdef"/"#if", the '%' command will find the matching
  850 		"#endif" or "#else".  On an "#else" it will find "#endif",
  851 		and on "#endif" it will go back up to the "#ifdef"/"#if".
  852 		If the cursor is on any part of a "/*" or "*/" sequence, it
  853 		will find the appropriate corresponding C comment endpoint.
  854 		(See fence-if, fence-pairs to customize this behavior).
  855 
  856 	\	Identical to the ` motion, in that the cursor moves to
  857 		the specified mark (i.e. \a moves to mark 'a').  When
  858 		used with an operator command, the resulting region is
  859 		rectangular instead of "exact".  This is similar to
  860 		the ' motion, which also goes to [the line holding] the
  861 		mark, and causes regions to become "full line" regions.
  862 
  863 	q	A "quoted motion" command.  After entering 'q', more motion
  864 		commands are accepted until another 'q' is entered.  The
  865 		result of the motion is the cumulative effect of all the
  866 		entered motions.  Thus, one might type:
  867 			dq<arrow><arrow><arrow>...<arrow>q
  868 		to delete all of the text between the starting point
  869 		and the final cursor position.
  870 
  871 		Any motion command can appear in between the two 'q'
  872 		commands.  If used alone, i.e., not in an operator context,
  873 		then the spanned text is highlighted, and yanked on
  874 		completion (as well as setting the special named marks '<
  875 		and '>) as a side effect.  The resulting selection can then
  876 		be manipulated with the ^S pseudo-motion, below.  The
  877 		selection-clear command removes the selection's highlight
  878 		attributes.
  879 
  880 		Most motions will select up to but not including their
  881 		endpoint.  The 'e', 'E', 'f', 't', and '%' commands are
  882 		exceptions to this.  If used in an operator context the
  883 		cursor position may sometimes appear incorrect.  This
  884 		is because operators sometimes change the cursor location
  885 		internally to force the motion to do the "right" thing,
  886 		and the 'q' command makes these internal "fudge factors"
  887 		visible.  An example of this is "dq%q" which does the
  888 		right thing (assuming the cursor is on a '(' to start)
  889 		but which looks wrong, since the cursor will overshoot
  890 		the ')' before the second 'q' is typed.
  891 
  892 		If a mouse is available on a Unix host, whether in an xterm
  893 		via the "xterm-mouse" setting, or in xvile, then button 1
  894 		can be clicked to do the extensions, since it, too, is a
  895 		motion command.  (Of course in xvile or winvile, it is
  896 		easier to simply "click and drag" -- the 'q' command isn't
  897 		really necessary at all.)
  898 
  899 		Use the repeat-count to specify types of selection: exact=1
  900 		(default), full-line=2, rectangle=3.
  901 
  902 	^A-q	As above, but the motions will sweep out rectangular regions.
  903 
  904 	^S	A motion, or "pseudo-motion" command.  If a region of
  905 		text has been previously selected, either with the mouse
  906 		(if available) or with the keyboard selection operator
  907 		(^A-s) it can be referenced by any other operator by
  908 		applying that operator to the ^S motion.  As an example,
  909 		suppose a word is selected with the mouse, or with ^A-sw.
  910 		Then, from anywhere in that buffer, one can use d^S to
  911 		delete that word.  ^S used by itself will move the cursor
  912 		to the start of the selected region.  ^S applied to
  913 		the selection operator (^A-s) will extend the current
  914 		selection to include the current location of the cursor.
  915 
  916 		^S makes it possible to select any region (including
  917 		rectangular regions) of text with a mouse, and then apply
  918 		any vi operator to that region.
  919 
  920 	=	If "visual-matches" is set, then vile will highlight all
  921 		occurrences of a pattern that is searched for with one of
  922 		the usual searching commands.  The '=' command will clear
  923 		this highlighting, until the next search for a different
  924 		pattern.
  925 
  926 	select-all
  927 		On hosts where vile provides mouse support, the select-all
  928 		command selects, highlights, and yanks all text in the
  929 		current buffer to the unnamed register.  Clear the
  930 		selection's highlight attributes as follows:
  931 
  932 		Technique			  Applies To
  933 		---------			  ----------
  934 		selection-clear command		  any host
  935 		left mouse button (LMB) click	  winvile
  936 		click mode line with LMB	  win32 host
  937 		press ESC			  winvile
  938 
  939 
  940 	vile can display more of its internal "state" than traditional vi.
  941 	Portions of the internal "state" may be viewed using various
  942 	"show-xxx" commands:
  943 
  944 	show-abbreviations -- displays list of shortcuts defined with the
  945 		":abbr" command.  (synonymous with ":abbr<CR>")
  946 
  947 	show-buffers -- displays the current list of available buffers.  Given
  948 		any numeric argument, will list _all_ buffers, even those
  949 		normally invisible or considered temporary.
  950 
  951 	show-color-schemes -- displays a color chart of the user-definable
  952 		color schemes (see palettes.rc for examples)
  953 
  954 	show-colors -- displays a color chart of the builtin color names, the
  955 		internal coding used in the syntax filters (e.g., C0), the
  956 		$palette mapping and examples in bold, italic, etc.
  957 
  958 	show-commands or show-bindings -- displays the list of commands
  959 		and the keys bound to them.
  960 
  961 	show-global-modes, show-modes -- both synonymous with ":set<CR>"
  962 
  963 	show-help -- synonymous with ":help", '^A-h', etc.
  964 
  965 	show-history -- displays the user's command line history.
  966 
  967 	show-majormodes -- displays the builtin and user-defined major modes.
  968 
  969 	show-mapped-chars -- displays the strings mapped for command mode
  970 		with ":map".  (synonymous with ":map<CR>")
  971 
  972 	show-mapped!-chars -- displays the strings mapped for insert mode
  973 		with ":map!".  (synonymous with ":map!<CR>")
  974 
  975 	show-printable -- displays a table of the printable characters,
  976 		with associated types.  To allow it to fit within 80 columns,
  977 		abbreviations are used, which are the same names as used in
  978 		character classes.
  979 
  980 	show-registers -- displays the current contents of the named and
  981 		numbered registers.
  982 
  983 	show-system-mapped-chars -- displays the strings mapped to
  984 		represent the terminal's function keys.
  985 
  986 	show-tagstack -- displays the contents of the "tags stack", the
  987 		list of locations from which the ":ta" or '^]' commands have
  988 		been used, and to which the ":pop" and '^T' (or '^X-^]')
  989 		commands will return.
  990 
  991 	show-terminal-chars -- displays the list of special chars normally
  992 		associated with the TTY driver, i.e. backspace, interrupt,
  993 		suspend, etc.
  994 
  995 	show-variables -- displays the list of vile state $variables and
  996 		temporary %variables, and their values.
  997 
  998 
  999 
 1000 New Registers
 1001 -------------
 1002 	In addition to the usual "a through "z, and "1 through "9, vile
 1003 	has additional registers.
 1004 
 1005 	The register named '<' contains the last few hundred keystrokes
 1006 	that have been typed by the user.  The principle use for this
 1007 	is to make it easier to create :map commands based on commands
 1008 	you've already given.  [It's also useful sometimes when debugging
 1009 	to be able to see what key sequence led to a problem...]
 1010 
 1011 	The register name '.' contains the current selected text in xvile.
 1012 	Also in xvile, the register name ';' is a synonym for the clipboard.
 1013 	Other versions of vile permit use of '.' and ';' as supplemental
 1014 	register storage.
 1015 
 1016 	The register name '"' (" is double-quote) is a synonym for the default
 1017 	unnamed register, which is also sometimes referred to as register 0.
 1018 
 1019 
 1020 
 1021 Completion
 1022 ----------
 1023 	Many responses to vile prompts need not be typed in their entirety.
 1024 	vile can complete the response for you.  This applies to command
 1025 	names, file names, vile modes, vile variables, tags, buffers, and
 1026 	the "terminal characters".
 1027 
 1028 	To invoke vile completion, type a few characters and hit TAB (or
 1029 	your current "name-complete" terminal character).  Hitting it a
 1030 	second time will pop up a window containing the list of possible
 1031 	completions.  If there are more completions than will fit in the
 1032 	window, hitting further TAB characters will cause that window
 1033 	to scroll through the choices.  The window will go away when the
 1034 	current command is finished.
 1035 
 1036 	An older form of completion is also supported:
 1037 	    You can also type a question mark (or the current "test-
 1038 	    completions" terminal character) to display a list of the
 1039 	    characters that you would have to type to complete the command.
 1040 	    For example, to complete the "unmark" or "unmap" commands:
 1041 		:unm?			-- you type
 1042 		:unm{a}[pr]		-- you see
 1043 	    This style of completion-display shows curly braces around the
 1044 	    string that will be supplied by pressing TAB, and square
 1045 	    brackets around characters that you must type to make the
 1046 	    command unique.
 1047 
 1048 
 1049 
 1050 Arrow keys
 1051 ----------
 1052 	vile will understand your terminal's arrow keys, as long as they
 1053 	are described correctly in the termcap/terminfo database.
 1054 	The keys are interpreted as function keys, and are by default bound
 1055 	to the up, down, left, and right screen motions.  These bindings
 1056 	are honored in insert mode as well as command mode.
 1057 
 1058 
 1059 
 1060 Rectangular regions
 1061 -------------------
 1062 	Just as the regions defined by vi's commands and motions can either
 1063 	be "exact", or encompass "full lines", regions in vile can in
 1064 	addition be "rectangular".  The easiest way to use a rectangular
 1065 	region is with the '\' motion, which, like '`' and ''', goes to a
 1066 	named mark.  The region it describes, however, is "rectangular"
 1067 	(instead of "exact" or "full line").  The following operators know
 1068 	how to correctly act on rectangular regions:
 1069 
 1070 	^A-r	Opens up a rectangle.  Text to the right of the left
 1071 		edge of the rectangle is shifted right by the width of
 1072 		the rectangle.
 1073 	>	Shift right.  Identical to '^A-r' when region is rectangular.
 1074 	d	Deletes the (rectangular) region.  Text to the right moves
 1075 		left to fill the rectangle.
 1076 	<	Shift left.  Identical to 'd' when region is rectangular.
 1077 	y	Yanks the (rectangular) region.  (vile remembers that the
 1078 		yanked text is rectangular in shape.
 1079 	c	Change the region.  If the region is _not_ rectangular,
 1080 		insert mode is entered after the region is deleted.  If
 1081 		the region _is_ rectangular, the user is prompted for
 1082 		text with which the lines of the rectangle will be filled.
 1083 	^A-u ^A-l ^A-~ ^A-b	These four operators perform their character
 1084 		transformations on rectangular regions, as well as exact or
 1085 		full-line regions. (uppercase, lowercase, flip-case, and
 1086 		blank, respectively)
 1087 
 1088 	p P	The 'put'ting commands know whether the text being 'put' was
 1089 		originally rectangular, and will do a rectangular insert
 1090 		of the text, in front of or behind the cursor.  The
 1091 		cursor position defines the upper left corner of the
 1092 		insertion.
 1093 	^A-p	These two forms of the put command force the text being
 1094 	^A-P	'put' to be inserted as if it had been rectangular when
 1095 		originally yanked or deleted.  The width of the rectangle
 1096 		is the length of the longest line in register being 'put'.
 1097 
 1098 	Note that because it is sometimes hard to manipulate rectangles
 1099 	containing or bordering on tab characters, currently (for some
 1100 	operations) vile "detabs" the region being operated on before
 1101 	commencing, and re-entabs the lines again after the operation.  The
 1102 	re-entabing is limited to leading whitespace, and of course is
 1103 	suppressed if "notabinsert" mode is set.  [ This misfeature is
 1104 	arguably a bug, and may be fixed.  In the meantime, you've been
 1105 	warned. ]
 1106 
 1107 
 1108 
 1109 Editor modes
 1110 ------------
 1111 	Modes come in various flavors and types and constitute the editor's
 1112 	primary configuration mechanism.  vile supports these mode types:
 1113 
 1114 	    boolean enum int string
 1115 
 1116 	The value of a mode is specified via "set" or "setl" (the latter
 1117 	command _only_ affects buffer modes, as described below).  Mode
 1118 	values may be cleared with "unset" (or "unsetl" for buffer modes),
 1119 	as well as other idioms described later.  Clearing a mode, by the
 1120 	way, is a fancy way of saying that its value is set to 0 or "", the
 1121 	latter for string types.  When an enum mode is cleared, vile
 1122 	selects whichever enum constant is assigned the internal (read
 1123 	compiled) value of 0.  Some concrete examples:
 1124 
 1125 	    mode type   mode name        example usage
 1126 	    ---------   ---------        ---------------
 1127 	    boolean     autoindent       set autoindent
 1128 	    enum        visual-matches   set visual-matches=reverse
 1129 	    int         fillcol          set fillcol=75
 1130 	    string      tags             set tags="../tags tags"
 1131 
 1132 	Flavor: universal modes
 1133 	-----------------------
 1134 	These modes are not directly associated with buffers, windows, or
 1135 	languages.  Consequently, a universal mode affects the editor under
 1136 	all relevant operating conditions.
 1137 
 1138 	To set/modify a universal mode, use the "set" command.  Startup file
 1139 	examples:
 1140 
 1141 	    set vtflash=normal
 1142 	    unset flash           ; or    set noflash
 1143 	    set errorbells
 1144 
 1145 	Since the set command (within a startup file) accepts multiple modes,
 1146 	this oneliner is equivalent:
 1147 
 1148 	    set vtflash=normal noflash errorbells
 1149 
 1150 	To clear a universal mode use one of these idioms:
 1151 
 1152 	    set    no<modename>
 1153 	    unset  <modename>
 1154 	    setno  <modename>
 1155 
 1156 	For completeness sake, note that the "local" version of the
 1157 	set/unset commands ("setl"/"unsetl") do not make sense (and elicit
 1158 	no effect) when used with universal modes.
 1159 
 1160 	Flavor: buffer modes
 1161 	--------------------
 1162 	These modes are inherited from a set of "global" buffer modes, but
 1163 	bound to a specific buffer once a "local" value is independently
 1164 	established.  To set and reset local modes, use "setl", "unsetl",
 1165 	or "setlno".  An actual example is useful for illustration purposes.
 1166 
 1167 	When vile is started, the global value of "view" mode is unset by
 1168 	default (i.e., false) and all newly visited buffers are editable.
 1169 	But suppose I edited the file "precious.cpp", which I did not want
 1170 	to modify.  There are two approaches that could be taken:
 1171 
 1172 	$ vile
 1173 	:set view          ; enable view mode globally
 1174 	:e precious.cpp    ; edited in "view" mode
 1175 	:e other.cpp       ; ditto
 1176 
 1177 			or
 1178 
 1179 	$ vile
 1180 	:e precious.cpp    ; initially edited in "noview" mode
 1181 	:setl view         ; "view" mode now bound to precious.cpp
 1182 	:e other.cpp       ; edited in "noview" mode
 1183 
 1184 	In the first approach, view mode is enabled globally and consequently
 1185 	affects all existing buffers and all subsequently created buffers.
 1186 	This solution works for the stated goal, but makes it impossible to
 1187 	modify any other buffers.  The second approach affects only the
 1188 	targeted file.
 1189 
 1190 	Flavor: window modes
 1191 	--------------------
 1192 	Similar to buffer modes, window modes are bound to a specific
 1193 	window once a local value is independently established.  These
 1194 	modes are set/cleared with the same commands as buffer modes.
 1195 
 1196 	Flavor: majormodes (later)
 1197 	--------------------------
 1198 	Until the subject of syntax coloring is described, it's not very
 1199 	useful to discuss majormodes.  So, in the listing of modes below,
 1200 	skip over anything tagged with (M).  But don't fret, these modes
 1201 	are described separately in the topic entitled "Majormodes".
 1202 
 1203 	Current mode settings
 1204 	---------------------
 1205 	To display modes, use "setall", "modes", or "set all".  Local
 1206 	mode values are only shown if they differ from the global values,
 1207 	whether they have been independently set or not.
 1208 
 1209 	Modes in detail
 1210 	---------------
 1211 	Shown next is a listing of vile's various modes.  Synonyms, if they
 1212 	exist, are shown in parentheses and a trailing U, B, W, or M
 1213 	indicates whether the mode is universal, buffer, window or major.
 1214 
 1215 	alt-tabpos (atp) If set, vile will position the cursor over tab and
 1216 		control characters the way emacs would, that is, at the
 1217 		start of a tab or control character display sequence.  If
 1218 		turned off (the default), the cursor is positioned over
 1219 		tabs and control characters the way it would be in vi, i.e.
 1220 		at the end of the tab or control character display
 1221 		sequence.  (To match the behavior of earlier versions of
 1222 		vile, should be set.) (U)
 1223 
 1224 	animated Controls whether vile automatically updates the contents of
 1225 		scratch buffers when their contents would change.  The animated
 1226 		buffers include:
 1227 			[Binding List]
 1228 			[Buffer List]
 1229 			[Color Palette]
 1230 			[Color Schemes]
 1231 			[Command-Bindings]
 1232 			[Error Expressions]
 1233 			[Error Patterns]
 1234 			[Insert-Bindings]
 1235 			[Major Modes]
 1236 			[Map Sequences]
 1237 			[Map! Sequences]
 1238 			[Named Marks]
 1239 			[Printable Chars]
 1240 			[Registers]
 1241 			[Select-Bindings]
 1242 			[Settings]
 1243 			[Tag Stack]
 1244 			[Terminal Characters]
 1245 			[Variables]
 1246 		Turning off "animated" is rarely necessary: the capability
 1247 		is present mostly as a debugging aid.  (B)
 1248 
 1249 	autobuffer (ab) Controls whether vile uses "most-recently-used"
 1250 		style buffering, or vi-style (command-line order) buffers.
 1251 		That is, if autobuffer is on, then buffers are sorted in
 1252 		order of use, in that buffers not frequently used will
 1253 		drift to the end of the list.  If this mode is not on, then
 1254 		vile will behave more like vi, in that buffers remain in a
 1255 		fixed order, that in which they were edited. (U)
 1256 
 1257 	autocolor (ac) Automatic syntax coloring.  If set to zero,
 1258 		automatic syntax coloring is disabled.  Otherwise, it
 1259 		should be set to a small positive integer which represents
 1260 		the number of milliseconds to wait before invoking the
 1261 		"autocolor-hook" hook.  The editor will wait the
 1262 		specified amount of time for a "quiet interval" during
 1263 		which the user hasn't pressed any keys. (B)
 1264 
 1265 	autowrite (aw)  vile will write out any changed buffers for which
 1266 		this mode is set before performing a ^Z, "stop", "suspend",
 1267 		":!<cmd>", or '^X-!<cmd>'.  The ":sh" command is not
 1268 		affected, nor is ":stop!" or ":suspend!".  Since buffers
 1269 		inherit the global value of a mode, simply setting the
 1270 		global autowrite value will cause all buffers to be
 1271 		auto-written.  Individual buffers can be forced or
 1272 		prevented from autowriting by setting the local value of
 1273 		the mode for those buffers appropriately.  [In real vi,
 1274 		autowrite mode will also force buffers to be written when
 1275 		switching between files.  This is unnecessary in vile.] (B)
 1276 
 1277 	autoindent (ai) During insert, newly created lines inherit their
 1278 		leading indent from the previous line in the buffer. (B)
 1279 
 1280 	autosave (as) Automatic file saving.  Writes the file after every
 1281 		'autosavecnt' characters of inserted text.  Other file
 1282 		changes are not counted.  (B)
 1283 
 1284 	autosavecnt (ascnt) How often (after how many inserted characters)
 1285 		will automatic saves take place.  256 by default. (B)
 1286 
 1287 	backspacelimit (bl)  When in insert mode, this controls whether
 1288 		one can backspace past the point at which the insert began. (B)
 1289 
 1290 	backup-style  Specifies the style used for creating file backups
 1291 		when a file is written.  Can have values of "off", ".bak",
 1292 		and (under UNIX) "tilde", for no backups, DOS-style .BAK
 1293 		files, and file.c~ style backups, respectively.  Files
 1294 		are copied before being written, to protect links to
 1295 		the original file.  Permissions, modification and access
 1296 		times are all preserved.  If creation of the backup fails,
 1297 		the write of the file will fail, unless it is forced
 1298 		using the ":w!" form of the write command.  (U)
 1299 
 1300 	bcolor	On systems supporting this, will set the background color.
 1301 		On most systems, the choice of colors is fixed, although the
 1302 		X11 version (xvile) can be given customized colors at startup
 1303 		or via .Xdefaults.  See notes about the color palette down
 1304 		below, under DOS specifics.  (U)
 1305 
 1306 	byteorder-mark (bom)  is a prefix used to distinguish different types
 1307 		of UTF-encoding.  (B)
 1308 
 1309 	bufname-expr Regular expression used for parsing of $bufname, subject
 1310 		to the cursor-tokens mode.  If the expression is inactive, use
 1311 		character-class based internal function which combines buffer-
 1312 		and filename-classes.  This is a buffer mode.  (B)
 1313 
 1314 	ccolor	On systems supporting this, will set the cursor color.
 1315 		On most systems, the choice of colors is fixed, although the
 1316 		X11 version (xvile) can be given customized colors at startup
 1317 		or via .Xdefaults.  See notes about the color palette down
 1318 		below, under DOS specifics.  (U)
 1319 
 1320 	check-modtime  Check modification-time.  If a file has changed since
 1321 		it was last read or written, vile will issue a "file newer
 1322 		than buffer" warning and prompt appropriately for
 1323 		confirmation when 1) popping up a window on an existing
 1324 		buffer, 2) reading or writing the buffer, or 3) after
 1325 		performing some shell command.  The prompt will occur only
 1326 		once, unless the file changes again, in which case the
 1327 		warning will be repeated.  The warning will be repeated in
 1328 		any case if the file is being written.  Invoking a shell, or
 1329 		suspending/restarting vile, will cause all visible buffers
 1330 		(those currently in windows) to have their times checked
 1331 		immediately.  A file is considered "changed" if its
 1332 		modification time changes, or, under UNIX, if it is replaced
 1333 		entirely, resulting in a different inode number.  (The
 1334 		"unique-buffers" mode must be active to enable the latter
 1335 		behavior.) (B)
 1336 
 1337 	cindent (ci) C-style indentation.  Helps maintain current indentation
 1338 		level automatically during insert, like autoindent, above.
 1339 		See cindent-chars for additional information.  Note that
 1340 		when the majormode cmode is in effect, cindent assumes a
 1341 		local buffer mode value of true.  (B)
 1342 
 1343 	cindent-chars (cic)  The list of characters interpreted by the cindent
 1344 		mode.  These include
 1345 			'#'	when a line starting with '#' is inserted, it
 1346 				is indented to column 1.  This is a temporary
 1347 				indent; succeeding lines are indented normally.
 1348 				Also, lines beginning with a '#' will not
 1349 				shift right with the '>>' command.
 1350 			':'	indent the next line further, e.g., after a
 1351 				label.
 1352 		as well as any character that may be listed in fence-pairs.  If
 1353 		it is listed in cindent-chars as well, the left-character of a
 1354 		pair causes the next line to be indented more, and the
 1355 		right-character causes the next line to be indented less.  (B)
 1356 
 1357 	cmode	C-code mode.  A built-in majormode that predefines cindent
 1358 		mode and separate suffix, tab and shiftwidth submodes.  The
 1359 		topic "cmode:  the original vile builtin majormode"
 1360 		discusses this majormode in more detail. (M)
 1361 
 1362 	crypt	Causes buffer(s) to be decrypted when read, and encrypted
 1363 		when written.  This is compatible with the UNIX crypt(1)
 1364 		routines used by vi, and is only available on platforms which
 1365 		have this feature enabled.  See the section on "Encryption"
 1366 		for more information.  (B)
 1367 
 1368 	color-scheme (cs) An aggregate of fcolor, bcolor, video-attrs and
 1369 		$palette.  Color schemes are defined with the
 1370 		define-color-scheme command. (U)
 1371 
 1372 	comment-prefix A regular expression denoting the portion of a line
 1373 		that is replicated and untouched, except for leading
 1374 		indentation when doing text formatting.  The expression
 1375 		should begin with "^", e.g., the default value
 1376 			^\s*\(\s*\([#*>]\)\|\(///*\)\)\+
 1377 		is useful for matching shell comments (#), multi-line C
 1378 		comments (*), multi-line C++ comments (//), and email (>).  (B)
 1379 
 1380 	comments A regular expression defining commented paragraph
 1381 		delimiters.  This is used in addition to the "paragraphs"
 1382 		expression (see below) when reformatting a region.  The net
 1383 		effect is that paragraphs inside of these comments are
 1384 		preserved when doing text reformatting, but are not
 1385 		reachable with the '}' and '{' motions.  A pattern that
 1386 		consists of an empty comment line usually works well.  (B)
 1387 
 1388 	cursor-tokens Controls whether vile uses regular expressions or
 1389 		character classes for parsing tokens from the screen for
 1390 		various commands.  This uses an enumeration:  both, cclass and
 1391 		regex.  If "both", vile tries matching first with the regular
 1392 		expresion, e.g., bufname-expr for $bufname, and if that does
 1393 		not match anything, uses the character-classes.  The main
 1394 		reason for providing the "both" option is that the older
 1395 		character-class based parsing for buffer name does not
 1396 		correspond exactly to a regular expression.  (B)
 1397 
 1398 	dirc	Causes vile to check each name when scanning directories for
 1399 		filename completion.  This is slower, but provides additional
 1400 		information allowing you to distinguish between directory and
 1401 		file names in the prompt.  (U)
 1402 
 1403 	dos	On input, if the global copy of this mode is set, then
 1404 		incoming CR/LF pairs are taken as line terminators, the CR
 1405 		characters are stripped out, and the local dos mode is set
 1406 		for the buffer.  (Actually, the local dos mode is only set
 1407 		if the _majority_ of lines had CR characters at the end.)
 1408 		If global dos mode is _not_ set, then incoming CR
 1409 		characters will be left visible on the screen (as '^M'),
 1410 		and the local mode will not be set.
 1411 
 1412 		On output, when writing a buffer with local dos mode set,
 1413 		all lines will be terminated with CR/LF pairs, rather than
 1414 		the usual single LF.
 1415 
 1416 		When buffers representing non-existent files are created
 1417 		they will inherit the line-style of the operating system
 1418 		(LF-only on UNIX and VMS, CRLF-style on DOS derivatives)
 1419 		regardless of the global setting of dos mode.
 1420 
 1421 		Setting dos mode makes editing binary files unreliable.
 1422 		The global value for this mode is set on by default in DOS
 1423 		versions of vile, and should therefore be turned off if
 1424 		doing binary editing.  (B)
 1425 
 1426 	errorbells (eb) Controls whether a bell sounds (or whether the
 1427 		screen flashes, if "flash" mode is on) when an error
 1428 		occurs. (U)
 1429 
 1430 	expand-chars Controls the set of characters that are expanded in
 1431 		command lines.  These include
 1432 			'%' (the current buffer),
 1433 			'#' (the alternate buffer),
 1434 			'!' (the last shell command) and
 1435 			':' (the token at the cursor position).  For VMS,
 1436 			    MS-DOS, OS/2, and Win32 hosts, this is '&'.
 1437 		(U)
 1438 
 1439 	expand-path Controls whether %/# are expanded to the full pathname
 1440 		of a buffer, or just to its basename (i.e. the name with
 1441 		the path stripped off).  (U)
 1442 
 1443 	fcolor	On systems supporting this, will set the foreground color.
 1444 		On most systems, the choice of colors is fixed, although the
 1445 		X11 version (xvile) can be given customized colors at startup
 1446 		or via .Xdefaults.  See notes about the color palette down
 1447 		below, under DOS specifics.  (U)
 1448 
 1449 	fence-begin
 1450 	fence-end Respectively, the regular expressions for balancing simple
 1451 		(character-oriented, non-nestable) fences.  (B)
 1452 
 1453 	fence-if
 1454 	fence-elif
 1455 	fence-else
 1456 	fence-fi Respectively, the regular expressions for balancing
 1457 		line-oriented, nested fences, e.g., as C-preprocessor lines
 1458 		(the default).  (B)
 1459 
 1460 	fence-limit  Iteration timeout for complex fences, to limit pathological
 1461 		cases, e.g., with Perl's ambiguous block syntax.  (B)
 1462 
 1463 	fence-pairs (fences) Each pair of characters in this string is taken to
 1464 		be a set of "fences", which should be matched with the '%'
 1465 		command.  The default value is "{}()[]", which produces normal
 1466 		vi behavior.  This can, for instance, be augmented with the '<'
 1467 		and '>' characters ("{}()[]<>") to cause angle brackets to be
 1468 		matched as well.  See "showmatch" mode for another use of the
 1469 		"fence-pairs" mode.  (B)
 1470 
 1471 	file-encoding  This is the character encoding of the buffer contents,
 1472 		which is not necessarily the same as the display's character
 1473 		encoding.  It must be one of the following values:
 1474 			"8bit"
 1475 			"ascii"
 1476 			"auto"
 1477 			"utf-16"
 1478 			"utf-32"
 1479 			"utf-8"
 1480 		The default "auto" tells vile to determine the encoding by
 1481 		inspecting the buffer contents.  The "8bit" setting corresponds
 1482 		to the 8-bit locale support used since 9.3i (20021223).  (B)
 1483 
 1484 	fillcol (fc)  Sets the value for the fill column, which is the
 1485 		column at which autowrapping and region formatting will
 1486 		break lines.  If zero, use the wrapmargin.  If negative,
 1487 		count from the right margin.  (B)
 1488 
 1489 	filtermsgs (fm)  A few syntax errors are detected and highlighted by
 1490 		the syntax-highlighting filters.  If set, this mode directs
 1491 		vile to write into the [Filter Messages] buffer the associated
 1492 		error messages, which can be used with the error-buffer command
 1493 		to step through the errors.  (B)
 1494 
 1495 	filtername (fn)  Specify a syntax-highlighting filter, for a given
 1496 		majormode.  This is used in the filters.rc file, to handle
 1497 		special cases where different sets of keywords are applicable
 1498 		to a common syntax, e.g., C, C++ and Java.  End users
 1499 		will not typically modify this mode. (B)
 1500 
 1501 	find-cfg  Configures the builtin find feature, which is available
 1502 		on win32 and Unix hosts.  For further details, refer to the
 1503 		section of this help file entitled "Working in a project
 1504 		hierarchy".  (U)
 1505 
 1506 	flash   If your terminal can, will flash the screen rather than
 1507 		beeping on errors.  No audible or visible indication will
 1508 		occur at all if "errorbells" mode is not set on.  See also
 1509 		the vtflash mode (described below).  (U)
 1510 
 1511 	for-buffers (fb) specifies whether globbing or regular expressions
 1512 		are used to select buffer names in the for-buffers and
 1513 		kill-buffer commands.  (U)
 1514 
 1515 		The choices are
 1516 			mixed	globbing with special exclusion for internal
 1517 				names, i.e., with square brackets
 1518 			glob	the same as filename globbing
 1519 			regex	regular expressions
 1520 
 1521 	glob	Controls how wildcard characters (e.g., '*' and '?') are
 1522 		treated in prompts for filenames.  Set glob to 'off' to
 1523 		disable expansion, or to 'on' to use the internal globber.
 1524 		The internal globber will handle *, ?, [a-z] style ranges,
 1525 		environment variables, and the ~user notation for finding
 1526 		home directories.
 1527 
 1528 		On UNIX, glob can be set to be a pipe command that
 1529 		will expand more wildcards.  The default value of
 1530 		glob on UNIX is "!echo %s", which should provide globbing
 1531 		that matches that of your shell.  If set to a command that
 1532 		will separate filenames with newlines or nulls rather than
 1533 		spaces, then filenames containing spaces may be more easily
 1534 		edited.  ("!/bin/ls -d %s" is one possibility, "!glob %s"
 1535 		is another if you use csh.) (U).
 1536 
 1537 	highlight (hl)  When false, syntax highlighting is disabled in the
 1538 		corresponding buffers.  This allows you to disable highlighting
 1539 		for all buffers or only certain ones.  (B)
 1540 
 1541 	history (hi) When true (the default), commands from the :-line are
 1542 		logged in a buffer [History].  Turning this off causes the
 1543 		buffer to be removed.  (U)
 1544 
 1545 	horizscroll (hs) If the cursor is moved "off-screen", this mode
 1546 		controls what happens.  If set (as it is by default), the
 1547 		whole screen will shift sideways to make the cursor position
 1548 		visible.  If not set, then only the current line will shift,
 1549 		which may be desirable on slower displays. (W)
 1550 
 1551 	identifier-expr Regular expression used for parsing of $identifier,
 1552 		which also corresponds to the pattern under the cursor used in
 1553 		tags and "screen-search-pattern-grab", etc., subject to the
 1554 		cursor-tokens mode.  If the expression is inactive, use
 1555 		character-class, e.g., the equivalent of
 1556 			\<[[:ident:]]\+\>
 1557 		This is a buffer mode.  (B)
 1558 
 1559 	ignorecase (ic) Text searches normally match the pattern exactly.
 1560 		With this set, searches are case-insensitive. (B)
 1561 
 1562 	ignoresuffix (is) Strip the given pattern from a filename before
 1563 		matching it for majormode suffixes.  Note well the
 1564 		difference between the mode's name and its behavior. (B)
 1565 
 1566 	implybuffer (ib) Causes vile to create a buffer when you write to a new
 1567 		file, or read from one (e.g., with ":r").  (U)
 1568 
 1569 	insert-exec (ie) Tells vile to interpret control characters for
 1570 		movement and undo/redo if they are bound to appropriate
 1571 		functions during insert mode.  For example, ^F and ^B would
 1572 		scroll forward and backward.  ^A and ^X bindings are honored
 1573 		as well.  (U)
 1574 
 1575 	linewrap (lw) Displays lines that are too long to fit on one line as a
 1576 		series of "wrapped" lines.  Overrides left/right scrolling
 1577 		controlled by "sideways" and "horizscroll" modes.  (W)
 1578 
 1579 	list	(li) The buffer will be displayed with tabs and newlines made
 1580 		visible, instead of as whitespace. (W)
 1581 
 1582 	loading A flag whose state may display in the mode/status line,
 1583 		used by the capture.pl script to show when asynchronous data is
 1584 		loading. (B)
 1585 
 1586 	magic	Honor unescaped regular expression metacharacters in search
 1587 		strings.  See the section "Regular Expressions" for more
 1588 		detail.  (B)
 1589 
 1590 	mcolor	Specify the color of the modelines, normally in reverse
 1591 		video. (U)
 1592 
 1593 	meta-insert-bindings (mib)  Controls behavior of 8-bit characters
 1594 		during insert.  Normally, key-bindings are only operational
 1595 		when in command mode: when in insert mode, all characters
 1596 		are self-inserting.  If this mode is on, and a meta-character
 1597 		(i.e.  a character with the 8th bit set) is typed which is
 1598 		bound to a function, then that function binding will be
 1599 		honored and executed from within insert mode.  Any unbound
 1600 		meta-characters will rem