use utf8;
{
key => {
"\e"=> "normal mode",
'~' => "case toggle",
'!' => "filt$sign{_}er lines",
'@' => "play macro",
'#' => "rev. find word",
'$' => "eol",
'%' => "goto match",
'^' => '"soft" bol',
'&' => ":s rep$sign{_}eat",
'*' => "find word",
'(' => "begin senten$sign{_}ce",
')' => "end senten$sign{_}ce",
'_' => '"soft" bol down',
'+' => "next line",
'`' => "goto mark",
'0' => '"hard" bol',
'^^'=> "edit alt. file",
'-' => "prev line",
'=' => "re$sign{_}ind$sign{_}ent",
'?' => "find rev.",
';' => "repeat t/f/T/F",
':' => "ex cmd line",
"'" => "goto mark bol",
'"' => "use reg$sign{_}ister",
'\\' => "reser$sign{_}ved",
'^\\' => "to mode/$sign{_}ext$sign{_}ens$sign{_}ion$sign{_}s",
',' => "reverse t/T/f/F",
'<' => "un$sign{_}ind$sign{_}ent",
'.' => "repeat last cmd",
'>' => "ind$sign{_}ent",
'/' => "find",
'[' => "move back$sign{_}ward$sign{_}s",
'{' => "begin parag.",
']' => "move forw$sign{_}ard",
'}' => "end parag.",
'^]'=> "go to tag",
'|' => "goto (1st) col",
'a' => "app$sign{_}end",
'A' => "app$sign{_}end to eol",
'^a'=> "incr$sign{_}ement\nAdd one",
'b' => "prev word\nBack",
'B' => 'prev word',
'^b'=> "page up",
'c' => "chan$sign{_}ge",
'C' => "chan$sign{_}ge to eol",
'^c'=> "abort",
'd' => "del$sign{_}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$sign{_}wd to char",
'^f'=> "page down\npage Forward",
'g' => "extra cmds",
'G' => "eof/$sign{_}goto ln",
'^g'=> ":file (info)",
'h' => $sign{left},
'H' => "screen top\nHome row",
'i' => "insert mode",
'I' => "insert at bol",
'^i'=> "jump to newer\nIncrease position",
'j' => $sign{down},
'J' => "join lines",
'k' => $sign{up},
'K' => "help\nlooKup Keyword",
'l' => $sign{right},
'L' => "screen bottom\nLowermost Line",
'^l'=> "redraw",
'm' => "set mark",
'M' => "screen mid$sign{_}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$sign{_}ord macro\nQueue seQuence",
'Q' => "ex mode",
'^q'=> "(xon)\nQome back",
'r' => "repl$sign{_}ace char",
'R' => "repl$sign{_}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$sign{_}dow cmds",
'x' => "delete char",
'X' => "back$sign{_}space",
'^x'=> "subs$sign{_}tract",
'y' => "yank\n(copy)",
'Y' => "yank line",
'^y'=> "window up\nYield",
'z' => "extra cmds",
'Z' => "quit",
'^z'=> ":sus$sign{_}pend\nzzz (as in sleep)",
'g~' => "case toggl$sign{_}e",
'g@' => "oper$sign{_}at$sign{_}or$sign{_}func",
'g#' => "rev. find string",
'g$' => "virt$sign{_}ual eol",
'g^' => qq'"soft" bol v$sign{_}irt$sign{_}ual',
'g&' => ":s rep$sign{_}eat glob$sign{_}al$sign{_}ly\nGlobal substitute",
'g*' => "find string",
'g_' => qq'"soft" eol',
'g+' => "later undo",
'g`' => "to mark keepj$sign{_}umps",
'g8' => "char hex val$sign{_}ue$sign{_}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$sign{_}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$sign{_}ation",
'gD' => "global declar$sign{_}ation",
'ge' => "back to word end",
'gE' => qq'back to word end',
'gf' => "edit file at cur$sign{_}sor\nGoto File",
'gF' => "edit file + jump",
'gg' => "first line",
'g^g'=> "cur$sign{_}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' => "$sign{down} screen",
'gJ' => "join leave spac$sign{_}ing",
'gk' => "$sign{up} screen",
'gm' => "cen$sign{_}ter screen",
'go' => ":goto (byte)",
'gp' => "paste still",
'gP' => "paste before still",
'gq' => "for$sign{_}mat",
'gQ' => "ex mode manual :",
'gr' => "virt. repl$sign{_}ace char",
'gR' => "virt. repl$sign{_}ace mode",
'gs' => "sleep\nGo to Sleep",
'gt' => "next tab\nGoto Tab",
'gT' => "tab back",
'gu' => "lower$sign{_}case",
'gU' => "up$sign{_}per$sign{_}case",
'gv' => "prev$sign{_}ious highl$sign{_}ight\nprecedinG Visual",
'gV' => "avoid resel$sign{_}ect$sign{_}ion",
'gw' => "for$sign{_}mat still",
'gx' => "Netrw$sign{_}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$sign{_}gest spell$sign{_}ing",
'z.' => "line at center bol",
"z\e"=> "normal mode",
'za' => "toggle fold",
'zA' => "toggle fold rec$sign{_}urs$sign{_}ive$sign{_}ly",
'zb' => "line at bot. bol",
'zc' => "close fold",
'zC' => "close folds rec$sign{_}curs$sign{_}ive$sign{_}ly",
'zd' => "delete fold",
'zD' => "delete folds rec$sign{_}urs$sign{_}ive",
'ze' => "cursor at right side",
'zE' => "elimi$sign{_}nate f$sign{_}olds",
'zf' => "create fold",
'zF' => "fold lines",
'zg' => "add spell$sign{_}ing\nGood word",
'zG' => "temp spell$sign{_}ing",
'zh' => "scroll $sign{left}",
'zH' => "scroll $sign{left} half scr$sign{_}een",
'zi' => "toggle all folds",
'zj' => "next fold start",
'zk' => "prev fold end",
'zl' => "scroll $sign{right}",
'zL' => "scroll $sign{right} half scr$sign{_}een",
'z^m'=> "line at top bol",
'zm' => "fold more",
'zM' => "close all folds",
'zn' => "fold none",
'zN' => "fold norm$sign{_}al",
'zo' => "open fold",
'zO' => "open folds rec$sign{_}urs$sign{_}ive$sign{_}ly",
'zr' => "reduce folding",
'zR' => "open all folds",
'zs' => "cursor at left side",
'zt' => "line at top",
'zu' => "undo spell$sign{_}ing",
'zv' => "unfold cursor line",
'zw' => "add missp$sign{_}ell$sign{_}ing\nWrong word",
'zW' => "temp missp$sign{_}ell$sign{_}ing",
'zx' => "update folds",
'zX' => "re$sign{_}apply f$sign{_}olds",
'zz' => "line at center\nZee Zenter (with a funny accent)",
"[`" => "previous lc mark",
'[#' => "previous open #if$sign{_}/#else",
'[(' => "previous open (",
'[/' => "start of C com$sign{_}m$sign{_}ent",
'[{' => "previous open {",
'[[' => "section back$sign{_}ward$sign{_}s",
"[\e"=> "normal mode",
'[]' => qq'section back$sign{_}ward$sign{_}s',
'[c' => "start of change backw$sign{_}ards",
'[d' => "define line",
'[D' => "defin$sign{_}ition",
'[^d'=> "to defin$sign{_}it$sign{_}ion",
'[i' => "first occur$sign{_}renc$sign{_}e line",
'[I' => "first occur$sign{_}renc$sign{_}e",
'[^i'=> "to first occur$sign{_}renc$sign{_}e",
'[m' => "start of funct$sign{_}ion",
'[p' => "P reind$sign{_}ent$sign{_}ed",
'[P' => "[p",
'[s' => "last missp$sign{_}ell$sign{_}ing",
'[S' => "last bad word",
'[z' => "start of open fold",
"]`" => "next lc mark",
']#' => "next open #endif$sign{_}/#else",
'])' => "next open )",
']/' => "end of C com$sign{_}m$sign{_}ent",
'][' => qq'section forw$sign{_}ard',
"]\e"=> "normal mode",
']]' => "section forw$sign{_}ard",
']}' => "next open }",
']c' => "start of change forw$sign{_}ards",
']d' => "next define line",
']D' => "next define",
']^d'=> "to next define",
']i' => "next occur$sign{_}renc$sign{_}e line",
']I' => "next occur$sign{_}renc$sign{_}e",
']^i'=> "to occur$sign{_}renc$sign{_}e",
']m' => "end of funct$sign{_}ion",
']p' => "p reind$sign{_}ent$sign{_}ed",
']s' => "next missp$sign{_}ell$sign{_}ing",
']S' => "next bad word",
']z' => "end of open fold",
'^w<' => "width decr$sign{_}ease",
'^w>' => "width incr$sign{_}ease",
'^w^' => "split, edit alt file",
'^w_' => "set height",
'^w+' => "height incr$sign{_}ease",
'^w-' => "height decr$sign{_}ease",
'^w=' => "same height",
"^w\e"=> "normal mode",
'^w]' => "split, to tag",
'^w}' => "pre$sign{_}view tag",
'^w|' => "set width",
'^wb' => "go to bot$sign{_}tom",
'^wc' => ":close",
'^w^c'=> "abort",
'^wd' => "split, to def$sign{_}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$sign{_}ent$sign{_}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$sign{_}ious",
'^wP' => "go to pre$sign{_}view",
'^wq' => ":quit current",
'^wr' => "rotate down$sign{_}ward$sign{_}s",
'^wR' => "rotate up$sign{_}ward$sign{_}s",
'^ws' => "split horiz$sign{_}ont$sign{_}al$sign{_}ly",
'^wt' => "go to top",
'^wv' => "split vert$sign{_}ic$sign{_}al$sign{_}ly",
'^ww' => "go to next\nWrap around",
'^wW' => "go above$sign{_}/left",
'^wx' => "ex$sign{_}chan$sign{_}ge",
'^wz' => "close pre$sign{_}view",
"^wg\e"=> "normal mode",
'^wg]' => "split, :ts$sign{_}elect",
'^wg}' => ":ptj$sign{_}ump to tag",
'^wg^]'=> "split, :tj$sign{_}ump",
'^wgf' => "file in tab",
'^wgF' => "^wgf, to line$sign{_}nr",
'v!' => "external filter",
'v:' => "cmd on range",
'v<' => "un$sign{_}indent",
'v=' => "re$sign{_}ind$sign{_}ent",
'v>' => "ind$sign{_}ent",
'v~' => "toggle case",
"v\e"=> "normal mode",
'v^]'=> "jump to tag",
'va' => "ex$sign{_}tend area",
'vA' => "ap$sign{_}pend to block", # block
'vc' => "repl$sign{_}ace area",
'vC' => "repl$sign{_}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$sign{_}space", # delete in select mode, left otherwise
'vi' => "extend inner a$sign{_}r$sign{_}ea",
'vI' => "insert to block", # block
'vJ' => "join lines",
'vK' => "help sel$sign{_}ect$sign{_}ion",
'vo' => "to other corner",
'vO' => "to other side",
'v^o'=> "visual once", # select
'vp' => "repl$sign{_}ace w/ paste",
'vP' => "repl$sign{_}ace w/ paste",
'vr' => "fill up w/ ch$sign{_}ar",
'vS' => "repl$sign{_}ace lines",
'vu' => "lower$sign{_}case",
'vU' => "upper$sign{_}case",
'vv' => "char$sign{_}wise",
'vV' => "line$sign{_}wise",
'v^v'=> "block$sign{_}wise",
'vy' => "yank area",
'vY' => "yank lines",
"vg\e"=> "visual mode",
'vg?' => "rot13 encode",
'vgJ' => "join literal$sign{_}ly",
'vgq' => "for$sign{_}mat",
'vgw' => "for$sign{_}mat still",
"va'" => "quoted string",
'va<' => "<> block",
'va[' => "[] block",
"va\e"=> "visual mode",
'vab' => "() block",
'vaB' => "{} Block",
'vap' => "para$sign{_}graph",
'vas' => "senten$sign{_}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$sign{_}tion to clip$sign{_}b$sign{_}oard",
'i^@' => "last insert",
'i^^' => "toggle :lmap usag$sign{_}e",
"i\e" => "normal mode",
'i^]' => "abbrev$sign{_}iate",
'i^_' => "toggle lang$sign{_}uage",
'i^a' => "insert prev$sign{_}ious",
'i^b' => "former i^_",
'i^c' => "abort, no abbr",
'i^d' => "un$sign{_}ind$sign{_}ent",
'i^e' => "ins char below",
'i^f' => "set indent$sign{_}ation",
'i^g' => "extra cmds",
'i^h' => "back$sign{_}space",
'i^i' => "tab",
'i^j' => "enter",
'i^k' => "di$sign{_}graph\nKey code",
'i^l' => "im leave ins mode",
'i^m' => "enter",
'i^n' => "find next keyword",
'i^o' => "exec$sign{_}ute cmd",
'i^p' => "find prev keyword",
'i^r' => "insert reg$sign{_}ister",
'i^t' => "indent",
'i^u' => "delete line",
'i^v' => "literal or ch$sign{_}ar$sign{_}cod$sign{_}e\nVerbatim or by Value",
'i^w' => "delete word back",
'i^x' => "ex$sign{_}pand mode",
'i^y' => "ins char above",
'i^z' => ":sus$sign{_}pend in im",
"i^g\e"=> "insert mode",
'i^gk' => "$sign{up} start col$sign{_}umn",
'i^gj' => "$sign{down} start col$sign{_}umn",
'i^gu' => "break undo seq$sign{_}uence",
# other i^g keys (even esc) are not recognized
"i^x\e" => "normal mode",
'i^x^]' => "tag comp$sign{_}l$sign{_}et$sign{_}e",
'i^x^d' => "def$sign{_}ine compl$sign{_}et$sign{_}e",
'i^x^e' => "window up",
'i^x^f' => "file comp$sign{_}l$sign{_}et$sign{_}e",
'i^x^i' => "ident comp$sign{_}l$sign{_}et$sign{_}e",
'i^x^k' => "dict comp$sign{_}l$sign{_}et$sign{_}e",
'i^x^l' => "line comp$sign{_}l$sign{_}et$sign{_}e",
'i^x^n' => "next comp$sign{_}l$sign{_}et$sign{_}e",
'i^x^o' => "omni comp$sign{_}l$sign{_}et$sign{_}e",
'i^x^p' => "prev comp$sign{_}l$sign{_}ete",
'i^x^s' => "spell sugg$sign{_}est",
'i^x^t' => "thes$sign{_}aur$sign{_}us compl$sign{_}et$sign{_}e",
'i^x^u' => "cus$sign{_}tom comp$sign{_}l$sign{_}et$sign{_}e",
'i^x^v' => "ex cmd compl$sign{_}et$sign{_}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 ($sign{motion})."],
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$sign{arg}", "Commands with a dot need a char argument afterwards."],
motion => ["key$sign{motion}", "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."],
},
}