use utf8;
{
key => {
"\e"=> "normal mode",
'~' => "case toggle",
'!' => "filt<>er lines",
'@' => "play macro",
'#' => "rev. find word",
'$' => "eol",
'%' => "goto match",
'^' => '"soft" bol',
'&' => ":s rep<>eat",
'*' => "find word",
'(' => "begin senten<>ce",
')' => "end senten<>ce",
'_' => '"soft" bol down',
'+' => "next line",
'`' => "goto mark",
'0' => '"hard" bol',
'^^'=> "edit alt. file",
'-' => "prev line",
'=' => "re<>ind<>ent",
'?' => "find rev.",
';' => "repeat t/f/T/F",
':' => "ex cmd line",
"'" => "goto mark bol",
'"' => "use reg<>ister",
'\\' => "reser<>ved",
'^\\' => "to mode/<>ext<>ens<>ion<>s",
',' => "reverse t/T/f/F",
'<' => "un<>ind<>ent",
'.' => "repeat last cmd",
'>' => "ind<>ent",
'/' => "find",
'[' => "move back<>ward<>s",
'{' => "begin parag.",
']' => "move forw<>ard",
'}' => "end parag.",
'^]'=> "go to tag",
'|' => "goto (1st) col",
'a' => "app<>end",
'A' => "app<>end to eol",
'^a'=> "incr<>ement\nAdd one",
'b' => "prev word\nBack",
'B' => 'prev word',
'^b'=> "page up",
'c' => "chan<>ge",
'C' => "chan<>ge to eol",
'^c'=> "abort",
'd' => "del<>ete",
'D' => "delete to eol",
'^d'=> "scroll down",
'e' => "end word",
'E' => 'end word',
'^e'=> "window down\nExtra line",
'f' => "fwd to char",
'F' => "back<>wd to char",
'^f'=> "page down\npage Forward",
'g' => "extra cmds",
'G' => "eof/<>goto ln",
'^g'=> ":file (info)",
'h' => "",
'H' => "screen top\nHome row",
'i' => "insert mode",
'I' => "insert at bol",
'^i'=> "jump to newer\nIncrease position",
'j' => "",
'J' => "join lines",
'k' => "",
'K' => "help\nlooKup Keyword",
'l' => "",
'L' => "screen bottom\nLowermost Line",
'^l'=> "redraw",
'm' => "set mark",
'M' => "screen mid<>dle",
'n' => "next find",
'N' => "prev find",
'o' => "line below\nOpen",
'O' => "line above",
'^o'=> "jump to older",
'p' => "paste after",
'P' => "paste before",
'q' => "rec<>ord macro\nQueue seQuence",
'Q' => "ex mode",
'^q'=> "(xon)\nQome back",
'r' => "repl<>ace char",
'R' => "repl<>ace mode",
'^r'=> "redo",
's' => "subst char",
'S' => "subst line",
'^s'=> "(xoff)\nStop",
't' => "till char",
'T' => "back till char",
'^t'=> "back tag", # backtrag :P
'u' => "undo",
'U' => "undo line",
'^u'=> "scroll up",
'v' => "visual mode",
'V' => "visual lines",
'^v'=> "visual block",
'w' => "next word",
'W' => 'next word',
'^w'=> "win<>dow cmds",
'x' => "delete char",
'X' => "back<>space",
'^x'=> "subs<>tract",
'y' => "yank\n(copy)",
'Y' => "yank line",
'^y'=> "window up\nYield",
'z' => "extra cmds",
'Z' => "quit",
'^z'=> ":sus<>pend\nzzz (as in sleep)",
'g~' => "case toggl<>e",
'g@' => "oper<>at<>or<>func",
'g#' => "rev. find string",
'g$' => "virt<>ual eol",
'g^' => qq'"soft" bol v<>irt<>ual',
'g&' => ":s rep<>eat glob<>al<>ly\nGlobal substitute",
'g*' => "find string",
'g_' => qq'"soft" eol',
'g+' => "later undo",
'g`' => "to mark keepj<>umps",
'g8' => "char hex val<>ue<>s",
'g0' => "virtual bol",
'g-' => "earlier undo",
"g\e"=> "normal mode",
'g]' => "go to tselect",
'g^]'=> "go to tjump",
'g;' => "to prev change pos",
"g'" => "to mark keepj<>umps",
'g<' => "see prev cmd output",
'g?' => "rot13 encode",
'g,' => "to next change pos",
'ga' => "char value\nGet Ascii value",
'g^a'=> "mem usage stats",
'gd' => "local declar<>ation",
'gD' => "global declar<>ation",
'ge' => "back to word end",
'gE' => qq'back to word end',
'gf' => "edit file at cur<>sor\nGoto File",
'gF' => "edit file + jump",
'gg' => "first line",
'g^g'=> "cur<>sor pos info",
'gh' => "select mode\nGet Highlighted",
'gH' => "select lines\nGet Highlighted",
'g^h'=> "select block\nGet Highlighted",
'gi' => "insert at last pos",
'gI' => "insert at soft bol",
'gj' => " screen",
'gJ' => "join leave spac<>ing",
'gk' => " screen",
'gm' => "cen<>ter screen",
'go' => ":goto (byte)",
'gp' => "paste still",
'gP' => "paste before still",
'gq' => "for<>mat",
'gQ' => "ex mode manual :",
'gr' => "virt. repl<>ace char",
'gR' => "virt. repl<>ace mode",
'gs' => "sleep\nGo to Sleep",
'gt' => "next tab\nGoto Tab",
'gT' => "tab back",
'gu' => "lower<>case",
'gU' => "up<>per<>case",
'gv' => "prev<>ious highl<>ight\nprecedinG Visual",
'gV' => "avoid resel<>ect<>ion",
'gw' => "for<>mat still",
'gx' => "Netrw<>BrowseX",
"Z\e"=> "normal mode",
'ZQ' => " :q! (force)",
'ZZ' => " :wq (write)",
'z^' => "page above",
'z+' => "page below",
'z-' => "line at bottom bol\ndon't (-) see any further",
'z=' => "sug<>gest spell<>ing",
'z.' => "line at center bol",
"z\e"=> "normal mode",
'za' => "toggle fold",
'zA' => "toggle fold rec<>urs<>ive<>ly",
'zb' => "line at bot. bol",
'zc' => "close fold",
'zC' => "close folds rec<>curs<>ive<>ly",
'zd' => "delete fold",
'zD' => "delete folds rec<>urs<>ive",
'ze' => "cursor at right side",
'zE' => "elimi<>nate f<>olds",
'zf' => "create fold",
'zF' => "fold lines",
'zg' => "add spell<>ing\nGood word",
'zG' => "temp spell<>ing",
'zh' => "scroll ",
'zH' => "scroll half scr<>een",
'zi' => "toggle all folds",
'zj' => "next fold start",
'zk' => "prev fold end",
'zl' => "scroll ",
'zL' => "scroll half scr<>een",
'z^m'=> "line at top bol",
'zm' => "fold more",
'zM' => "close all folds",
'zn' => "fold none",
'zN' => "fold norm<>al",
'zo' => "open fold",
'zO' => "open folds rec<>urs<>ive<>ly",
'zr' => "reduce folding",
'zR' => "open all folds",
'zs' => "cursor at left side",
'zt' => "line at top",
'zu' => "undo spell<>ing",
'zv' => "unfold cursor line",
'zw' => "add missp<>ell<>ing\nWrong word",
'zW' => "temp missp<>ell<>ing",
'zx' => "update folds",
'zX' => "re<>apply f<>olds",
'zz' => "line at center\nZee Zenter (with a funny accent)",
"[`" => "previous lc mark",
'[#' => "previous open #if<>/#else",
'[(' => "previous open (",
'[/' => "start of C com<>m<>ent",
'[{' => "previous open {",
'[[' => "section back<>ward<>s",
"[\e"=> "normal mode",
'[]' => qq'section back<>ward<>s',
'[c' => "start of change backw<>ards",
'[d' => "define line",
'[D' => "defin<>ition",
'[^d'=> "to defin<>it<>ion",
'[i' => "first occur<>renc<>e line",
'[I' => "first occur<>renc<>e",
'[^i'=> "to first occur<>renc<>e",
'[m' => "start of funct<>ion",
'[p' => "P reind<>ent<>ed",
'[P' => "[p",
'[s' => "last missp<>ell<>ing",
'[S' => "last bad word",
'[z' => "start of open fold",
"]`" => "next lc mark",
']#' => "next open #endif<>/#else",
'])' => "next open )",
']/' => "end of C com<>m<>ent",
'][' => qq'section forw<>ard',
"]\e"=> "normal mode",
']]' => "section forw<>ard",
']}' => "next open }",
']c' => "start of change forw<>ards",
']d' => "next define line",
']D' => "next define",
']^d'=> "to next define",
']i' => "next occur<>renc<>e line",
']I' => "next occur<>renc<>e",
']^i'=> "to occur<>renc<>e",
']m' => "end of funct<>ion",
']p' => "p reind<>ent<>ed",
']s' => "next missp<>ell<>ing",
']S' => "next bad word",
']z' => "end of open fold",
'^w<' => "width decr<>ease",
'^w>' => "width incr<>ease",
'^w^' => "split, edit alt file",
'^w_' => "set height",
'^w+' => "height incr<>ease",
'^w-' => "height decr<>ease",
'^w=' => "same height",
"^w\e"=> "normal mode",
'^w]' => "split, to tag",
'^w}' => "pre<>view tag",
'^w|' => "set width",
'^wb' => "go to bot<>tom",
'^wc' => ":close",
'^w^c'=> "abort",
'^wd' => "split, to def<>inition",
'^wf' => "split, file edit",
'^wF' => "^wf, jump to line",
'^wg' => "extra cmds",
'^wh' => "go left",
'^wH' => "move far left",
'^wi' => "split, to decl of id<>ent<>ifier",
'^wj' => "go down",
'^wJ' => "move to bottom",
'^wk' => "go up",
'^wK' => "move to top",
'^wl' => "go right",
'^wL' => "move far right",
'^wn' => "open new",
'^wo' => ":only current",
'^wp' => "go to prev<>ious",
'^wP' => "go to pre<>view",
'^wq' => ":quit current",
'^wr' => "rotate down<>ward<>s",
'^wR' => "rotate up<>ward<>s",
'^ws' => "split horiz<>ont<>al<>ly",
'^wt' => "go to top",
'^wv' => "split vert<>ic<>al<>ly",
'^ww' => "go to next\nWrap around",
'^wW' => "go above<>/left",
'^wx' => "ex<>chan<>ge",
'^wz' => "close pre<>view",
"^wg\e"=> "normal mode",
'^wg]' => "split, :ts<>elect",
'^wg}' => ":ptj<>ump to tag",
'^wg^]'=> "split, :tj<>ump",
'^wgf' => "file in tab",
'^wgF' => "^wgf, to line<>nr",
'v!' => "external filter",
'v:' => "cmd on range",
'v<' => "un<>indent",
'v=' => "re<>ind<>ent",
'v>' => "ind<>ent",
'v~' => "toggle case",
"v\e"=> "normal mode",
'v^]'=> "jump to tag",
'va' => "ex<>tend area",
'vA' => "ap<>pend to block", # block
'vc' => "repl<>ace area",
'vC' => "repl<>ace full lines", # like vS, but blocks are extended until eol
'v^c'=> "abort",
'vd' => "delete area",
'vD' => "delete lines",
'vg' => "extra cmds",
'v^g'=> "select mode",
'v^h'=> "back<>space", # delete in select mode, left otherwise
'vi' => "extend inner a<>r<>ea",
'vI' => "insert to block", # block
'vJ' => "join lines",
'vK' => "help sel<>ect<>ion",
'vo' => "to other corner",
'vO' => "to other side",
'v^o'=> "visual once", # select
'vp' => "repl<>ace w/ paste",
'vP' => "repl<>ace w/ paste",
'vr' => "fill up w/ ch<>ar",
'vS' => "repl<>ace lines",
'vu' => "lower<>case",
'vU' => "upper<>case",
'vv' => "char<>wise",
'vV' => "line<>wise",
'v^v'=> "block<>wise",
'vy' => "yank area",
'vY' => "yank lines",
"vg\e"=> "visual mode",
'vg?' => "rot13 encode",
'vgJ' => "join literal<>ly",
'vgq' => "for<>mat",
'vgw' => "for<>mat still",
"va'" => "quoted string",
'va<' => "<> block",
'va[' => "[] block",
"va\e"=> "visual mode",
'vab' => "() block",
'vaB' => "{} Block",
'vap' => "para<>graph",
'vas' => "senten<>ce",
'vat' => "xml tag block",
'vaw' => "word",
'vaW' => 'word',
#'c^a' => "complete", #todo
#'c^b' => "bol",
#'c^d' => "complete", #todo
#'c^e' => "eol",
#'c^j' => "execute cmd",
#'c^l' => "complete", #todo
#'c^n' => "complete", #todo
#'c^p' => "complete", #todo
#'c^r' => \'i^r', # and then some...
# ## "insert register",
#'c^y' => "selec<>tion to clip<>b<>oard",
'i^@' => "last insert",
'i^^' => "toggle :lmap usag<>e",
"i\e" => "normal mode",
'i^]' => "abbrev<>iate",
'i^_' => "toggle lang<>uage",
'i^a' => "insert prev<>ious",
'i^b' => "former i^_",
'i^c' => "abort, no abbr",
'i^d' => "un<>ind<>ent",
'i^e' => "ins char below",
'i^f' => "set indent<>ation",
'i^g' => "extra cmds",
'i^h' => "back<>space",
'i^i' => "tab",
'i^j' => "enter",
'i^k' => "di<>graph\nKey code",
'i^l' => "im leave ins mode",
'i^m' => "enter",
'i^n' => "find next keyword",
'i^o' => "exec<>ute cmd",
'i^p' => "find prev keyword",
'i^r' => "insert reg<>ister",
'i^t' => "indent",
'i^u' => "delete line",
'i^v' => "literal or ch<>ar<>cod<>e\nVerbatim or by Value",
'i^w' => "delete word back",
'i^x' => "ex<>pand mode",
'i^y' => "ins char above",
'i^z' => ":sus<>pend in im",
"i^g\e"=> "insert mode",
'i^gk' => " start col<>umn",
'i^gj' => " start col<>umn",
'i^gu' => "break undo seq<>uence",
# other i^g keys (even esc) are not recognized
"i^x\e" => "normal mode",
'i^x^]' => "tag comp<>l<>et<>e",
'i^x^d' => "def<>ine compl<>et<>e",
'i^x^e' => "window up",
'i^x^f' => "file comp<>l<>et<>e",
'i^x^i' => "ident comp<>l<>et<>e",
'i^x^k' => "dict comp<>l<>et<>e",
'i^x^l' => "line comp<>l<>et<>e",
'i^x^n' => "next comp<>l<>et<>e",
'i^x^o' => "omni comp<>l<>et<>e",
'i^x^p' => "prev comp<>l<>ete",
'i^x^s' => "spell sugg<>est",
'i^x^t' => "thes<>aur<>us compl<>et<>e",
'i^x^u' => "cus<>tom comp<>l<>et<>e",
'i^x^v' => "ex cmd compl<>et<>e",
'i^x^y' => "window down",
# XXX ex mode if you want to go completely wild
},
mode => {
'' => "normal mode",
g => "extended commands (g)",
Z => "quit commands",
z => "additional commands (z)",
'[' => "backward search commands ([)",
']' => "forward search commands (])",
'^w' => "window commands (ctrl-w)",
'^wg' => "extended window commands (ctrl-w g)",
v => "visual mode",
vg => "extended visual commands (v g)",
va => "text object selection (v a/i)",
# c => "command-line mode",
i => "insert mode",
'i^g' => "extended insert commands (i ctrl-g)",
'i^x' => "insert completion commands (i ctrl-x)",
},
flag => {
ci => ["info", "Info command: shows/does something without altering anything."],
pm => ["motion", "Moves the cursor, or defines the range for an operator ()."],
po => ["positioning", "Other movement (jumps, window (re)positioning)."],
co => ["command", "Direct action command."],
mi => ["ins mode", "Enters Insert or Replace mode."],
mo => ["mode", "Enters a different mode."],
mv => ["vis mode", "Enters Visual or Select mode."],
me => ["key cmd", "Additional key commands (click for overview)."],
arg => ["key", "Commands with a dot need a char argument afterwards."],
motion => ["key", "Requires a motion afterwards, operates between cursor and destination."],
'ext vim6' => ["vim", "Not in original Vi (assessment incomplete)."],
'ext new vim7' => ["vim7", "New in vim version 7.x."],
},
}