# This file contains all of the editor's command and key linkages.
# It also contains data for tables which are automatically generated in the
# editor.
#
# It should be processed by the "mktbls" program, which produces the
#  headers #included by main.c
#
# All that is necessary to add a new function to the editor is to add
#  an entry to this file, write the function, make sure it's in the
#  makefile, and rebuild.  (This is not to be confused with adding a
#  new key binding, which can be done with the rebind command if it
#  was compiled in.)
#
# If you want to know which keyboard bindings are already taken, look
#  at nebind.h, after you build it.
#
# The entries are functions within the editor.  They _must_ match the
#  functions' names.  On the same line as the name is the set of flags
#  describing that function.
# Also accompanying each function is a list of English names  for the
#  command, in double quotes, and a list of keys bound to the command,
#  in single quotes.  These are the default key bindings -- they can change
#  at runtime.  English names must be all lowercase.
# Any function, name, or key may be followed by a conditional, i.e. the
#  name of a preprocessor #define which must be defined non-zero for that
#  line to become part of the editor.  If a function name is made conditional,
#  the names and keys listed with it will be conditional also.
# The names and keys must be preceded by a tab character.
# Blank lines must be completely empty.
# For convenience only, this table is kept in roughly alphabetical order,
#  by first character of function name.
#
# For example, consider the following entry:
#
#	somefunc	ABSM|MOTION		BSD|DOS
#		"funkycom"
#		'^X-F'
#		'FN-2'				DOS
#		'M-s'
#
# As a special case, if a function key definition ('FN-A') is followed
# by a conditional beginning with "KEY_", like:
#		'FN-A'				KEY_Up
# then that name is output to nefkeys.h as a SPEC|x definition, for use
# by the screen/keyboard drivers.  The key is also bound, as usual, and
# is made conditional on the _third_ field on the line.  (Since KEY_xxx
# definitions are meant to be pretty generic, there should be little
# need for conditional build-time binding.)
#
# This says that somefunc() is an absolute motion command, that it should
#  only be included in the editor if we're running BSD or DOS, that its
#  english name as one would type on the command line is "funkycom", and
#  that it is bound to ^X-F, to function key 2 under DOS, and to "meta-s",
#  that is, an 's' with the high bit set.
#
# Function flags have the following meanings:
#	REDO means the dotcmd command recorder should be halted, so that
#		the command can be redone.
#	UNDO means the undo stacks should be cleared, in preparation for
#		an undoable command.
#	OPER means the command is an "operator", that is, it acts on a region
#		demarcated by the current cursor position and the cursor
#		position following a subsequent motion command.
#	MOTION means this command moves dot, and specifically is compatible
#		with the operator commands.
#	FL only occurs with MOTION, means that if the motion is an argument
#		to an operator, the operation should affect Full Lines
#	ABSM only occurs with MOTION, means that the motion is absolute,
#		i.e. not relative to the current position or screen.  It causes
#		the "lastdotmark", ldmark to be set to dot before the move
#		takes place.
#	MINIBUF is a special case, commands which can be used in the
#		minibuffer.  This includes MOTION and editing commands.
#	GOAL signifies a motion that will attempt to retain the
#		current column position after the motion.
#	GLOBOK says the function can follow a global command
#		(e.g. the 'd' in "g/pattern/d")
#
#	This file was designed and constructed by Paul Fox for vile, (c)1990
#
#	Some of the flags given are "ex" flags, related to what
#		kind of line-range arguments the command can take.  Not all are
#		currently used or implemented, but they were defined in the
#		command table for the Steve Kirkendall's elvis editor, so I
#		included them here for completeness.
#	BANG says the command (in real vi) can take a trailing ! character,
#		and will behave differently.  In vile, most such commands
#		have separate entries, e.g. quit and quithard and separate
#		functions which are executed.  in some cases this is very
#		impractical, as is the case with w and w!  -- so, if a command
#		is entered ending with a '!' (it must be in this table by
#		that name) _and_ the BANG flag is set for that command, then
#		the function will be invoked with "special" values for f and
#		n (i.e. values unlikely to be typed) so the function can
#		distinguish the two cases.
#		If the BANG flag appears, and there is no command-name ending
#		in '!' listed, then the flag does nothing, and should be
#		viewed simply as documentation.
#
# $Id: cmdtbl,v 1.274 2022/12/05 23:07:26 tom Exp $
#
#

abbrev		EXRCOK|EXTRA
	"abbreviate"
	"list-abbreviations"		!FEWNAMES
	"show-abbreviations"
	<establish shorthand for another string, or show all abbreviations>
altbuff		NONE
	"alternate-buffer"		!FEWNAMES
	'^^'
	'CTRL+6'			W32KY	SYS_WINNT
	<switch to previous buffer>
append		REDO|UNDO
	"append-chars"			!FEWNAMES
	'a'
	<insert (CNT copies of) text after the cursor>
append_i	REDO|UNDO
	"append-indented-chars"		!FEWNAMES
	"a!"
	<insert (CNT copies of) text after the cursor, toggles autoindent>
appstring	REDO|UNDO		!SMALLER
	"append-string"
	<append (CNT copies of) the given string after the cursor>
appnumber	REDO|UNDO		!SMALLER
	"append-number"
	<append (CNT copies of) the given character-number after the cursor>
appendeol	REDO|UNDO
	"append-chars-at-eol"		!FEWNAMES
	'A'
	<insert (CNT copies of) text after the end of line>
backchar	MOTION|MINIBUF
	"backward-character"		!FEWNAMES
	<move CNT characters left, wrapping to previous line>
backchar_to_bol	MOTION|MINIBUF
	"backward-character-to-bol"	!FEWNAMES
	"left-arrow"
	'h'
	'^H'
	'^?'
	'FN-D'				KEY_Left
	<move CNT characters left, stopping at beginning of line>
backdelchar	REDO|UNDO|MINIBUF
	"delete-previous-character"	!FEWNAMES
	'X'
	<delete CNT characters to the left>
backhunt	ABSM|MOTION		!SMALLER
	"hunt-backward"
	<search backward for CNT'th occurrence of previously entered pattern>
backhpage	MOTION
	"previous-half-page"		!FEWNAMES
	"back-half-page"		!FEWNAMES
	"up-half-page"			!FEWNAMES
	'^U'
	<move up CNT half screens>
backline	GOAL|MOTION|FL
	"previous-line"			!FEWNAMES
	"back-line"			!FEWNAMES
	"up-line"			!FEWNAMES
	"up-arrow"			!FEWNAMES
	'k'
	'^P'
	'FN-A'				KEY_Up
	<move up CNT lines>
backbline	MOTION|FL
	"previous-line-at-bol"		!FEWNAMES
	"back-line-at-bol"		!FEWNAMES
	"up-line-at-bol"		!FEWNAMES
	'-'
	<move up CNT lines, to first non-white character>
backpage	MOTION
	"previous-page"			!FEWNAMES
	"back-page"			!FEWNAMES
	'^B'
	'FN-p'				KEY_Prior
	<move up CNT full screens>
back_row	GOAL|MOTION
	'^X-^U'
	"backward-row"			!FEWNAMES
	"previous-row"			!FEWNAMES
	<move up CNT rows on the screen>
backword	MOTION|MINIBUF
	"previous-word"			!FEWNAMES
	"back-word"			!FEWNAMES
	'B'
	<move left by CNT \"big\" words>
backviword	MOTION|MINIBUF
	"previous-punctuated-word"	!FEWNAMES
	"back-punctuated-word"		!FEWNAMES
	'b'
	<move left by CNT \"small\" words>
backsearch	ABSM|MOTION
	"search-reverse"		!FEWNAMES
	'?'
	<search backwards for fresh pattern>
bcsrch		MOTION|MINIBUF
	"backward-char-scan"		!FEWNAMES
	'F'
	<scan left on the line for CNT'th occurrence of the given character>
bcsrch_to	MOTION|MINIBUF
	"backward-char-scan-to"		!FEWNAMES
	'T'
	<scan left on the line up to but not including CNT'th occurrence of the given character>
bindkey		NONE			OPT_REBIND
	"bind-key"
	"rebind-key"
	<bind a keystroke to a function>
bind_i_key	NONE			OPT_REBIND
	"bind-insmode-key"
	"rebind-insmode-key"
	<bind a keystroke to a function effective in insertion mode>
bind_c_key	NONE			OPT_REBIND
	"bind-cmdmode-key"
	"rebind-cmdmode-key"
	<bind a keystroke to a function effective in command mode>
bind_s_key	NONE			OPT_REBIND
	"bind-selmode-key"
	"rebind-selmode-key"
	<bind a keystroke to a function effective in select mode>
bktoshell	BANG			OPT_SHELL
	"suspend"
	"suspend!"
	"stop"
	"stop!"
	'^Z'
	<suspend the editor>
vl_chdir	NONE			OPT_SHELL
	"cd"
	"change-directory"
	<move to a new directory, \"-\" is previous, \"~\" is $HOME>
cntl_x_func	NONE
	"cntl_x-prefix"
	'^X'
	<the \"Control-X\" prefix, used when typing extended commands>
chgchar		REDO|UNDO
	"change-char"			!FEWNAMES
	"delete-char-and-insert-chars"	!FEWNAMES
	's'
	<insert text to replace CNT characters>
chgline		REDO|UNDO
	"change-line"			!FEWNAMES
	"delete-line-and-insert-chars"	!FEWNAMES
	'S'
	<insert text to replace the CNT lines, starting with current line>
chgtoeol	REDO|UNDO
	"change-to-eol"			!FEWNAMES
	"delete-to-eol-and-insert-chars" !FEWNAMES
	'C'
	<insert text to replace the rest of the line (plus CNT-1 following)>
clear_match_attrs	NONE		OPT_HILITEMATCH
	"clear-visual-matches"
	'='
	<clear highlighting caused by searches when \"visual-matches\" is set>
clrmes		NONE
	"clear-message-line"		!FEWNAMES
	<erase text on the bottom line of screen>
comp_err_exps	NONE			OPT_FINDERR
	"compile-error-expressions"
	<(re)compile the [Error Expressions] buffer>
show_err_regex	NONE			OPT_FINDERR
	"list-error-expressions"	!FEWNAMES
	"show-error-expressions"
	<display error meta-expressions and resulting regular expressions>
consearch	ABSM|MOTION
	"continue-search"		!FEWNAMES
	'n'
	<search for previous pattern in same direction as before, CNT'th occurrence>
opercopy	OPER|RANGE|EXTRA
	"copy-til"
	"co"
	<copy text in the region>
kbd_mac_startstop	NONE
	"end-keyboard-macro"		!FEWNAMES
	"begin-keyboard-macro"		!FEWNAMES
	'^X-('
	'^X-)'
	<begin or end recording a macro of keystrokes>
kbd_mac_exec	REDO|UNDO|VIEWOK
	"execute-keyboard-macro"	!FEWNAMES
	'^X-&'
	<execute a previously recorded macro of keystrokes CNT times>
kbd_mac_save	NONE
	"save-keyboard-macro"
	'^X-^'
	<save a previously recorded macro of keystrokes to a named register>
cbuf1		REDO			OPT_EXEC_MACROS>0
	"execute-macro-1"		!FEWNAMES
	'FN-1'				KEY_F1
	'FN-P'				KEY_KP_F1
	<execute [Macro 1] CNT times>
cbuf2		REDO			OPT_EXEC_MACROS>1
	"execute-macro-2"		!FEWNAMES
	'FN-2'				KEY_F2
	'FN-Q'				KEY_KP_F2
	<execute [Macro 2] CNT times>
cbuf3		REDO			OPT_EXEC_MACROS>2
	"execute-macro-3"		!FEWNAMES
	'FN-3'				KEY_F3
	'FN-R'				KEY_KP_F3
	<execute [Macro 3] CNT times>
cbuf4		REDO			OPT_EXEC_MACROS>3
	"execute-macro-4"		!FEWNAMES
	'FN-4'				KEY_F4
	'FN-S'				KEY_KP_F4
	<execute [Macro 4] CNT times>
cbuf5		REDO			OPT_EXEC_MACROS>4
	"execute-macro-5"		!FEWNAMES
	'FN-5'				KEY_F5
	<execute [Macro 5] CNT times>
cbuf6		REDO			OPT_EXEC_MACROS>5
	"execute-macro-6"		!FEWNAMES
	'FN-6'				KEY_F6
	<execute [Macro 6] CNT times>
cbuf7		REDO			OPT_EXEC_MACROS>6
	"execute-macro-7"		!FEWNAMES
	'FN-7'				KEY_F7
	<execute [Macro 7] CNT times>
cbuf8		REDO			OPT_EXEC_MACROS>7
	"execute-macro-8"		!FEWNAMES
	'FN-8'				KEY_F8
	<execute [Macro 8] CNT times>
cbuf9		REDO			OPT_EXEC_MACROS>8
	"execute-macro-9"		!FEWNAMES
	'FN-9'				KEY_F9
	<execute [Macro 9] CNT times>
cbuf10		REDO			OPT_EXEC_MACROS>9
	'FN-0'				KEY_F10
	"execute-macro-10"		!FEWNAMES
	<execute [Macro 10] CNT times>
cbuf11		REDO			OPT_EXEC_MACROS>10
	"execute-macro-11"		!FEWNAMES
	'FN-!'				KEY_F11
	<execute [Macro 11] CNT times>
cbuf12		REDO			OPT_EXEC_MACROS>11
	'FN-@'				KEY_F12
	"execute-macro-12"		!FEWNAMES
	<execute [Macro 12] CNT times>
cbuf13		REDO			OPT_EXEC_MACROS>12
	'FN-#'				KEY_F13
	"execute-macro-13"		!FEWNAMES
	<execute [Macro 13] CNT times>
cbuf14		REDO			OPT_EXEC_MACROS>13
	'FN-$'				KEY_F14
	"execute-macro-14"		!FEWNAMES
	<execute [Macro 14] CNT times>
cbuf15		REDO			OPT_EXEC_MACROS>14
	'FN-%'				KEY_F15
	"execute-macro-15"		!FEWNAMES
	<execute [Macro 15] CNT times>
cbuf16		REDO			OPT_EXEC_MACROS>15
	'FN-^'				KEY_F16
	"execute-macro-16"		!FEWNAMES
	<execute [Macro 16] CNT times>
cbuf17		REDO			OPT_EXEC_MACROS>16
	'FN-&'				KEY_F17
	"execute-macro-17"		!FEWNAMES
	<execute [Macro 17] CNT times>
cbuf18		REDO			OPT_EXEC_MACROS>17
	'FN-*'				KEY_F18
	"execute-macro-18"		!FEWNAMES
	<execute [Macro 18] CNT times>
cbuf19		REDO			OPT_EXEC_MACROS>18
	'FN-('				KEY_F19
	"execute-macro-19"		!FEWNAMES
	<execute [Macro 19] CNT times>
cbuf20		REDO			OPT_EXEC_MACROS>19
	'FN-)'				KEY_F20
	"execute-macro-20"		!FEWNAMES
	<execute [Macro 20] CNT times>
cbuf21		REDO			OPT_EXEC_MACROS>20
	'FN-\241'			KEY_F21
	"execute-macro-21"		!FEWNAMES
	<execute [Macro 21] CNT times>
cbuf22		REDO			OPT_EXEC_MACROS>21
	'FN-\242'			KEY_F22
	"execute-macro-22"		!FEWNAMES
	<execute [Macro 22] CNT times>
cbuf23		REDO			OPT_EXEC_MACROS>22
	'FN-\243'			KEY_F23
	"execute-macro-23"		!FEWNAMES
	<execute [Macro 23] CNT times>
cbuf24		REDO			OPT_EXEC_MACROS>23
	'FN-\244'			KEY_F24
	"execute-macro-24"		!FEWNAMES
	<execute [Macro 24] CNT times>
cbuf25		REDO			OPT_EXEC_MACROS>24
	'FN-\245'			KEY_F25
	"execute-macro-25"		!FEWNAMES
	<execute [Macro 25] CNT times>
cbuf26		REDO			OPT_EXEC_MACROS>25
	'FN-\246'			KEY_F26
	"execute-macro-26"		!FEWNAMES
	<execute [Macro 26] CNT times>
cbuf27		REDO			OPT_EXEC_MACROS>26
	'FN-\247'			KEY_F27
	"execute-macro-27"		!FEWNAMES
	<execute [Macro 27] CNT times>
cbuf28		REDO			OPT_EXEC_MACROS>27
	'FN-\250'			KEY_F28
	"execute-macro-28"		!FEWNAMES
	<execute [Macro 28] CNT times>
cbuf29		REDO			OPT_EXEC_MACROS>28
	'FN-\251'			KEY_F29
	"execute-macro-29"		!FEWNAMES
	<execute [Macro 29] CNT times>
cbuf30		REDO			OPT_EXEC_MACROS>29
	'FN-\252'			KEY_F30
	"execute-macro-30"		!FEWNAMES
	<execute [Macro 30] CNT times>
cbuf31		REDO			OPT_EXEC_MACROS>30
	'FN-\253'			KEY_F31
	"execute-macro-31"		!FEWNAMES
	<execute [Macro 31] CNT times>
cbuf32		REDO			OPT_EXEC_MACROS>31
	'FN-\254'			KEY_F32
	"execute-macro-32"		!FEWNAMES
	<execute [Macro 32] CNT times>
cbuf33		REDO			OPT_EXEC_MACROS>32
	'FN-\255'			KEY_F33
	"execute-macro-33"		!FEWNAMES
	<execute [Macro 33] CNT times>
cbuf34		REDO			OPT_EXEC_MACROS>33
	'FN-\256'			KEY_F34
	"execute-macro-34"		!FEWNAMES
	<execute [Macro 34] CNT times>
cbuf35		REDO			OPT_EXEC_MACROS>34
	'FN-\257'			KEY_F35
	"execute-macro-35"		!FEWNAMES
	<execute [Macro 35] CNT times>
cbuf36		REDO			OPT_EXEC_MACROS>35
	"execute-macro-36"		!FEWNAMES
	'FN-\260'			KEY_F36
	<execute [Macro 36] CNT times>
cbuf37		REDO			OPT_EXEC_MACROS>36
	"execute-macro-37"		!FEWNAMES
	'FN-\261'			KEY_F37
	<execute [Macro 37] CNT times>
cbuf38		REDO			OPT_EXEC_MACROS>37
	"execute-macro-38"		!FEWNAMES
	'FN-\262'			KEY_F38
	<execute [Macro 38] CNT times>
cbuf39		REDO			OPT_EXEC_MACROS>38
	"execute-macro-39"		!FEWNAMES
	'FN-\263'			KEY_F39
	<execute [Macro 39] CNT times>
cbuf40		REDO			OPT_EXEC_MACROS>39
	"execute-macro-40"		!FEWNAMES
	'FN-\264'			KEY_F40
	<execute [Macro 40] CNT times>
cbuf41		REDO			OPT_EXEC_MACROS>40
	"execute-macro-41"		!FEWNAMES
	'FN-\265'			KEY_F41
	<execute [Macro 41] CNT times>
cbuf42		REDO			OPT_EXEC_MACROS>41
	"execute-macro-42"		!FEWNAMES
	'FN-\266'			KEY_F42
	<execute [Macro 42] CNT times>
cbuf43		REDO			OPT_EXEC_MACROS>42
	"execute-macro-43"		!FEWNAMES
	'FN-\267'			KEY_F43
	<execute [Macro 43] CNT times>
cbuf44		REDO			OPT_EXEC_MACROS>43
	"execute-macro-44"		!FEWNAMES
	'FN-\270'			KEY_F44
	<execute [Macro 44] CNT times>
cbuf45		REDO			OPT_EXEC_MACROS>44
	"execute-macro-45"		!FEWNAMES
	'FN-\271'			KEY_F45
	<execute [Macro 45] CNT times>
cbuf46		REDO			OPT_EXEC_MACROS>45
	"execute-macro-46"		!FEWNAMES
	'FN-\272'			KEY_F46
	<execute [Macro 46] CNT times>
cbuf47		REDO			OPT_EXEC_MACROS>46
	"execute-macro-47"		!FEWNAMES
	'FN-\273'			KEY_F47
	<execute [Macro 47] CNT times>
cbuf48		REDO			OPT_EXEC_MACROS>47
	"execute-macro-48"		!FEWNAMES
	'FN-\274'			KEY_F48
	<execute [Macro 48] CNT times>
define_mode	NONE			OPT_MAJORMODE
	"define-majormode"
	"define-mode"
	<define a major mode, i.e., a collection of buffer modes>
derive_mode	NONE			OPT_MAJORMODE
	"derive-majormode"
	"derive-mode"
	<derive a major mode based on an existing majormode>
define_submode	NONE			OPT_MAJORMODE
	"define-submode"
	<define a submode within a major mode>
define_color_scm NONE			OPT_COLOR_SCHEMES
	"define-color-scheme"
	<define a color scheme>
delwind		NONE
	"delete-window"			!FEWNAMES
	'^K'
	'^X-0'
	<destroy the current window, unless it is the last one>
forceblank	REDO|UNDO
	"delete-blank-lines"		!FEWNAMES
	"force-blank-lines"		!FEWNAMES
	'^A-d'
	<delete blank lines (or force some if CNT specified)>
del_emptylines	OPER|REDO|UNDO|GLOBOK|RANGE	!SMALLER
	"delete-empty-lines"		!FEWNAMES
	'^A-e'
	<delete empty lines in the region>
frc_emptylines	OPER|REDO|UNDO|GLOBOK|RANGE	!SMALLER
	"force-empty-lines"		!FEWNAMES
	'^X-E'
	<force sequences of empty lines in the region to be $empty-lines>
delglobmode	NONE
	"delete-global-mode"		!FEWNAMES
	"setgno"
	"unsetg"
	"setno"
	"unset"
	<turn off the global value of a mode setting>
dellocmode	EXRCOK|EXTRA
	"delete-mode"			!FEWNAMES
	"setlno"
	"unsetl"
	<turn off the current buffer's local value of a mode setting>
deltoeol	REDO|UNDO|MINIBUF
	"delete-to-eol"			!FEWNAMES
	'D'
	<delete text from cursor to the end of line>
desbind		NONE			OPT_REBIND
	"describe-bindings"
	"list-bindings"			!FEWNAMES
	"list-commands"			!FEWNAMES
	"show-bindings"
	"show-commands"
	<show a list of all commands>
des_i_bind	NONE			OPT_REBIND
	"describe-insmode-bindings"
	"list-insmode-bindings"		!FEWNAMES
	"show-insmode-bindings"
	<show a list of all commands that may be executed in insert-mode>
des_c_bind	NONE			OPT_REBIND
	"describe-cmdmode-bindings"
	"list-cmdmode-bindings"		!FEWNAMES
	"show-cmdmode-bindings"
	<show a list of all commands that may be executed in command-editing mode>
des_s_bind	NONE			OPT_REBIND
	"describe-selmode-bindings"
	"list-selmode-bindings"		!FEWNAMES
	"show-selmode-bindings"
	<show a list of all commands that may be executed in selection mode>
desall_bind	NONE			OPT_REBIND
	"describe-all-keys"
	"list-all-keys"			!FEWNAMES
	"show-all-keys"
	<show a list of all keys, showing if they are bound to command>
desall_i_bind	NONE			OPT_REBIND
	"describe-all-insmode-keys"
	"list-all-insmode-keys"		!FEWNAMES
	"show-all-insmode-keys"
	<show a list of all insert-mode keys, showing if they are bound to command>
desall_c_bind	NONE			OPT_REBIND
	"describe-all-cmdmode-keys"
	"list-all-cmdmode-keys"		!FEWNAMES
	"show-all-cmdmode-keys"
	<show a list of all editing-keys, showing if they are bound to command>
desall_s_bind	NONE			OPT_REBIND
	"describe-all-selmode-keys"
	"list-all-selmode-keys"		!FEWNAMES
	"show-all-selmode-keys"
	<show a list of all selection-mode keys, showing if they are bound to command>
des_keynames	NONE			OPT_REBIND
	"list-key-names"		!FEWNAMES
	"show-key-names"
	<show a list of all function-keys that may be bound with #-syntax>
descolors	NONE			OPT_SHOW_COLORS
	"list-colors"			!FEWNAMES
	"show-colors"
	<show a list of all colors, as mapped by $palette>
desmotions	NONE			OPT_REBIND
	"list-motions"			!FEWNAMES
	"describe-motions"
	"show-motions"
	<show a list of all motion commands>
desglobals	NONE			OPT_REBIND
	"list-globals"			!FEWNAMES
	"describe-globals"
	"show-globals"
	<show a list of all global commands>
desopers	NONE			OPT_REBIND
	"list-operators"		!FEWNAMES
	"describe-operators"
	"show-operators"
	<show a list of all operator commands>
desschemes	NONE			OPT_COLOR_SCHEMES
	"list-color-schemes"		!FEWNAMES
	"show-color-schemes"
	<show the color scheme parameters>
desprint	NONE			OPT_SHOW_CTYPE
	"show-printable"
	<show the printable characters, with types, use CNT to select system locale>
deswprint	NONE			OPT_SHOW_CTYPE&&OPT_MULTIBYTE
	"show-wide-printable"
	<show the wide printable characters, with types, use CNT to select page>
dessubstr	NONE			OPT_REBIND
	"apropos"
	"list-commands-apropos-to"
	<look up command names containing a string>
desfunc		NONE			OPT_REBIND
	"describe-function"
	"show-function"
	<show a description and current bindings for a function>
deskey		NONE			OPT_REBIND
	"describe-key"
	<show the function bound to a given key>
des_i_key	NONE			OPT_REBIND
	"describe-insmode-key"
	<show the function bound to a given key in insert-mode>
des_c_key	NONE			OPT_REBIND
	"describe-cmdmode-key"
	<show the function bound to a given key in command-mode>
des_s_key	NONE			OPT_REBIND
	"describe-selmode-key"
	<show the function bound to a given key in selection-mode>
dotcmdplay	UNDO
	"repeat-last-cmd"		!FEWNAMES
	'.'
	<repeat the last text-changing command, CNT times>
des_amp_funcs	NONE			OPT_EVAL
	"describe-&functions"
	"describe-user-functions"	!FEWNAMES
des_dlr_vars	NONE			OPT_EVAL
	"describe-$variables"
	"describe-state-variables"	!FEWNAMES
evaluate	NONE			OPT_EVAL
	"eval"
	"execute-string"		!FEWNAMES
	<evaluate expression, reinterpret as a command (CNT as per command)>
ex		BANG|FILE1
	"ex"
	<entry point to the \"exile\" editor.  unimplemented>
execbuf		EXRCOK|EXTRA		!SMALLER
	"execute-buffer"		!FEWNAMES
	<run the given buffer as a script, CNT times>
execfile	EXRCOK|EXTRA		
	"execute-file"			!FEWNAMES
	"source"
	<run the given file as a script, CNT times>
exechypercmd	NONE			OPT_HYPERTEXT
	"execute-hypertext-command"	!FEWNAMES
	<run the hypertext command attached to the region under the cursor>
showhypercmd	NONE			OPT_HYPERTEXT
	"show-hypertext-command"	!FEWNAMES
	<show the hypertext command attached to the region under the cursor>
execkreg	REDO|UNDO|VIEWOK|USEREG
	"execute-register"
	'@'
	<execute the keystroke macro stored in the given named register CNT times>
execproc	REDO|EXRCOK|EXTRA	OPT_PROCEDURES
	"execute-procedure"		!FEWNAMES
	"run"
	<run the given named stored-procedure as a script, CNT times>
enlargewind	GOAL
	"grow-window"			!FEWNAMES
	'V'
	<increase the size of the current window by CNT lines>
esc_func	NONE
	"abort-command"			!FEWNAMES
	'^['
	<the abort key, normally bound to ESC; it terminates lots of things>
flow_control_enable	NONE		SYS_UNIX
	"flow-control-enable"
	<enable software flow-control (disable with arg)>
fcsrch		MOTION|MINIBUF
	"forward-char-scan"		!FEWNAMES
	'f'
	<scan right on the line for (CNT'th occurrence of) the given character>
fcsrch_to	MOTION|MINIBUF
	"forward-char-scan-up-to"	!FEWNAMES
	't'
	<scan right on the line up to but not including (CNT'th occurrence of) the given character>
filefind	BANG|FILE1|PLUS
	"e"
	"E"
	"edit-file"			!FEWNAMES
	"find-file"			!FEWNAMES
	'^X-e'
	<bring given (or under-cursor) file or existing buffer into window>
fileread	EXRCOK|FILE1		
	"e!"
	"replace-with-file"		!FEWNAMES
	<replace the contents of the current buffer with the given file>
vl_filename	NAMEDF
	"change-file-name"		!FEWNAMES
	"f"
	"file"
	"filename"
	<change the filename associated with the current buffer>
filesave	BANG			!SMALLER
	"save-file"
	"save-file!"
	<save the contents of the current buffer to its associated filename>
filewrite	BANG
	"write-file"			!FEWNAMES
	"write-file!"			!FEWNAMES
	<syntax: \"write-file [name]\" - write contents of current buffer to its filename or to optional \"name\">
vile_filter	REDO|UNDO		OPT_SHELL
	"|"
	"filter-buffer"			!FEWNAMES
	<pipe the entire buffer through an external filter command>
finderr		NONE			OPT_FINDERR
	"find-next-error"		!FEWNAMES
	'^X-^X'
	<move to the next \"error\" in the error-buffer>
finderrbuf	NONE			OPT_FINDERR
	"find-next-error-buffer-name"
	"error-buffer"
	<set the name of the buffer used as the error-buffer>
firstbuffer	NONE
	"rewind"
	"rew!"
	<go to first buffer in buffer list>
firstnonwhite	MOTION|MINIBUF
	"first-nonwhite"		!FEWNAMES
	'^'
	<move to the first non-whitespace character on line>
fisearch	NONE			OPT_ISRCH
	"incremental-search"		!FEWNAMES
	'^X-S'
	<search forward for a pattern entered character by character>
flipchar	REDO|UNDO|MINIBUF
	"flip-character"		!FEWNAMES
	'~'
	<exchange upper and lowercase for CNT characters, begin with current>
forwdelchar	REDO|UNDO|MINIBUF
	"delete-next-character"		!FEWNAMES
	'x'
	'FN-d'				KEY_Delete
	<delete CNT characters to the right>
forwhpage	MOTION
	"forward-half-page"		!FEWNAMES
	"next-half-page"		!FEWNAMES
	"down-half-page"		!FEWNAMES
	'^D'
	<move down CNT half screens>
forwchar	MOTION|MINIBUF
	"forward-character"		!FEWNAMES
	"next-character"		!FEWNAMES
	<move CNT characters right, wrapping to next line>
forwchar_to_eol	MOTION|MINIBUF
	"forward-character-to-eol"	!FEWNAMES
	"next-character-to-eol"		!FEWNAMES
	"right-arrow"
	' '
	'l'
	'FN-C'				KEY_Right
	<move CNT characters right, stopping at end of line>
forwpage	MOTION
	"forward-page"			!FEWNAMES
	"next-page"			!FEWNAMES
	"down-page"			!FEWNAMES
	'^F'
	'FN-n'				KEY_Next
	<move down CNT full screens>
forw_row	GOAL|MOTION
	'^X-^D'
	"forward-row"			!FEWNAMES
	"next-row"			!FEWNAMES
	<move down CNT rows on the screen>
forwline	GOAL|MOTION|FL
	"forward-line"			!FEWNAMES
	"next-line"			!FEWNAMES
	"down-line"			!FEWNAMES
	"down-arrow"			!FEWNAMES
	'j'
	'^J'
	'^N'
	'FN-B'				KEY_Down
	<move down CNT lines>
forwbline	MOTION|FL
	"forward-line-at-bol"		!FEWNAMES
	"next-line-at-bol"		!FEWNAMES
	"down-line-at-bol"		!FEWNAMES
	'+'
	'^M'
	<move down CNT lines, to first non-white character>
forwword	MOTION|MINIBUF
	"forward-word"			!FEWNAMES
	"next-word"			!FEWNAMES
	'W'
	<move right by CNT \"big\" words>
forwviword	MOTION|MINIBUF
	"forward-punctuated-word"	!FEWNAMES
	"next-punctuated-word"		!FEWNAMES
	'w'
	<move right by CNT \"small\" words>
forwendw	MOTION|MINIBUF
	"forward-word-end"		!FEWNAMES
	"next-word-end"			!FEWNAMES
	'E'
	<move right to the end of CNT \"big\" words>
forwviendw	MOTION|MINIBUF
	"forward-punctuated-word-end"	!FEWNAMES
	"next-punctuated-word-end"	!FEWNAMES
	'e'
	<move right to the end of CNT \"small\" words>
forwhunt	ABSM|MOTION		!SMALLER
	"hunt-forward"			!FEWNAMES
	<search forward for CNT'th occurrence of previously entered pattern>
forwsearch	ABSM|MOTION
	"search-forward"		!FEWNAMES
	'/'
	'FN-f'				KEY_Find
	<search forward for CNT'th occurrence of fresh $identifier pattern>
matchfence	ABSM|MOTION		OPT_CFENCE
	"goto-matching-fence"		!FEWNAMES
	'%'
	<find partner for next (,),[,],{,},#if,#else,#endif,/*,*/>
matchfenceback	ABSM|MOTION		OPT_CFENCE
	"goto-matching-fence-behind"	!FEWNAMES
	'^X-%'
	<find partner for previous (,),[,],{,} on line>
globals		NONE
	"oglobals"			VILE_NEVER

# the gotdotplus() function is mostly for internal use only, for the
# stuttered operator commands, but it corresponds to the real vi '_'
# command, so we give it a name, so it can be bound to if desired.
godotplus	MOTION|FL
	"whole-lines"
	<move CNT whole lines.  same as \"stuttering\" most operators>

# this function is for internal use only, for ex commands
gomark		MOTION|FL|RANGE|ZERO

gotobop		ABSM|MOTION
	"previous-paragraph"		!FEWNAMES
	"back-paragraph"		!FEWNAMES
	"up-paragraph"			!FEWNAMES
	'{'
	<move to the start of CNT'th paragraph>
gotoeop		ABSM|MOTION
	"forward-paragraph"		!FEWNAMES
	"next-paragraph"		!FEWNAMES
	"down-paragraph"		!FEWNAMES
	'}'
	<move to the end of CNT'th paragraph>
gotobob		ABSM|MOTION		!SMALLER
	"beginning-of-file"		!FEWNAMES
	"goto-beginning-of-file"	!FEWNAMES
	'FN-H'				KEY_Home
	<move to the top of the buffer>
gotoeob		ABSM|MOTION		!SMALLER
	"goto-end-of-file"		!FEWNAMES
	"end-of-file"			!FEWNAMES
	'FN-E'				KEY_End
	<move to the end of the buffer>
gotobol		MOTION|MINIBUF
	"goto-bol"			!FEWNAMES
	"beginning-of-line"		!FEWNAMES
	"bol"				!FEWNAMES
	'0'
	<move to the very beginning of the line>
gotoeol		GOAL|MOTION|MINIBUF
	"goto-eol"			!FEWNAMES
	"end-of-line"			!FEWNAMES
	"eol"				!FEWNAMES
	'$'
	<move to the very end of the CNT'th line>
gotobos		ABSM|MOTION|FL
	"goto-beginning-of-screen"	!FEWNAMES
	"beginning-of-screen"		!FEWNAMES
	'H'
	<move to the CNT'th line on the screen>
gotomos		ABSM|MOTION|FL
	"goto-middle-of-screen"		!FEWNAMES
	"middle-of-screen"		!FEWNAMES
	'M'
	<move to the line in the middle of the screen>
gotoeos		ABSM|MOTION|FL
	"goto-end-of-screen"		!FEWNAMES
	"end-of-screen"			!FEWNAMES
	'L'
	<move to the CNT'th line from the bottom of the screen>
gotobosec	ABSM|MOTION
	"previous-section"		!FEWNAMES
	"back-section"			!FEWNAMES
	"up-section"			!FEWNAMES
	'['
	<move to the CNT'th previous start of a \"section\">
gotoeosec	ABSM|MOTION
	"forward-section"		!FEWNAMES
	"next-section"			!FEWNAMES
	"down-section"			!FEWNAMES
	']'
	<move forward to the CNT'th start of a \"section\">
gotobosent	ABSM|MOTION
	"previous-sentence"		!FEWNAMES
	"back-sentence"			!FEWNAMES
	"up-sentence"			!FEWNAMES
	'('
	<move to the CNT'th previous start of a \"sentence\">
gotoeosent	ABSM|MOTION
	"forward-sentence"		!FEWNAMES
	"next-sentence"			!FEWNAMES
	"down-sentence"			!FEWNAMES
	')'
	<move to the CNT'th start of a \"sentence\">
gototag		NONE			OPT_TAGS
	"ta"
	"tag"
	"find-tag"			!FEWNAMES
	'^]'
	<look up the given (or under-cursor) name as a \"tag\">
gotochr		ABSM|MOTION		!SMALLER
	"goto-char"
	'^X-G'
	<go to the CNT'th character.  unspecified CNT means end of buffer>
gotopct		ABSM|MOTION		!SMALLER
	"goto-percent"
	<go to the CNT'th percent of the file.  unspecified CNT means end of buffer>
gotocol		MOTION|MINIBUF
	"goto-column"			!FEWNAMES
	'|'
	<go to the CNT'th column on the line>
gotoline	ABSM|MOTION|FL|RANGE
	"goto-line"			!FEWNAMES
	'G'
	<go to the CNT'th line.  unspecified CNT means end of buffer>
# golinenmmark and goexactnmmark are special cases--
#	no ABSM even though they are absolute, since these are the commands
#	that use the last-dot-mark
golinenmmark	MOTION|FL
	"goto-named-mark"		!FEWNAMES
#  single quote -- can't use '''
	'\047'
	<move to line containing the mark, at first non-white character>
goexactnmmark	MOTION
	"goto-named-mark-exact"		!FEWNAMES
	'`'
	<move to the given mark>
gorectnmmark	MOTION|VL_RECT
	"goto-named-mark-rectangular"	!FEWNAMES
	'\0134'
	<move to the mark, implying a rectangle if used with an operator>
vl_help		NONE
	"h"
	"help"
	"list-help"
	"show-help"
	'^A-h'
	'^X-h'
	'FN-?'				KEY_Help
	'FN-m'				KEY_Menu
	<bring up a buffer containing lots of barely sorted information>
histbuff	NONE
	"historical-buffer"		!FEWNAMES
	"_"
	'_'
	<visit the CNT'th previous buffer>
histbuff_to_current_window	NONE
	"historical-buffer-to-current-window"	!FEWNAMES
	'^X-_'
	<visit the CNT'th previous buffer and put it in the current window>
insert		REDO|UNDO
	"insert-chars"			!FEWNAMES
	'FN-i'				KEY_Insert
	'i'
	<insert (CNT copies of) text before the cursor>
insert_no_aindent	REDO|UNDO
	"insert-chars-no-autoindent"	!FEWNAMES
	'^A-i'
	<insert (CNT copies of) text before the cursor, suppressing autoindent>
insertbol	REDO|UNDO
	"insert-chars-at-bol"	!FEWNAMES
	'I'
	<insert (CNT copies of) text before the first non-white char on line>
insfile		REDO|UNDO|GLOBOK|FROM|ZERO|NAMEDF
	"r"
	"insert-file"			!FEWNAMES
	"read-file"			!FEWNAMES
	'^R'
	<read the given file into the current buffer at the current line>
insspace	REDO|UNDO|MINIBUF	!SMALLER
	"insert-space"			!FEWNAMES
	<insert CNT space character(s) at the cursor>
insstring	REDO|UNDO		!SMALLER
	"insert-string"
	<insert (CNT copies of) the given string at the cursor>
insnumber	REDO|UNDO		!SMALLER
	"insert-number"
	<insert (CNT copies of) the given character-number at the cursor>
joinlines	REDO|UNDO
	"join-lines"			!FEWNAMES
	'J'
	<join CNT lines together with the current one>
for_buffers	NONE			!SMALLER
	"for-buffers"			!FEWNAMES
	"fb"
	'^X-x'
	<for each buffer matched by the pattern, perform the command (CNT as per command)>
killbuffer	GOAL
	"delete-buffer"			!FEWNAMES
	"kill-buffer"			!FEWNAMES
	"ki"
	'^X-k'
	<eliminate the given or (CNT times) under-cursor buffer>
showlength	DFLALL|FROM|TO|NOMOVE
	"buffer-length"			!FEWNAMES
	"="
	<report number of lines in current buffer>
lastnonwhite	MOTION|MINIBUF		!SMALLER
	"last-nonwhite"			!FEWNAMES
	<move to the last non-whitespace character on line>
listbuffers	NONE
	"list-buffers"			!FEWNAMES
	"show-buffers"			!FEWNAMES
	'^A-*'
	<show the current list of buffers.  give CNT to force showing all>
vl_set_args	FILES
	"set-buffers"			!FEWNAMES
	"args"
	<reset the current list of visible buffers.>
vl_set_args2	FILES
	"force-set-buffers"		!FEWNAMES
	"args!"
	<reset the current list of visible buffers, even if some are modified.>
showhistory	NONE			OPT_HISTORY
	"show-history"
	<show the command history>
lineputafter	REDO|UNDO|GLOBOK|FROM|ZERO|OPTREG
	"put-as-lines-after"		!FEWNAMES
	"put"
	'^X-p'
	<insert CNT times from (un)named register, as whole lines, after current line>
lineputbefore	REDO|UNDO|GLOBOK|FROM|OPTREG
	"put-as-lines-before"		!FEWNAMES
	"Put"
	'^X-P'
	<insert CNT times from (un)named register, as whole lines, before current line>
rectputafter	REDO|UNDO|GLOBOK|FROM|ZERO|OPTREG
	"put-as-rectangle-after"	!FEWNAMES
	"rput"
	'^A-p'
	<insert CNT times from (un)named register, as a rectangle, after cursor>
rectputbefore	REDO|UNDO|GLOBOK|FROM|OPTREG
	"put-as-rectangle-before"	!FEWNAMES
	"rPut"
	'^A-P'
	<insert CNT times from (un)named register, as a rectangle, in front of cursor>
lineundo	NONE
	"undo-line-changes"		!FEWNAMES
	'U'
	<undo all changes made to most recently altered line>
loadkreg	USEREG|EXTRA
	"load-register"
	<load the given string into the currently named register.  give CNT for full-lines.>
loadplugin	NONE			OPT_PLUGIN
	"load-plugin"
	<try to load a plug-in from a shared-library file>
showkreg	NONE			OPT_SHOW_REGS
	"show-registers"
	"showregisters"			!FEWNAMES
	"list-registers"		!FEWNAMES
	<show the contents of all of the named and unnamed registers>
sysmap		EXRCOK|EXTRA		OPT_SHOW_MAPS
	"show-system-mapped-chars"
	<list the system function-key maps>
map		EXRCOK|EXTRA
	"map"
	"show-mapped-chars"
	<create a new map, or show list of the current command-mode maps>
map_bang	EXRCOK|EXTRA
	"map!"
	"show-mapped!-chars"
	<create a new map, or show list of the current insert-mode maps>
gui_hide_menus	NONE			OPT_MENUS
	"hide-menus"
	<hide the menu-bar>
gui_remove_menus NONE			OPT_MENUS
	"remove-menus"
	<remove the menus>
gui_show_menus	NONE			OPT_MENUS
	"show-menus"
	<display the menus, if hidden>
vlmenu_load	NONE			OPT_MENUS
	"load-menus"
	<load menus from external file>
vlmenu_entry	NONE			OPT_MENUS
	"define-menu-entry"
	<define a menu-entry>
nexttag		NONE			OPT_TAGS
	"next-tag"			!FEWNAMES
	'^A-^]'
	<search the tags file(s) for another location for the last tag>
newprocessgroup	NONE
	"new-process-group"
	<put editor into its own process group (X11 version only)>
noremap		EXRCOK|EXTRA
	"noremap"
	<create a new unremappable command-mode map>
noremap_bang	EXRCOK|EXTRA
	"noremap!"
	<create a new unremappable insert-mode map>
cntl_a_func	NONE
	"cntl_a-prefix"
	'^A'
	<the \"Control-A\" prefix, used when typing extended commands>
mvdnnxtwind	GOAL
	"move-next-window-down"		!FEWNAMES
	'^A-^E'
	<move next window down (or buffer up) by CNT lines>
mvupnxtwind	GOAL
	"move-next-window-up"		!FEWNAMES
	'^A-^Y'
	<move next window up (or buffer down) by CNT lines>
mvdnwind	GOAL
	"move-window-down"		!FEWNAMES
	'^E'
	<move window down (or buffer up) by CNT lines>
mvupwind	GOAL
	"move-window-up"		!FEWNAMES
	'^Y'
	<move window up (or buffer down) by CNT lines>
mvrightwind	GOAL
	"move-window-right"		!FEWNAMES
	'^X-^R'
	<scroll window to right by CNT columns, half screen if CNT unspecified>
mvleftwind	GOAL
	"move-window-left"		!FEWNAMES
	'^X-^L'
	<scroll window to left by CNT columns, half screen if CNT unspecified>
nextbuffer	BANG|NAMEDFS
	"n"
	"n!"
	"next-buffer"			!FEWNAMES
	<switch to next buffer (or the least-recently-visited, if \"autobuffer\" on>
namebuffer	NONE
	"rename-buffer"
	<give the current buffer a new name>
name_a_buffer	NONE
	"other-buffer-rename"
	<give the specified buffer a new name>
newline		REDO|UNDO		!SMALLER
	"newline"
	<insert a newline at the cursor, CNT times>
newlength	NONE
	"screen-rows"
	<tell the editor the screen has CNT rows>
newwidth	NONE
	"screen-columns"
	<tell the editor the screen has CNT columns>
nextwind	NONE
	"next-window"			!FEWNAMES
	'^X-o'
	<move to the next window.  repeat with CNT>
nullproc	NONE
	"nop"				!FEWNAMES
	"do-nothing"			!FEWNAMES
	'^Q'
	<do nothing>
namedcmd	NONE
	"execute-named-command"		!FEWNAMES
	":"
	':'
	<execute the given function, by name, applying CNT as its repeat-count>
openup		REDO|UNDO|FROM
	"open-line-above-and-insert-chars"	!FEWNAMES
	"i"
	'O'
	<insert text in CNT fresh blank line(s), before current line>
openup_i	REDO|UNDO|FROM		!SMALLER
	"insert-indented-chars"		!FEWNAMES
	"i!"
	<insert text in CNT fresh blank line(s), before current line, toggle autoindent>
openup_no_aindent	REDO|UNDO|FROM|ZERO
	"open-line-above-no-autoindent"	!FEWNAMES
	'^A-O'
	<insert text in CNT fresh blank line(s), before current, no autoindent>
opendown	REDO|UNDO|FROM|ZERO
	"open-line-below-and-append-chars"	!FEWNAMES
	"a"
	'o'
	<insert text in CNT fresh blank line(s), after current line>
opendown_no_aindent	REDO|UNDO|FROM|ZERO
	"open-line-below-no-autoindent"	!FEWNAMES
	'^A-o'
	<insert text in CNT fresh blank line(s), after current, no autoindent>
operopenrect	OPER|REDO|UNDO|GLOBOK|RANGE
	"open-rectangle"
	'^A-r'
	<open blank rectangular area specified by given motion>
operattrbold	OPER|GLOBOK|RANGE	OPT_SELECTIONS
	"attribute-bold-til"		!FEWNAMES
	'^A-B'
	<display text as bold in the region>
operattrcaseq	OPER|REDO|UNDO|GLOBOK|RANGE	OPT_SELECTIONS
	"attribute-cntl_a-sequences-til"	!FEWNAMES
	"decode-attributes-til"			!FEWNAMES
	'^A-A'
	<display text as given by ^A sequences in the region>
operattrencode	OPER|REDO|UNDO|GLOBOK|RANGE	OPT_SELECTIONS
	"encode-attributes-til"			!FEWNAMES
	'^A-E'
	<encode attributes in the region as ^A sequences>
operattrdirect	OPER|GLOBOK|RANGE	OPT_SELECTIONS&&OPT_FILTER
	"attribute-directly"			!FEWNAMES
	'^A-D'
	<directly attribute region using internal filter>
operattrfilter	OPER|GLOBOK|RANGE	OPT_SELECTIONS&&OPT_SHELL
	"attribute-from-filter-til"		!FEWNAMES
	'^A-F'
	<read/apply ^A sequence attributes by filtering the region>
operattrhc	OPER|GLOBOK|RANGE	OPT_HYPERTEXT
	"attribute-hypertext-til"	!FEWNAMES
	'^A-H'
	<attach hypertext command to region>
operattrital	OPER|GLOBOK|RANGE	OPT_SELECTIONS
	"attribute-italic-til"		!FEWNAMES
	'^A-I'
	<display text in italics in the region>
operattrno	OPER|GLOBOK|RANGE	OPT_SELECTIONS
	"attribute-normal-til"		!FEWNAMES
	"clear-attributes-til"
	'^A-N'
	<display text normally in the region>
operattrrev	OPER|GLOBOK|RANGE	OPT_SELECTIONS
	"attribute-reverse-til"		!FEWNAMES
	'^A-R'
	<display text reversed in the region>
operattrul	OPER|GLOBOK|RANGE	OPT_SELECTIONS
	"attribute-underline-til"	!FEWNAMES
	'^A-U'
	<display text underlined in the region>
operchg		OPER|REDO|UNDO
	"change-til"			!FEWNAMES
	"c"
	"delete-and-insert-chars-til"	!FEWNAMES
	'c'
	<insert text, replacing that in the region>
operchg_i	OPER|REDO|UNDO		!SMALLER
	"change-indented-chars"		!FEWNAMES
	"c!"
	<insert text, replacing that in the region, toggles autoindent>
operdetab	OPER|REDO|UNDO|GLOBOK|RANGE
	"detab-lines-til"		!FEWNAMES
	'^A- '
	<convert tabs to spaces in the region>
oper_l_detab	OPER|REDO|UNDO|GLOBOK|RANGE
	"leading-detab-lines-til"	!FEWNAMES
	'^X- '
	<convert leading tabs to spaces in the region>
operentab	OPER|REDO|UNDO|GLOBOK|RANGE
	"entab-lines-til"		!FEWNAMES
	'^A-^I'
	<convert spaces to tabs where possible in the region>
oper_l_entab	OPER|REDO|UNDO|GLOBOK|RANGE
	"leading-entab-lines-til"	!FEWNAMES
	'^X-^I'
	<convert leading spaces to tabs where possible in the region>
opermove	OPER|RANGE|EXTRA
	"move-til"
	"m"
	<move text in the region to the given line>
operlinechg	OPER|REDO|UNDO|RANGE
	"change-lines-til"		!FEWNAMES
	"delete-lines-and-insert-chars-til"	!FEWNAMES
	"ch"
	'^X-c'
	<insert text, replacing that on the lines covered by the region>
operdel		OPER|REDO|UNDO
	"delete-til"			!FEWNAMES
	'd'
	<delete text in the region>
operjoin	OPER|REDO|UNDO|GLOBOK|RANGE
	"j"
	"join-lines-til"		!FEWNAMES
	<join together lines in the region, adjusting whitespace at join>
operjoin_x	OPER|REDO|UNDO|GLOBOK|RANGE
	"j!"
	"join-exact-lines-til"		!FEWNAMES
	<join together lines in the region without whitespace adjustment>
operlinedel	OPER|REDO|UNDO|GLOBOK|RANGE|OPTREG
	"delete-lines-til"		!FEWNAMES
	"d"
	'^X-d'
	<delete lines covered by the region>
operfilter	OPER|REDO|UNDO|EXRCOK|RANGE|NAMEDFS|DFLNONE|VI_NL OPT_SHELL
	"filter-til"			!FEWNAMES
	"!"
	'!'
	<pipe the text in the region through an external filter command>
operformat	OPER|REDO|UNDO|RANGE	OPT_FORMAT
	"format-til"			!FEWNAMES
	'^A-f'
	'^A-j'
	<format (rejustify) the text in the region>
operflip	OPER|REDO|UNDO|GLOBOK|RANGE
	"flip-til"			!FEWNAMES
	"~"
	'^A-~'
	<exchange upper and lowercase on characters in the region>
# FIXME: RANGE is not done perhaps should be...
operglobals	BANG|EXTRA|DFLALL
	"global"
	"g"
	"v!"
	<perform command on all lines containing the given pattern>
# FIXME: RANGE is not done perhaps should be...
opervglobals	BANG|EXTRA|DFLALL
	"inverse-global"
	"vglobal"
	"g!"
	"v"
	<perform command on all lines not containing the given pattern>
operlower	OPER|REDO|UNDO|GLOBOK|RANGE
	"lower-til"			!FEWNAMES
	"L"
	'^A-l'
	<convert to lowercase all characters in the region>
operlist	OPER|GLOBOK|RANGE
	"list-lines-til"		!FEWNAMES
	"l"
	<show lines, making tabs and newlines visible>
opernumber	OPER|GLOBOK|RANGE
	"number-lines-til"		!FEWNAMES
	"nu"
	"#"
	<show lines with their line numbers>
operprint	OPER|GLOBOK|RANGE
	"print-lines-til"		!FEWNAMES
	"p"
	<show lines>
operpprint	OPER|GLOBOK|RANGE
	"print-prefixed-lines-til"	!FEWNAMES
	"pp"
	<show lines with line numbers>
operselect	OPER|GLOBOK|RANGE	OPT_SELECTIONS
	"select-til"			!FEWNAMES
	'^A-s'
	<select (and yank) the text in the region>
operupper	OPER|REDO|UNDO|GLOBOK|RANGE
	"upper-til"			!FEWNAMES
	"U"
	'^A-u'
	<convert to uppercase all characters in the region>
operlshift	OPER|REDO|UNDO|GLOBOK|RANGE
	"shift-left-til"		!FEWNAMES
	"<"
	'<'
	<shift lines in the region left by one \"shiftwidth\">
operrshift	OPER|REDO|UNDO|GLOBOK|RANGE
	"shift-right-til"		!FEWNAMES
	">"
	'>'
	<shift lines in the region right by one \"shiftwidth\">
opersubst	OPER|REDO|UNDO|GLOBOK|RANGE|EXTRA
	"substitute-til"		!FEWNAMES
	"s"
	<perform a text substitution over the region>
opersubstall	OPER|REDO|UNDO|GLOBOK|RANGE|EXTRA
	"substitute-all-til"	!FEWNAMES
	'^X-s'
	<perform an all-occurrence text substitution over the region>
opertrim	REDO|UNDO|GLOBOK|UNDO|RANGE
	"trim-lines-til"		!FEWNAMES
	"trim"
	'^A-t'
	<trim trailing whitespace from lines in the region>
operblank       REDO|UNDO|GLOBOK|UNDO|RANGE
	"blank-region"
	"blank"
	'^A-b'
	<replace the region with whitespace>
operyank	OPER
	"yank-til"			!FEWNAMES
	'y'
	<get the region into the given named or unnamed register>
operlineyank	OPER|RANGE|OPTREG|NOMOVE
	"yank-lines-til"		!FEWNAMES
	"y"
	'^X-y'
	<get lines covered by region into given named or unnamed register>
opersubstagain	OPER|REDO|UNDO|GLOBOK|RANGE|EXTRA
	"substitute-again-til"		!FEWNAMES
	"&"
	'^A-&'
	<redo the previous text substitution over the region>
opertransf	OPER|RANGE|EXTRA
	"transfer-til"
	"t"
	<copy text in the region>
operwrite	OPER|RANGE|BANG|FILE1|DFLALL|NOMOVE
	"w"
	"w!"
	"W"
	"write-til"			!FEWNAMES
	'^W'
	<write from region to the given file.  whole buffer by default>
oper_wrenc	OPER|RANGE|BANG|FILE1|DFLALL|NOMOVE		OPT_SELECTIONS
	"write-encoded-til"
	<write attributed text from region to file.  whole buffer by default>
overwritechars	REDO|UNDO
	"overwrite-chars"		!FEWNAMES
	'R'
	<replace text while inserting, character by character>
overwstring	REDO|UNDO		!SMALLER
	"overwrite-string"
	<replace text at the cursor by the given string>
overwnumber	REDO|UNDO		!SMALLER
	"overwrite-number"
	<replace text at the cursor by the given character-number>
onlywind	NONE
	"delete-other-windows"		!FEWNAMES
	'^O'
	'^X-1'
	<eliminate all windows except the current>
perl		OPER|REDO|UNDO|GLOBOK|RANGE|DFLNONE|VIEWOK	OPT_PERL
	"perl"
	<run a perl command>
perldo		OPER|REDO|UNDO|GLOBOK|RANGE|EXTRA		OPT_PERL
	"perldo-til"
	"perldo"
	<run a perl command on each line in a range>
popd		NONE			OPT_SHELL
	"popd"
	<implements bash's popd semantics (i.e., cd `pop dirstack`)>
poswind		GOAL
	"position-window"		!FEWNAMES
	'z'
	<reframe with cursor at center (.,M,m), top (CR,H,t), or bottom (-,L,b)>
prevbuffer	BANG|NAMEDFS		!SMALLER
	"P"
	"previous-buffer"		!FEWNAMES
	<switch to previous buffer (or the most-recently-visited, if \"autobuffer\" on>
prevwind	NONE
	"previous-window"		!FEWNAMES
	'^X-O'
	<move to the previous window.  repeat with CNT>
pushd		NONE			OPT_SHELL
	"pushd"
	<implements bash's pushd semantics (i.e., cd \"dir\", push \"dir\" on dirstack)>
capturecmd	NONE			OPT_SHELL
	"capture-command"		!FEWNAMES
	"pipe-command"			!FEWNAMES
	'^X-!'
	<run a command, capturing its output in the [Output] buffer>
putafter	REDO|UNDO
	"put-after"			!FEWNAMES
	'p'
	<insert CNT copies of (un)named register, after cursor>
putbefore	REDO|UNDO
	"put-before"			!FEWNAMES
	'P'
	<insert CNT copies of (un)named register, before cursor>
pwd		NONE			OPT_SHELL
	"pwd"
	"print-directory"
	<show current directory name>
quit		BANG
	"q"
	"Q"
	"exit"
	"quit"
	'Q'
	'^X-^C'
	<leave the editor, if there are no modified buffers>
quithard	NONE
	"quit-without-save"
	"q!"
	"Q!"
	<leave the editor, regardless of modified buffers>
quickexit	BANG|VI_NL
	"x"
	"x!"
	"xit"
	"wwq"
	"write-changed-buffers-and-quit" !FEWNAMES
	"quick-exit"			!FEWNAMES
	<leave the editor, writing modified buffers as needed>
quote_next	REDO|UNDO
	"quote-next-character"		!FEWNAMES
	<insert the next character literally, CNT times>
vile_refresh	NONE
	"clear-and-redraw"		!FEWNAMES
	'^L'
	<redraw the screen>
remove_mode	NONE			OPT_MAJORMODE
	"remove-majormode"
	"remove-mode"
	<delete the definition of a major mode>
remove_submode	NONE			OPT_MAJORMODE
	"remove-submode"
	<delete the special definition of a submode from a major mode>
remove_scheme	NONE			OPT_COLOR_SCHEMES
	"remove-scheme"
	<delete the given color scheme>
reposition	GOAL			!SMALLER
	"redraw-display"
	<redraw, cursor at center, or CNT'th line, or CNT'th from end if neg>
rep_csrch	MOTION|MINIBUF
	"repeat-char-scan"		!FEWNAMES
	';'
	<repeat the last forward character scan>
replacechar	REDO|UNDO|MINIBUF
	"replace-character"		!FEWNAMES
	'r'
	<replace CNT characters at the cursor with the given character>
respawn		NONE			OPT_SHELL
	"!!"
	"rerun-shell-command"		!FEWNAMES
	<rerun the previously entered shell command>
resize		NONE			!SMALLER
	"resize-window"
	<change the current window to CNT lines>
restwnd		NONE			!SMALLER
	"restore-window"
	<return to window saved with \"save-window\">
reset_majormode	NONE			OPT_MAJORMODE
	"reset-majormode"
	<recompute $majormode for the current buffer>
rev_csrch	MOTION|MINIBUF
	"reverse-char-scan"		!FEWNAMES
	','
	<repeat the last backward character scan>
risearch	NONE			OPT_ISRCH
	"reverse-incremental-search"	!FEWNAMES
	'^X-R'
	<search backwards for a pattern entered character by character>
revsearch	ABSM|MOTION
	"reverse-search"		!FEWNAMES
	'N'
	<search for previous pattern in opposite direction from before>
sel_all		NONE			OPT_SELECTIONS&&OPT_SEL_YANK
	"select-all"	!FEWNAMES
	<select all text in current buffer and yank to unnamed buffer>
sel_clear	NONE			OPT_SELECTIONS
	"selection-clear"	!FEWNAMES
	<clear text selection's highlight attributes>
sel_motion	ABSM|MOTION		OPT_SELECTIONS
	"selection"
	'^S'
	'^A-S'
	<move to selection.  if used with operator, region is the selection>
scrforwsearch	ABSM|MOTION
	"screen-search-forward"		!FEWNAMES
	'^X-/'
	<search forward for $identifier pattern under cursor>
scrbacksearch	ABSM|MOTION
	"screen-search-reverse"		!FEWNAMES
	'^X-?'
	<search backwards for $identifier pattern under cursor>
scrsearchpat	NONE
	"screen-search-pattern-grab"	!FEWNAMES
	'^A-/'
	<set search pattern to $identifier pattern under cursor>
set_charclass	NONE			OPT_SHOW_CTYPE
	"set-char-class"
	<add characters to class, given keyword and regular expression>
unset_charclass	NONE			OPT_SHOW_CTYPE
	"delete-char-class"		!FEWNAMES
	"unset-char-class"
	<remove characters from class, given keyword and regular expression>
reset_charclasses NONE			OPT_SHOW_CTYPE
	"reset-char-classes"
	<remove user-defined character class changes>
set_rs_crlf	NONE			OPT_DOSFILES
	"set-dos-mode"
	"set-rs-crlf"
	<force a \"dos\"-style buffer: trim CR characters, and set \"dos-mode\">
set_rs_lf	NONE			OPT_DOSFILES
	"set-unix-mode"
	"set-rs-lf"
	<force a \"unix\"-style buffer: trim CR characters, and unset \"dos-mode\">
set_rs_cr	NONE			OPT_DOSFILES
	"set-rs-cr"
	<force a \"mac\"-style buffer: convert LF to CR, unset \"dos-mode\">
settab		NONE
	"handle-tab"			!FEWNAMES
	"set-tab"
	'^X-t'
	<set the tabstop setting to CNT.  same as \"set tabstop=NN\">
set_termchrs	NONE			OPT_REBIND&&OPT_TERMCHRS
	"set-terminal"
	<change the value of a terminal special character>
set_window	NONE			!SMALLER
	"setw"
	"set-window"
	<set the current window to a specific buffer>
show_termchrs	NONE			OPT_REBIND&&OPT_TERMCHRS
	"list-terminal-chars"		!FEWNAMES
	"show-terminal-chars"
	<show the values of the terminal special characters>
show_undostk	NONE			!SMALLER
	"list-undo-stack"		!FEWNAMES
	"show-undo-stack"
	<show the contents of the undo-stack>
spawncli	NONE			OPT_SHELL
	"sh"
	"shell"
	"interactive-shell"		!FEWNAMES
	<start a sub-shell in which to run commands>
savewnd		NONE			!SMALLER
	"save-window"
	<mark a window for later return with \"restore-window\">
scrnextup	GOAL
	"scroll-next-window-up"		!FEWNAMES
	'^A-^U'
	<move next window up by CNT half screens>
scrnextdw	GOAL
	"scroll-next-window-down"	!FEWNAMES
	'^A-^D'
	<move next window down by CNT half screens>
setfillcol	NONE
	"set-fill-column"
	'^X-f'
	<set the fillcol setting to CNT.  same as \"set fillcol=NN\">
set_envvar	NONE			OPT_SHELL&&defined(HAVE_PUTENV)
	"setenv"
	"set-environment-variable"
	<set and export a process environment variable>
show_extra_colors	NONE		OPT_EXTRA_COLOR
	"list-extra-colors"		!FEWNAMES
	"show-extra-colors"
	<show extra colors, e.g., for modeline>
set_extra_colors	NONE		OPT_EXTRA_COLOR
	"setxcolors"
	"set-extra-colors"
	<set extra colors, e.g., for modeline>
multimotion	MOTION			OPT_SELECTIONS
	"quoted-motion"			!FEWNAMES
	'q'
	'FN-s'				KEY_Select
	<start (and end) a selection using multiple motions, CNT is type (1) >
multimotionfullline	MOTION		OPT_SELECTIONS
	"quoted-fullline-motion"	!FEWNAMES
	<start (and end) a full-line selection using multiple motions (2) >
multimotionrectangle	MOTION		OPT_SELECTIONS
	"quoted-rectangular-motion"	!FEWNAMES
	'^A-q'
	<start (and end) a rectangular selection using multiple motions (3) >
vl_setkey	NONE			OPT_ENCRYPT
	"set-crypt-key"
	"X"
	'^X-X'
	<set the encryption key on the current buffer>
setlocmode	EXRCOK|EXTRA
	"setl"
	"set-mode"			!FEWNAMES
	<change the current buffer's local value of a mode setting>
setglobmode	NONE
	"se"
	"set"
	"setg"
	"set-global-mode"
	<change the global value of a mode setting>
setnmmark	FROM|EXTRA|NOMOVE
	"set-named-mark"		!FEWNAMES
	"k"
	'm'
	<set the given named mark to the current cursor location>
setvar		NONE			OPT_EVAL
	"setv"
	"set-variable"
	<set the given vile variable to a value>
unsetvar	NONE			OPT_EVAL
	"unsetv"
	"unset-variable"
	<reset the given vile variable to an empty string or default-value>
showcpos	NONE
	"position"			!FEWNAMES
	'^G'
	'^X-='
	<report information about current buffer and character>
listmodes	NONE
	"modes"
	"show-modes"
	"list-modes"			!FEWNAMES
	"setall"
	"setgall"
	"gmodes"
	"show-global-modes"
	"showmodes"
	"showgmodes"
	<report values of all mode settings>
list_lmodes	NONE
	"list-local-modes"		!FEWNAMES
	"setlall"
	"lmodes"
	"show-local-modes"
	"showlmodes"
	<report values of local mode settings>
list_majormodes	NONE			OPT_MAJORMODE
	"list-majormodes"		!FEWNAMES
	"show-majormodes"
	<report values of all majormode settings (use CNT for verbose listing)>
listvars	NONE			OPT_SHOW_EVAL
	"show-variables"
	"list-variables"		!FEWNAMES
	"showvars"			!FEWNAMES
	<report values of all variables, built-in and user>
list_dlr_vars	NONE			OPT_SHOW_EVAL
	"show-system-variables"
	"list-$variables"		!FEWNAMES
	"list-system-variables"		!FEWNAMES
	<report values of all user variables>
list_user_vars	NONE			OPT_SHOW_EVAL
	"list-user-variables"		!FEWNAMES
	"show-user-variables"
	<report values of all user variables>
showversion	EXRCOK
	"version"
	<report version information for the editor>
showmarks	NONE			OPT_SHOW_MARKS
	"marks"
	"list-marks"			!FEWNAMES
	"show-marks"
	<show named marks for the current buffer>
showmemory	NONE			SYS_MSDOS&&(CC_TURBO||CC_WATCOM||CC_DJGPP)
	"memory"
	<report on available memory>
showtagstack	NONE			OPT_SHOW_TAGS
	"tags"				!FEWNAMES
	"tagstack"
	"list-tagstack"			!FEWNAMES
	"show-tagstack"
	<show the stack of successive tag references>
shrinkwind	GOAL
	"shrink-window"			!FEWNAMES
	'v'
	<decrease the size of the current window by CNT lines>
vl_source	EXRCOK|NAMEDF
	"exsource"
	<source a file of ex commands>
vl_spawn	NONE			OPT_SHELL
	"shell-command"			!FEWNAMES
	<run a shell command>
poundc_func	NONE
	"function-prefix"
	'#'
	<prefix used to represent commands normally bound to function keys>
splitwind	NONE
	"split-current-window"		!FEWNAMES
	'^X-2'
	<split the window in half; CNT of 1 or 2 chooses which becomes current>
store_macro	NONE
	"store-macro"
	<store script text into CNT'th macro, up to line starting with ~endm>
store_proc	EXRCOK|EXTRA		OPT_PROCEDURES
	"store-procedure"
	<store script text into given named stored-procedure; give CNT for store-macro CNT>
store_op	EXRCOK|EXTRA		OPT_PROCEDURES
	"store-operator"
	<store script text into given named user-operator>
subst_again	REDO|UNDO|GLOBOK
	"substitute-again"		!FEWNAMES
	'&'
	<redo the previous text substitution>
syncfile	NONE			SYS_WINNT&&defined(VILE_OLE)
	"sync-file"
	<synchronize the current buffer's file in DevStudio's editor>
swapcbrdkeys	NONE			SYS_WINNT
	"swap-clipboard-keys"
	<swap clipboard insert key mappings>
togglelistbuffers	NONE
	"*"
	"toggle-buffer-list"		!FEWNAMES
	'*'
	<show or hide the buffer list. give CNT to force showing all>
twiddle		REDO|UNDO|MINIBUF	!SMALLER
	"transpose-characters"		!FEWNAMES
	<exchange the two characters under and to the left of the cursor>
unbindkey	NONE			OPT_REBIND
	"unbind-key"
	<break the binding between a keystroke and a function>
unbind_i_key	NONE			OPT_REBIND
	"unbind-insmode-key"
	<break the binding between a keystroke and a function in insert-mode>
unbind_c_key	NONE			OPT_REBIND
	"unbind-cmdmode-key"
	<break the binding between a keystroke and a function in command-mode>
unbind_s_key	NONE			OPT_REBIND
	"unbind-selmode-key"
	<break the binding between a keystroke and a function in selection-mode>
undo		NONE
	"undo-change"			!FEWNAMES
	'u'
	<undo the last change made to a buffer;  repeat to reapply the change>
inf_undo	NONE
	"repeat-undo-change"			!FEWNAMES
	<undo/redo more changes, continuing in \"direction\" of last undo/redo>
backundo	NONE
	"undo-changes-backward"		!FEWNAMES
	'^X-u'
	<undo changes made to a buffer;  repeat to undo previous changes>
forwredo	NONE
	"redo-changes-forward"		!FEWNAMES
	'^X-r'
	<redo changes made to a buffer, after they have been undone>
unabbr		EXRCOK|BANG|EXTRA
	"unabbreviate"
	<delete an abbreviation>
reptc_func	NONE
	"universal-argument"		!FEWNAMES
	'K'
	<supply a numeric CNT to a command. sets CNT to 4, 16, 64, 256, etc.>
unimpl		NONE
	"unimplemented-command"		!FEWNAMES
	<place holder for the todo list>
unmark		NONE
	"unmark-buffer"
	<clear the \"modified\" status of a buffer>
unmap		EXRCOK|BANG|EXTRA
	"unmap"
	<delete a command-mode mapping>
unmap_bang	EXRCOK|EXTRA
	"unmap!"
	<delete an insert-mode mapping>
unmap_system	EXRCOK|EXTRA
	"unmap-system-chars"
	<delete a system function-key mapping>
untagpop	NONE			OPT_TAGS
	"tag-pop"			!FEWNAMES
	"pop"
	'^X-^]'
	'^T'
	<restore cursor and buffer to location before last tag lookup>
upscreen	NONE			!SMALLER
	"update-screen"
	<force the screen to be updated; flushes all pending output>
usebuffer	NONE
	"b"
	"buffer"
	"select-buffer"			!FEWNAMES
	<switch to the given buffer; will not look for a file by that name>
edit_buffer	NONE
	"B"
	"edit-buffer"			!FEWNAMES
	<make or switch to the given buffer>
popup_buffer	NONE			!SMALLER
	"popup-buffer"
	"open-window"			!FEWNAMES
	<open window for the given buffer>
popdown_buffer	NONE			!SMALLER
	"popdown-buffer"
	"close-windows"			!FEWNAMES
	<close all windows for the given buffer>
usekreg		REDO|USEREG
	"use-register"			!FEWNAMES
	'"'
	<name a register, for use with a following command which references it>
userbeep	NONE			!SMALLER
	"beep"
	'FN-b'				KEY_BackTab
	<force the terminal to ring (or flash, if \"set flash\" is active)>
visual		NONE
	"visual"
	<switch from non-existent exile mode back to visual mode.  unimplemented>
vglobals	NONE
	"ovglobals"			VILE_NEVER
viewfile	NONE
	"view-file"
	<bring given file or existing buffer into window, mark it \"view-only\">
vl_dirs		NONE			OPT_SHELL
	"dirs"
	<list internal directory stack in scratch buffer>
vl_dirs_add 	NONE			OPT_SHELL
	"dirs-add"
	<add a dir to DirStack[top - 1]; cwd is unaffected>
vl_dirs_clear	NONE			OPT_SHELL
	"dirs-clear"
	<clear internal directory stack; cwd is unaffected>
waitfile	NONE			SYS_WINNT&&defined(VILE_OLE)
	"wait-file"
	<wait for file to grow larger than 0 bytes, timeout specified as arg>
which_exec	NONE			OPT_SHOW_WHICH
	"which-exec"
	<show which file would be exec'd from $PATH + $libdir-path, CNT for popup>
which_source	NONE			OPT_SHOW_WHICH
	"which-source"
	<show which file would be source'd from $startup-path, CNT for popup>
purge_recent_files	NONE		SYS_WINNT
	"purge-recent-files"
	<purge winvile's recent file list>
purge_recent_folders	NONE	SYS_WINNT
	"purge-recent-folders"
	<purge winvile's recent folder list>
wincd	      	NONE			SYS_WINNT
	"wincd"
	<graphical CD>
winopen_nocd	NONE			SYS_WINNT
	"winopen-nocd"
	<launch Windows common dialog box to open file(s), CWD is unmodified>
winopen      	NONE			SYS_WINNT
	"winopen"
	<launch Windows common dialog box to open file(s), CWD changes as side effect>
winpg_setup    	NONE			SYS_WINNT&&DISP_NTWIN
	"winpage-setup"
	<launch Windows common page setup dialog>
winprint      	NONE			SYS_WINNT&&DISP_NTWIN
	"winprint"
	<print current buffer or selection>
winsave_nocd	NONE			SYS_WINNT
	"winsave-nocd"
	<launch Windows common dialog box to save current buffer, CWD is unmodified>
winsave      	NONE			SYS_WINNT
	"winsave"
	<launch Windows common dialog box to save current buffer, CWD changes as side effect>
ResetRGBPalette	NONE			SYS_WINNT&&DISP_NTWIN
	"reset-rgb-palette"
	<reset palette (see set-rgb-palette)>
SetRGBPalette	NONE			SYS_WINNT&&DISP_NTWIN
	"set-rgb-palette"
	<set palette with parameters colornum red green blue>
wordcount	RANGE			OPT_WORDCOUNT
	"count-words"
	<count words, lines, and chars in the region>
writeallbuffers	BANG|VI_NL
	"wall"
	"wall!"
	"write-all-buffers"		!FEWNAMES
	<attempt to write all buffers whether or not marked \"modified\">
writeallchanged	BANG|VI_NL
	"ww"
	"ww!"
	"write-changed-buffers"		!FEWNAMES
	<attempt to write any buffers which are marked \"modified\">
writequit	VI_NL
	"wq"
	"wq!"
	"Wq"
	"WQ"
	"write-file-and-quit"		!FEWNAMES
	<write the current buffer, and quit if no other buffers are modified>
wrapword	REDO|UNDO		!SMALLER
	"wrap-word"
	<split line in two at first preceding word break.  give CNT to trim blanks.>
writemsg	NONE			!SMALLER
	"write-message"
	<put a message on the message line>
yankline	NONE
	"yank-line"			!FEWNAMES
	'Y'
	<get the current line into the given named or unnamed register>
mouse_motion	ABSM|MOTION		OPT_XTERM||DISP_X11
	'FN-M'				KEY_Mouse
	<dummy command to support mouse movements internally>
copy_to_clipboard NONE			DISP_X11
	"copy-to-clipboard"
	<copies the currently highlighted selection to the clipboard buffer>
paste_from_clipboard REDO|UNDO		DISP_X11
	"paste-from-clipboard"
	<pastes the contents of the cut buffer>
paste_from_primary REDO|UNDO		DISP_X11
	"paste-from-primary"
	<pastes the contents of the primary selection>
xterm_mouse_t	NONE			(OPT_XTERM>=3)
	'FN-t'				KEY_text
	<dummy command to support xterm mouse operation>
xterm_mouse_T	NONE			(OPT_XTERM>=3)
	'FN-T'				KEY_textInvalid
	<dummy command to support xterm mouse operation>
zzquit		BANG|VI_NL
	'Z'
	"stuttered-write-all-and-quit"	!FEWNAMES
	<if repeated, leave the editor, writing modified buffers as needed>
#
# --------------------------- Win32 Key Bindings -----------------------
#
# Key bindings from here to the end of file use the following special
# Win32 keyboard modifiers:  SHIFT, CTRL (control key), and ALT.  To
# date, only the following keys may be bound to these modifiers:
#
#     Insert   '6'
#
# Why, you ask?  Good question.  I actually wanted to extend vile to
# permit the user to bind any QWERTY key with the aforementioned modifiers
# and truly open up the "map space" for Win32 users.  However, after reading
# Chapter 5 of _Programming Windows 95_ (by Charles Petzold), it became
# clear to me that adding the necessary infrastructre (in ntconio.c and
# ntwinio.c) would most likely have a very negative impact on non-English
# users (i.e., most of the dead key support for diacritic marks would be
# lost if ntconio.c and ntwinio.c began translating the full spectrum of
# Windows KEYDOWN and CHAR messages).  Consequently, it's much safer to
# add special modifier bindings (e.g., Alt+Insert), on a case-by-case basis
# to keys that probably won't be used:
#
# a) in future winvile menus, and
# b) as diacritic generating keys.
#
# If you want to add additional bindings, say Alt+Delete, you'll need to
# modify (at least):
#
#   bind.c   (to properly decode the Delete key)
#   mktbls.c (to accept Delete when parsing W32KY specifications in this file)
#
# Other bindings may require modifications to the keyxlate table in
# ntconio.c and ntwinio.c .  In general, I wouldn't add anymore special
# Win32 bindings than necessary and I'd definitely read the aforementioned
# chapter in Petzold's book before making a lot of changes to vile.
#
#                               Notes
#                               -----
# 1) The key "conditional" (which optionally follows the key binding), must
#    be hardwired as W32KY (no exceptions).
#
# 2) I haven't made any attempt to permit vile users to map/bind the
#    special modifiers (for all of the reasons listed above).  Basically,
#    this is a one-way feature (i.e., the bindings are applied only at
#    compile time and only via this file).
#
# - Clark Morgan  July, 1998
#
cbrdcpy_unnamed NONE			SYS_WINNT
	"copy-unnamed-reg-to-clipboard"
	'ALT+INSERT'			W32KY
	<copies the unnamed register selection to the windows clipboard>
cbrdcut		REDO|UNDO		SYS_WINNT
	"cut-to-clipboard"
	'SHIFT+DELETE'			W32KY
	<cut the current selection to the unnamed register and windows clipboard>
cbrdpaste	REDO|UNDO		SYS_WINNT
	"paste-from-clipboard"
	'SHIFT+INSERT'			W32KY
	<paste the windows clipboard contents>
opercbrdcpy	OPER|RANGE|NOMOVE	SYS_WINNT
	"copy-to-clipboard-til"
	'CTRL+INSERT'			W32KY
	<copies the specified region to the windows clipboard>
windeltxtsel	REDO|UNDO		SYS_WINNT
	"delete-text-selection"
	'ALT+DELETE'			W32KY
	<delete the current text selection to the unnamed register>
