"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