keyboard: recombine translations in include syntax
[sheet.git] / keyboard / vi.eng.inc.pl
index 58ac2f39d37e0b7a458c4aac0d7ceeec170a453f..1a904c6d4bfcf973256c7a2babf426e746af680b 100644 (file)
@@ -8,552 +8,13 @@ my @motions = qw(
 
 {
 title => 'vi/vim',
-version => 1.5,
+version => 1.6,
 description => [
        "Interactive cheat sheet for vi text editors, notably Vim,",
        "describing each key in various modes.",
 ],
 keywords => [qw' vi vim nvi '],
 
-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 <span style="font-variant:small-caps">word</span>',
-       '^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 <span style="font-variant:small-caps">word</span>',
-       '^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' => "<left>",
-       'H' => "screen top\nHome row",
-       'i' => "insert mode",
-       'I' => "insert at bol",
-       '^i'=> "jump to newer\nIncrease position",
-       'j' => "<down>",
-       'J' => "join lines",
-       'k' => "<up>",
-       'K' => "help\nlooKup Keyword",
-       'l' => "<right>",
-       '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 <span style="font-variant:small-caps">word</span>',
-       '^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 <span style="font-variant:small-caps">word</span> 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' => "<down> screen",
-       'gJ' => "join leave spac<>ing",
-       'gk' => "<up> screen",
-       'gm' => "cen<>ter screen",
-       'gn' => "select next find",
-       'gN' => "select prev find",
-       '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 <left>",
-       'zH' => "scroll <left> half scr<>een",
-       'zi' => "toggle all folds",
-       'zj' => "next fold start",
-       'zk' => "prev fold end",
-       'zl' => "scroll <right>",
-       'zL' => "scroll <right> 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'<span style="font-variant:small-caps">section</span> 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",
-       '[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'<span style="font-variant:small-caps">section</span> 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",
-       '^wT' => "to tab",
-       '^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
-       'v^a'=> "incr<>ement num<>bers",
-       '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",
-       '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",
-       'v^x'=> "decr<>ement num<>bers",
-       'vy' => "yank area",
-       'vY' => "yank lines",
-
-       "vg\e"=> "visual mode",
-       'vg?' => "rot13 encode",
-       'vg^a'=> "seq. incr<>ement",
-       'vg^g'=> "count region info",
-       'vgJ' => "join literal<>ly",
-       'vgq' => "for<>mat",
-       'vgw' => "for<>mat still",
-       'vg^x'=> "seq. decr<>ement",
-
-       "va'" => "quoted string",
-       'va<' => "&lt;&gt; block",
-       'va[' => "[] block",
-       "va\e"=> "visual mode",
-
-       'vab' => "() block",
-       'vaB' => "{} Block",
-       'vap' => "para<>graph",
-       'vas' => "senten<>ce",
-       'vat' => "xml tag block",
-       'vaw' => "word",
-       'vaW' => '<span style="font-variant:small-caps">word</span>',
-
-#      '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' => "<em>im</em> 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 <em>im</em>",
-
-       "i^g\e"=> "insert mode",
-       'i^gk' => "<up> start col<>umn",
-       'i^gj' => "<down> start col<>umn",
-       'i^gu' => "break undo seq<>uence",
-       'i^gU' => "keep 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",
-
-       # plugins
-         'gc' => "(un)<>com<>ment\ncommentary or tComment plugin",
-        'vgc' => "(un)<>com<>ment\ncommentary or tComment plugin",
-         'gl' => "align to left\nlion plugin, also good for easy-align",
-        'vgl' => "align to left\nlion plugin, also good for easy-align",
-         'gL' => "align to right\nlion plugin",
-        'vgL' => "align to right\nlion plugin",
-       'i^gs' => "sur<>round\nsurround plugin",
-
-       # unimpaired
-       '[a' => "prev<>ious file\nunimpaired map for :prev",
-       ']a' => "next file\nunimpaired map for :n",
-       '[A' => "first file\nunimpaired map for :rew",
-       ']A' => "last file\nunimpaired map for :la",
-       '[b' => "prev<>ious buffer\nunimpaired map for :bp",
-       ']b' => "next buffer\nunimpaired map for :bn",
-       '[B' => "first buffer\nunimpaired map for :br",
-       ']B' => "last buffer\nunimpaired map for :bl",
-       '[e' => "exchange line above\nunimpaired plugin",
-       ']e' => "exchange line belo<>w\nunimpaired plugin",
-       '[f' => "preced<>ing file alph<>abet<>ic<>al<>ly\nunimpaired plugin",
-       ']f' => "next file alph<>abet<>ic<>al<>ly\nunimpaired plugin",
-       '[l' => "previous loc<>at<>ion\nunimpaired map for :lp",
-       ']l' => "next loc<>ation\nunimpaired map for :lne",
-       '[L' => "first loc<>ation\nunimpaired map for :lr",
-       ']L' => "last loc<>ation\nunimpaired map for :lla",
-       '[^l'=> "next file in loc<>at<>ions\nunimpaired map for :lpf",
-       ']^l'=> "file back in loc<>at<>ions\nunimpaired map for :lnf",
-       '[n' => "previous conflict<>/hunk\nunimpaired plugin",
-       ']n' => "next confl<>ict<>/hunk\nunimpaired plugin",
-       '[o' => "enable option\nunimpaired plugin",
-       ']o' => "disable option\nunimpaired plugin",
-       'yo' => "toggle option\nunimpaired plugin",
-       '[q' => "previous quickfix\nunimpaired map for :cp",
-       ']q' => "next quickfix error\nunimpaired map for :cn",
-       '[Q' => "first quickfix\nunimpaired map for :cr",
-       ']Q' => "last quickfix error\nunimpaired map for :cla",
-       '[^q'=> "quickfix file b<>ack\nunimpaired map for :cpf",
-       ']^q'=> "next file in q<>uick<>f<>ix\nunimpaired map for :cnf",
-       '[t' => "previous tag\nunimpaired map for :tp",
-       ']t' => "next tag\nunimpaired map for :tn",
-       '[T' => "first tag\nunimpaired map for :tr",
-       ']T' => "last tag\nunimpaired map for :tl",
-       '[u' => "url encode\nunimpaired plugin",
-       ']u' => "url decode\nunimpaired plugin",
-       '[x' => "xml encode\nunimpaired plugin",
-       ']x' => "xml decode\nunimpaired plugin",
-       '[y' => "escape c str<>ing\nunimpaired plugin",
-       ']y' => "unescap<>e c str<>ing\nunimpaired plugin",
-
-       (map { ("d$_" => "delete to <alias>$_") } qw( g z [ ] )),
-       'dW' => 'delete <span style="font-variant:small-caps">word</span>',
-       'db' => 'delete <left> word',
-       'dB' => 'delete <left> <span style="font-variant:small-caps">word</span>',
-       'de' => 'delete word e<>nd',
-       'dE' => 'delete <span style="font-variant:small-caps">word</span> e<>nd',
-       'df' => 'delete to char<>acter',
-       'dF' => 'delete <left> to char<>acter',
-       'dG' => 'delete to line<>/eof',
-       'dH' => 'delete to top',
-       'dj' => 'delete <down> line',
-       'dk' => 'delete <up> line',
-       'dL' => 'delete to bottom',
-       'dM' => 'delete to middle',
-       'dn' => 'delete to next res<>ult',
-       'dN' => 'delete to prev res<>ult',
-       'dt' => 'delete upto ch<>ar<>acter',
-       'dT' => 'delete <left> upto ch<>ar<>acter',
-       'dw' => 'delete word',
-       'd,' => 'delete to prev ch<>ar<>acter',
-       'd;' => 'delete to next ch<>ar<>acter',
-       'd/' => 'delete to res<>ult',
-       'd?' => 'delete <left> to res<>ult',
-       'd`' => 'delete to mark',
-       "d'" => 'delete lines to m<>ark',
-       'd*' => 'delete to find',
-       'd#' => 'delete <left> to find',
-       'd%' => 'delete to line pct',
-       'd^' => 'delete to soft bol',
-       'd0' => 'delete to bol',
-       'd|' => 'delete to col<>umn',
-       'd{' => 'delete <left> par<>agr<>aph',
-       'd}' => 'delete rest of p<>ar<>agr<>aph',
-       'd(' => 'delete <left> senten<>ce',
-       'd)' => 'delete rest of s<>en<>ten<>ce',
-       'da' => 'delete area',
-       'di' => 'delete inner',
-       'dd' => 'delete line',
-       'do' => 'diff obtain',
-       'dp' => 'diff put',
-       'ds' => 'delete surr<>oun<>d<>ing',
-},
-
 mode => {
        ''    => "normal mode",
         g    => "extended commands (g)",
@@ -591,650 +52,699 @@ flag => {
 
 def => {
        '' => {
-               '~' => "g4 undo",
-               '!' => "g4 argm undo modec",
-               '@' => "g4 arg undo",
-               '#' => "g2 v6",
-               '$' => "g2",
-               '%' => "g2",
-               '^' => "g2",
-               '&' => "g4 undo",
-               '*' => "g2 v6",
-               '(' => 'g2',
-               ')' => 'g2',
-               '_' => "g2",
-               '+' => "g2",
-               '`' => "g2 arg",
-               '0' => "g2",
-               '^^'=> "g4",
-               '-' => "g2",
-               '=' => 'g4 argm undo',
-               '?' => "g2 arg modec",
-               ';' => "g2",
-               ':' => "g4 modec",
-               "'" => "g2 arg",
-               '"' => 'g4 arg',
-               '\\' => 'g9 arg',
-               '^\\' => "g7 arg",
-               ',' => "g2",
-               '<' => "g4 argm undo",
-               '.' => "g4 undo",
-               '>' => "g4 argm undo",
-               '/' => "g2 arg modec",
-               '[' => "g9 arg mode[",
-               '{' => "g2",
-               ']' => "g9 arg mode]",
-               '}' => "g2",
-               '^]'=> "g3",
-               '|' => "g2",
-
-               'a' => "g6 undo modei",
-               'A' => "g6 undo modei",
-               '^a'=> "g4 undo",
-               'b' => "g2",
-               'B' => "g2",
-               '^b'=> "g3",
-               'c' => "g6 argm undo modei",
-               'C' => "g6 undo modei",
-               '^c'=> "g4",
-               'd' => "g4 argm undo moded",
-               'D' => "g4 undo",
-               '^d'=> "g3",
-               'e' => "g2",
-               'E' => "g2",
-               '^e'=> "g3",
-               'f' => "g2 arg",
-               'F' => "g2 arg",
-               '^f'=> "g3",
-               'g' => "g9 arg modeg",
-               'G' => "g2",
-               '^g'=> "g1",
-               'h' => "g2",
-               'H' => "g2",
-               '^h'=> "=h",
-               'i' => "g6 undo modei",
-               'I' => "g6 undo modei",
-               '^i'=> "g2 v6",
-               'j' => "g2",
-               'J' => "g4 undo",
-               '^j'=> "=j",
-               'k' => "g2",
-               'K' => "g4",
-               'l' => "g2",
-               'L' => "g2",
-               '^l'=> "g1",
-               'm' => "g4 arg",
-               'M' => "g2",
-               '^m'=> "=+",
-               'n' => "g2",
-               'N' => "g2",
-               '^n'=> "=j",
-               'o' => "g6 undo modei",
-               'O' => "g6 undo modei",
-               '^o'=> "g2 v6",
-               'p' => "g4 undo",
-               'P' => "g4 undo",
-               '^p'=> "=k",
-               'q' => "g7 arg",
-               'Q' => "g7",
-               '^q'=> "g1", # or ^v
-               'r' => "g4 arg undo",
-               'R' => "g6 undo modei",
-               '^r'=> "g4 undo v6",
-               's' => "g6 undo modei",
-               'S' => "g6 undo modei",
-               '^s'=> "g1",
-               't' => "g2 arg",
-               'T' => "g2 arg",
-               '^t'=> "g3",
-               'u' => "g4 undo",
-               'U' => "g4 undo",
-               '^u'=> "g3",
-               'v' => "g8 modev",
-               'V' => "g8 modev",
-               '^v'=> "g8 modev v6",
-               'w' => "g2",
-               'W' => "g2",
-               '^w'=> "g9 arg mode^w",
-               'x' => "g4 undo",
-               'X' => "g4 undo",
-               '^x'=> "g4 undo",
-               'y' => "g4 argm",
-               'Y' => "g4",
-               '^y'=> "g3",
-               'z' => "g9 arg modez",
-               'Z' => "g9 arg modeZ",
-               '^z'=> "g1",
+               '~' => ["g4 undo", "case toggle"],
+               '!' => ["g4 argm undo modec", "filt<>er lines"],
+               '@' => ["g4 arg undo", "play macro"],
+               '#' => ["g2 v6", "rev. find word"],
+               '$' => ["g2", "eol"],
+               '%' => ["g2", "goto match"],
+               '^' => ["g2", '"soft" bol'],
+               '&' => ["g4 undo", ":s rep<>eat"],
+               '*' => ["g2 v6", "find word"],
+               '(' => ['g2', "begin senten<>ce"],
+               ')' => ['g2', "end senten<>ce"],
+               '_' => ["g2", '"soft" bol down'],
+               '+' => ["g2", "next line"],
+               '`' => ["g2 arg", "goto mark"],
+               '0' => ["g2", '"hard" bol'],
+               '^^'=> ["g4", "edit alt. file"],
+               '-' => ["g2", "prev line"],
+               '=' => ['g4 argm undo', "re<>ind<>ent"],
+               '?' => ["g2 arg modec", "find rev."],
+               ';' => ["g2", "repeat t/f/T/F"],
+               ':' => ["g4 modec", "ex cmd line"],
+               "'" => ["g2 arg", "goto mark bol"],
+               '"' => ['g4 arg', "use reg<>ister"],
+               '\\' => ['g9 arg', "reser<>ved"],
+               '^\\' => ["g7 arg", "to mode/<>ext<>ens<>ion<>s"],
+               ',' => ["g2", "reverse t/T/f/F"],
+               '<' => ["g4 argm undo", "un<>ind<>ent"],
+               '.' => ["g4 undo", "repeat last cmd"],
+               '>' => ["g4 argm undo", "ind<>ent"],
+               '/' => ["g2 arg modec", "find"],
+               '[' => ["g9 arg mode[", "move back<>ward<>s"],
+               '{' => ["g2", "begin parag."],
+               ']' => ["g9 arg mode]", "move forw<>ard"],
+               '}' => ["g2", "end parag."],
+               '^]'=> ["g3", "go to tag"],
+               '|' => ["g2", "goto (1st) col"],
+
+               'a' => ["g6 undo modei", "app<>end"],
+               'A' => ["g6 undo modei", "app<>end to eol"],
+               '^a'=> ["g4 undo", "incr<>ement\nAdd one"],
+               'b' => ["g2", "prev word\nBack"],
+               'B' => ["g2", 'prev <span style="font-variant:small-caps">word</span>'],
+               '^b'=> ["g3", "page up"],
+               'c' => ["g6 argm undo modei", "chan<>ge"],
+               'C' => ["g6 undo modei", "chan<>ge to eol"],
+               '^c'=> ["g4", "abort"],
+               'd' => ["g4 argm undo moded", "del<>ete"],
+               'D' => ["g4 undo", "delete to eol"],
+               '^d'=> ["g3", "scroll down"],
+               'e' => ["g2", "end word"],
+               'E' => ["g2", 'end <span style="font-variant:small-caps">word</span>'],
+               '^e'=> ["g3", "window down\nExtra line"],
+               'f' => ["g2 arg", "fwd to char"],
+               'F' => ["g2 arg", "back<>wd to char"],
+               '^f'=> ["g3", "page down\npage Forward"],
+               'g' => ["g9 arg modeg", "extra cmds"],
+               'G' => ["g2", "eof/<>goto ln"],
+               '^g'=> ["g1", ":file (info)"],
+               'h' => ["g2", "<left>"],
+               'H' => ["g2", "screen top\nHome row"],
+               '^h'=> \'h',
+               'i' => ["g6 undo modei", "insert mode"],
+               'I' => ["g6 undo modei", "insert at bol"],
+               '^i'=> ["g2 v6", "jump to newer\nIncrease position"],
+               'j' => ["g2", "<down>"],
+               'J' => ["g4 undo", "join lines"],
+               '^j'=> \'j',
+               'k' => ["g2", "<up>"],
+               'K' => ["g4", "help\nlooKup Keyword"],
+               'l' => ["g2", "<right>"],
+               'L' => ["g2", "screen bottom\nLowermost Line"],
+               '^l'=> ["g1", "redraw"],
+               'm' => ["g4 arg", "set mark"],
+               'M' => ["g2", "screen mid<>dle"],
+               '^m'=> \'+',
+               'n' => ["g2", "next find"],
+               'N' => ["g2", "prev find"],
+               '^n'=> \'j',
+               'o' => ["g6 undo modei", "line below\nOpen"],
+               'O' => ["g6 undo modei", "line above"],
+               '^o'=> ["g2 v6", "jump to older"],
+               'p' => ["g4 undo", "paste after"],
+               'P' => ["g4 undo", "paste before"],
+               '^p'=> \'k',
+               'q' => ["g7 arg", "rec<>ord macro\nQueue seQuence"],
+               'Q' => ["g7", "ex mode"],
+               '^q'=> ["g1", "(xon)\nQome back"], # or ^v
+               'r' => ["g4 arg undo", "repl<>ace char"],
+               'R' => ["g6 undo modei", "repl<>ace mode"],
+               '^r'=> ["g4 undo v6", "redo"],
+               's' => ["g6 undo modei", "subst char"],
+               'S' => ["g6 undo modei", "subst line"],
+               '^s'=> ["g1", "(xoff)\nStop"],
+               't' => ["g2 arg", "till char"],
+               'T' => ["g2 arg", "back till char"],
+               '^t'=> ["g3", "back tag"], # backtrag :P
+               'u' => ["g4 undo", "undo"],
+               'U' => ["g4 undo", "undo line"],
+               '^u'=> ["g3", "scroll up"],
+               'v' => ["g8 modev", "visual mode"],
+               'V' => ["g8 modev", "visual lines"],
+               '^v'=> ["g8 modev v6", "visual block"],
+               'w' => ["g2", "next word"],
+               'W' => ["g2", 'next <span style="font-variant:small-caps">word</span>'],
+               '^w'=> ["g9 arg mode^w", "win<>dow cmds"],
+               'x' => ["g4 undo", "delete char"],
+               'X' => ["g4 undo", "back<>space"],
+               '^x'=> ["g4 undo", "subs<>tract"],
+               'y' => ["g4 argm", "yank\n(copy)"],
+               'Y' => ["g4", "yank line"],
+               '^y'=> ["g3", "window up\nYield"],
+               'z' => ["g9 arg modez", "extra cmds"],
+               'Z' => ["g9 arg modeZ", "quit"],
+               '^z'=> ["g1", ":sus<>pend\nzzz (as in sleep)"],
        }, # normal mode
 
        g => {
                lead => "g",
 
-               "\e"=> "g7 mode",
-
-               '~' => "g4 argm v6",
-               '@' => "g4 v7",
-               '#' => "g2 v6",
-               '$' => "g2",
-               '^' => "g2 v6",
-               '&' => "g4",
-               '*' => "g2 v6",
-               '_' => "g2 v6",
-               '+' => "g4 v7",
-               '`' => "g2 v6 arg",
-               '8' => "g1",
-               '0' => "g2 v6",
-               '-' => "g4 v7",
-               '^['=> "g7 mode",
-               ']' => "g3",
-               '^]'=> "g3",
-               ';' => "g2",
-               "'" => "g2 v6 arg",
-               '<' => "g4 v7",
-               '?' => "g4 argm v6",
-               ',' => "g2",
-
-               'a' => "g1",
-               '^a'=> "g1",
-               'c' => 'g4 argm xcommentary',
-               'd' => "g2 v6",
-               'D' => "g2 v6",
-               'e' => "g2",
-               'E' => "g2",
-               'f' => "g4 v6",
-               'F' => "g4 v7",
-               'g' => "g2",
-               '^g'=> "g1 vim6",
-               'h' => "g8 modev",
-               'H' => "g8 modev",
-               '^h'=> "g8 modev v6",
-               'i' => "g6 undo modei",
-               'I' => "g6 undo modei",
-               'j' => "g2 v6",
-               'J' => "g4",
-               'k' => "g2 v6",
-               'l' => 'g3 argm arg xlion',
-               'L' => 'g3 argm arg xlion',
-               'm' => "g2 v6",
-               'n' => "g8 v7 modev",
-               'N' => "g8 v7 modev",
-               'o' => "g2",
-               'p' => "g4 undo",
-               'P' => "g4",
-               'q' => "g4 argm",
-               'Q' => "g7 v6",
-               'r' => "g4 arg",
-               'R' => "g6 undo modei",
-               's' => "g1 v6",
-               't' => "g3 v7",
-               'T' => "g3 v7",
-               'u' => "g4 argm v6", # XXX undo?
-               'U' => "g4 undo argm v6",
-               'v' => 'g8 modev',
-               'V' => "g4",
-               'w' => "g4 argm v7",
-               'x' => "g4 v7 ext",
+               "\e"=> ["g7 mode", "normal mode"],
+
+               '~' => ["g4 argm v6", "case toggl<>e"],
+               '@' => ["g4 v7", "oper<>at<>or<>func"],
+               '#' => ["g2 v6", "rev. find string"],
+               '$' => ["g2", "virt<>ual eol"],
+               '^' => ["g2 v6", qq'"soft" bol v<>irt<>ual'],
+               '&' => ["g4", ":s rep<>eat glob<>al<>ly\nGlobal substitute"],
+               '*' => ["g2 v6", "find string"],
+               '_' => ["g2 v6", qq'"soft" eol'],
+               '+' => ["g4 v7", "later undo"],
+               '`' => ["g2 v6 arg", "to mark keepj<>umps"],
+               '8' => ["g1", "char hex val<>ue<>s"],
+               '0' => ["g2 v6", "virtual bol"],
+               '-' => ["g4 v7", "earlier undo"],
+               '^['=> ["g7 mode"],
+               ']' => ["g3", "go to tselect"],
+               '^]'=> ["g3", "go to tjump"],
+               ';' => ["g2", "to prev change pos"],
+               "'" => ["g2 v6 arg", "to mark keepj<>umps"],
+               '<' => ["g4 v7", "see prev cmd output"],
+               '?' => ["g4 argm v6", "rot13 encode"],
+               ',' => ["g2", "to next change pos"],
+
+               'a' => ["g1", "char value\nGet Ascii value"],
+               '^a'=> ["g1", "mem usage stats"],
+               'd' => ["g2 v6", "local declar<>ation"],
+               'D' => ["g2 v6", "global declar<>ation"],
+               'e' => ["g2", "back to word end"],
+               'E' => ["g2", qq'back to <span style="font-variant:small-caps">word</span> end'],
+               'f' => ["g4 v6", "edit file at cur<>sor\nGoto File"],
+               'F' => ["g4 v7", "edit file + jump"],
+               'g' => ["g2", "first line"],
+               '^g'=> ["g1 vim6", "cur<>sor pos info"],
+               'h' => ["g8 modev", "select mode\nGet Highlighted"],
+               'H' => ["g8 modev", "select lines\nGet Highlighted"],
+               '^h'=> ["g8 modev v6", "select block\nGet Highlighted"],
+               'i' => ["g6 undo modei", "insert at last pos"],
+               'I' => ["g6 undo modei", "insert at soft bol"],
+               'j' => ["g2 v6", "<down> screen"],
+               'J' => ["g4", "join leave spac<>ing"],
+               'k' => ["g2 v6", "<up> screen"],
+               'm' => ["g2 v6", "cen<>ter screen"],
+               'n' => ["g8 v7 modev", "select next find"],
+               'N' => ["g8 v7 modev", "select prev find"],
+               'o' => ["g2", ":goto (byte)"],
+               'p' => ["g4 undo", "paste still"],
+               'P' => ["g4", "paste before still"],
+               'q' => ["g4 argm", "for<>mat"],
+               'Q' => ["g7 v6", "ex mode manual :"],
+               'r' => ["g4 arg", "virt. repl<>ace char"],
+               'R' => ["g6 undo modei", "virt. repl<>ace mode"],
+               's' => ["g1 v6", "sleep\nGo to Sleep"],
+               't' => ["g3 v7", "next tab\nGoto Tab"],
+               'T' => ["g3 v7", "tab back"],
+               'u' => ["g4 argm v6", "lower<>case"], # XXX undo?
+               'U' => ["g4 undo argm v6", "up<>per<>case"],
+               'v' => ['g8 modev', "prev<>ious highl<>ight\nprecedinG Visual"],
+               'V' => ["g4", "avoid resel<>ect<>ion"],
+               'w' => ["g4 argm v7", "for<>mat still"],
+               'x' => ["g4 v7 ext", "Netrw<>BrowseX"],
+
+               # plugins
+               'c' => ['g4 argm xcommentary', "(un)<>com<>ment\ncommentary or tComment plugin"],
+               'l' => ['g3 argm arg xlion', "align to left\nlion plugin, also good for easy-align"],
+               'L' => ['g3 argm arg xlion', "align to right\nlion plugin"],
        }, # mode g
 
        Z => {
                lead => "Z",
 
-               "\e"=> "g7 mode",
-               '^['=> "=\e",
+               "\e"=> ["g7 mode", "normal mode"],
+               '^['=> \"Z\e",
 
-               'Q' => "g4 v6",
-               'Z' => "g4",
+               'Q' => ["g4 v6", " :q! (force)"],
+               'Z' => ["g4", " :wq (write)"],
        }, # mode Z
 
        z => {
                lead => "z",
 
-               "\e"=> "g7 mode",
-
-               '^' => "g3",
-               '+' => "g3",
-               '-' => "g3",
-               '=' => "g4 v7",
-               '.' => "g3",
-               '^['=> "=\e",
-
-               'a' => "g4 v6 folding",
-               'A' => "g4 v6 folding",
-               'b' => "g3",
-               'c' => "g4 v6 folding",
-               'C' => "g4 v6 folding",
-               'd' => "g4 v6 folding",
-               'D' => "g4 v6 folding",
-               'e' => "g3",
-               'E' => "g4 v6 folding",
-               'f' => "g4 argm v6 folding",
-               'F' => "g4 v6 folding",
-               'g' => "g4 v7",
-               'G' => "g4 v7",
-               'h' => "g3",
-               'H' => "g3",
-               'i' => "g4 v6 folding",
-               'j' => "g2 v6 folding",
-               'k' => "g2 v6 folding",
-               'l' => "g3",
-               'L' => "g3",
-               '^m'=> "g3",
-               'm' => "g4 v6 folding",
-               'M' => "g4 v6 folding",
-               'n' => "g4 v6 folding",
-               'N' => "g4 v6 folding",
-               'o' => "g4 v6 folding",
-               'O' => "g4 v6 folding",
-               'r' => "g4 v6 folding",
-               'R' => "g4 v6 folding",
-               's' => "g3",
-               't' => "g3",
-               'u' => "g4 arg v7",
-               'v' => "g4 v6 folding",
-               'w' => "g4 v7",
-               'W' => "g4 v7",
-               'x' => "g4 v6 folding",
-               'X' => "g4 v6 folding",
-               'z' => "g3",
+               "\e"=> ["g7 mode", "normal mode"],
+
+               '^' => ["g3", "page above"],
+               '+' => ["g3", "page below"],
+               '-' => ["g3", "line at bottom bol\ndon't (-) see any further"],
+               '=' => ["g4 v7", "sug<>gest spell<>ing"],
+               '.' => ["g3", "line at center bol"],
+               '^['=> \"z\e",
+
+               'a' => ["g4 v6 folding", "toggle fold"],
+               'A' => ["g4 v6 folding", "toggle fold rec<>urs<>ive<>ly"],
+               'b' => ["g3", "line at bot. bol"],
+               'c' => ["g4 v6 folding", "close fold"],
+               'C' => ["g4 v6 folding", "close folds rec<>curs<>ive<>ly"],
+               'd' => ["g4 v6 folding", "delete fold"],
+               'D' => ["g4 v6 folding", "delete folds rec<>urs<>ive"],
+               'e' => ["g3", "cursor at right side"],
+               'E' => ["g4 v6 folding", "elimi<>nate f<>olds"],
+               'f' => ["g4 argm v6 folding", "create fold"],
+               'F' => ["g4 v6 folding", "fold lines"],
+               'g' => ["g4 v7", "add spell<>ing\nGood word"],
+               'G' => ["g4 v7", "temp spell<>ing"],
+               'h' => ["g3", "scroll <left>"],
+               'H' => ["g3", "scroll <left> half scr<>een"],
+               'i' => ["g4 v6 folding", "toggle all folds"],
+               'j' => ["g2 v6 folding", "next fold start"],
+               'k' => ["g2 v6 folding", "prev fold end"],
+               'l' => ["g3", "scroll <right>"],
+               'L' => ["g3", "scroll <right> half scr<>een"],
+               '^m'=> ["g3", "line at top bol"],
+               'm' => ["g4 v6 folding", "fold more"],
+               'M' => ["g4 v6 folding", "close all folds"],
+               'n' => ["g4 v6 folding", "fold none"],
+               'N' => ["g4 v6 folding", "fold norm<>al"],
+               'o' => ["g4 v6 folding", "open fold"],
+               'O' => ["g4 v6 folding", "open folds rec<>urs<>ive<>ly"],
+               'r' => ["g4 v6 folding", "reduce folding"],
+               'R' => ["g4 v6 folding", "open all folds"],
+               's' => ["g3", "cursor at left side"],
+               't' => ["g3", "line at top"],
+               'u' => ["g4 arg v7", "undo spell<>ing"],
+               'v' => ["g4 v6 folding", "unfold cursor line"],
+               'w' => ["g4 v7", "add missp<>ell<>ing\nWrong word"],
+               'W' => ["g4 v7", "temp missp<>ell<>ing"],
+               'x' => ["g4 v6 folding", "update folds"],
+               'X' => ["g4 v6 folding", "re<>apply f<>olds"],
+               'z' => ["g3", "line at center\nZee Zenter (with a funny accent)"],
        }, # mode z
 
        '[' => {
                lead => "[",
 
-               "\e"=> "g7 mode",
-
-               "`" => "g2 v6",
-               '#' => "g2",
-               '(' => "g2",
-               '*' => "=[/",
-               '/' => "g2",
-               "'" => "=0[`^ g2 v6",
-               '{' => "g2",
-               '[' => "g2",
-               '^['=> "=\e",
-               ']' => "g2",
-
-               'c' => "g2",
-               'd' => "g1",
-               'D' => "g4",
-               '^d'=> "g3",
-               'f' => "=gf",  # deprecated
-               'i' => 'g1',
-               'I' => 'g4',
-               '^i'=> 'g3',
-               'm' => "g2",
-               'p' => "g4",
-               'P' => "=[p",
-               's' => "g3 v7",
-               'S' => "g3 v7",
-               'z' => "g2 v6 folding",
-
-               'a' => "g3 xunimpaired",
-               'A' => "g3 xunimpaired",
-               'b' => "g3 xunimpaired",
-               'B' => "g3 xunimpaired",
-               'e' => "g4 xunimpaired",
-               'l' => "g3 xunimpaired",
-               'L' => "g3 xunimpaired",
-               '^l'=> "g3 xunimpaired",
-               '^l'=> "g3 xunimpaired",
-               'f' => "g3 xunimpaired", # overrides native alias
-               'n' => "g3 xunimpaired",
-               'o' => "g9 arg xunimpaired",
-               'q' => "g3 xunimpaired",
-               'Q' => "g3 xunimpaired",
-               '^q'=> "g3 xunimpaired",
-               't' => "g3 xunimpaired",
-               'T' => "g3 xunimpaired",
-               'u' => "g4 argm xunimpaired",
-               'x' => "g4 argm xunimpaired",
-               'y' => "g4 argm xunimpaired",
-               ' ' => "g4 xunimpaired",
+               "\e"=> ["g7 mode", "normal mode"],
+
+               '`' => ["g2 v6", "previous lc mark"],
+               '#' => ["g2", "previous open #if<>/#else"],
+               '(' => ["g2", "previous open ("],
+               '*' => \'[/',
+               '/' => ["g2", "start of C com<>m<>ent"],
+               "'" => ["g2 v6", \"0[`^"],
+               '{' => ["g2", => "previous open {"],
+               '[' => ["g2", "section back<>ward<>s"],
+               '^['=> \"[\e",
+               ']' => ["g2", qq'<span style="font-variant:small-caps">section</span> back<>ward<>s'],
+
+               'c' => ["g2", "start of change backw<>ards"],
+               'd' => ["g1", "define line"],
+               'D' => ["g4", "defin<>ition"],
+               '^d'=> ["g3", "to defin<>it<>ion"],
+               'i' => ['g1', "first occur<>renc<>e line"],
+               'I' => ['g4', "first occur<>renc<>e"],
+               '^i'=> ['g3', "to first occur<>renc<>e"],
+               'm' => ["g2", "start of funct<>ion"],
+               'p' => ["g4", "P reind<>ent<>ed"],
+               'P' => \"[p",
+               's' => ["g3 v7", "last missp<>ell<>ing"],
+               'S' => ["g3 v7", "last bad word"],
+               'z' => ["g2 v6 folding", "start of open fold"],
+
+               # unimpaired
+               'a' => ["g3 xunimpaired", "prev<>ious file\nunimpaired map for :prev"],
+               'A' => ["g3 xunimpaired", "first file\nunimpaired map for :rew"],
+               'b' => ["g3 xunimpaired", "prev<>ious buffer\nunimpaired map for :bp"],
+               'B' => ["g3 xunimpaired", "first buffer\nunimpaired map for :br"],
+               'e' => ["g4 xunimpaired", "exchange line above\nunimpaired plugin"],
+               'f' => \'gf',  # deprecated
+               'f' => ["g3 xunimpaired", "preced<>ing file alph<>abet<>ic<>al<>ly\nunimpaired plugin"], # overrides native alias
+               'l' => ["g3 xunimpaired", "previous loc<>at<>ion\nunimpaired map for :lp"],
+               'L' => ["g3 xunimpaired", "first loc<>ation\nunimpaired map for :lr"],
+               '^l'=> ["g3 xunimpaired", "next file in loc<>at<>ions\nunimpaired map for :lpf"],
+               'n' => ["g3 xunimpaired", "previous conflict<>/hunk\nunimpaired plugin"],
+               'o' => ["g9 arg xunimpaired", "enable option\nunimpaired plugin"],
+               #'p' => ["g4 xunimpaired", "linewise paste before"],
+               'q' => ["g3 xunimpaired", "previous quickfix\nunimpaired map for :cp"],
+               'Q' => ["g3 xunimpaired", "first quickfix\nunimpaired map for :cr"],
+               '^q'=> ["g3 xunimpaired", "quickfix file b<>ack\nunimpaired map for :cpf"],
+               't' => ["g3 xunimpaired", "previous tag\nunimpaired map for :tp"],
+               'T' => ["g3 xunimpaired", "first tag\nunimpaired map for :tr"],
+               'u' => ["g4 argm xunimpaired", "url encode\nunimpaired plugin"],
+               'x' => ["g4 argm xunimpaired", "xml encode\nunimpaired plugin"],
+               'y' => ["g4 argm xunimpaired", "escape c str<>ing\nunimpaired plugin"],
+               ' ' => ["g4 xunimpaired", 'prepend blank l<>in<>e<>s'],
        }, # mode [
 
        ']' => {
                lead => "]",
 
-               "\e"=> "g7 mode",
-
-               "`" => "g2 v6",
-               '#' => "g2",
-               ')' => "g2",
-               '*' => "=]/",
-               "'" => '=$]`^ g2 v6',
-               '/' => "g2",
-               '[' => "g2",
-               '^['=> "=\e",
-               ']' => "g2",
-               '}' => "g2",
-
-               'c' => "g2",
-               'd' => "g1",
-               'D' => "g4",
-               '^d'=> "g3",
-               'f' => "=gf",  # deprecated
-               'i' => "g1",
-               'I' => "g4",
-               '^i'=> "g3",
-               'm' => "g2",
-               'p' => "g4",
-               'P' => "=[p",
-               's' => "g3 v7",
-               'S' => "g3 v7",
-               'z' => "g2 v6 folding",
-
-               'a' => "g3 xunimpaired",
-               'A' => "g3 xunimpaired",
-               'b' => "g3 xunimpaired",
-               'B' => "g3 xunimpaired",
-               'e' => "g4 xunimpaired",
-               'l' => "g3 xunimpaired",
-               'L' => "g3 xunimpaired",
-               '^l'=> "g3 xunimpaired",
-               '^l'=> "g3 xunimpaired",
-               'f' => "g3 xunimpaired", # overrides native alias
-               'n' => "g3 xunimpaired",
-               'o' => "g9 arg xunimpaired",
-               'q' => "g3 xunimpaired",
-               'Q' => "g3 xunimpaired",
-               '^q'=> "g3 xunimpaired",
-               't' => "g3 xunimpaired",
-               'T' => "g3 xunimpaired",
-               'u' => "g4 argm xunimpaired",
-               'x' => "g4 argm xunimpaired",
-               'y' => "g4 argm xunimpaired",
-               ' ' => "g4 xunimpaired",
+               "\e"=> ["g7 mode", "normal mode"],
+
+               '`' => ["g2 v6", "next lc mark"],
+               '#' => ["g2", "next open #endif<>/#else"],
+               ')' => ["g2", "next open )"],
+               '*' => \']/',
+               "'" => ["g2 v6", \'$]`^'],
+               '/' => ["g2", "end of C com<>m<>ent"],
+               '[' => ["g2", qq'<span style="font-variant:small-caps">section</span> forw<>ard'],
+               '^['=> \"]\e",
+               ']' => ["g2", "section forw<>ard"],
+               '}' => ["g2", "next open }"],
+
+               'c' => ["g2", "start of change forw<>ards"],
+               'd' => ["g1", "next define line"],
+               'D' => ["g4", "next define"],
+               '^d'=> ["g3", "to next define"],
+               'f' => \'gf',  # deprecated
+               'i' => ["g1", "next occur<>renc<>e line"],
+               'I' => ["g4", "next occur<>renc<>e"],
+               '^i'=> ["g3", "to occur<>renc<>e"],
+               'm' => ["g2", "end of funct<>ion"],
+               'p' => ["g4", "p reind<>ent<>ed"],
+               'P' => \'[p',
+               's' => ["g3 v7", "next missp<>ell<>ing"],
+               'S' => ["g3 v7", "next bad word"],
+               'z' => ["g2 v6 folding", "end of open fold"],
+
+               # unimpaired
+               'a' => ["g3 xunimpaired", "next file\nunimpaired map for :n"],
+               'A' => ["g3 xunimpaired", "last file\nunimpaired map for :la"],
+               'b' => ["g3 xunimpaired", "next buffer\nunimpaired map for :bn"],
+               'B' => ["g3 xunimpaired", "last buffer\nunimpaired map for :bl"],
+               'e' => ["g4 xunimpaired", "exchange line belo<>w\nunimpaired plugin"],
+               'f' => ["g3 xunimpaired", "next file alph<>abet<>ic<>al<>ly\nunimpaired plugin"], # overrides native alias
+               'l' => ["g3 xunimpaired", "next loc<>ation\nunimpaired map for :lne"],
+               'L' => ["g3 xunimpaired", "last loc<>ation\nunimpaired map for :lla"],
+               '^l'=> ["g3 xunimpaired", "file back in loc<>at<>ions\nunimpaired map for :lnf"],
+               'n' => ["g3 xunimpaired", "next confl<>ict<>/hunk\nunimpaired plugin"],
+               'o' => ["g9 arg xunimpaired", "disable option\nunimpaired plugin"],
+               'q' => ["g3 xunimpaired", "next quickfix error\nunimpaired map for :cn"],
+               'Q' => ["g3 xunimpaired", "last quickfix error\nunimpaired map for :cla"],
+               '^q'=> ["g3 xunimpaired", "next file in q<>uick<>f<>ix\nunimpaired map for :cnf"],
+               't' => ["g3 xunimpaired", "next tag\nunimpaired map for :tn"],
+               'T' => ["g3 xunimpaired", "last tag\nunimpaired map for :tl"],
+               'u' => ["g4 argm xunimpaired", "url decode\nunimpaired plugin"],
+               'x' => ["g4 argm xunimpaired", "xml decode\nunimpaired plugin"],
+               'y' => ["g4 argm xunimpaired", "unescap<>e c str<>ing\nunimpaired plugin"],
+               ' ' => ["g4 xunimpaired", 'add blank l<>in<>e<>s bel<>ow'],
        }, # mode ]
 
        '^w' => {
                lead => "ŵ",
 
-               "\e"=> "g7 mode",
-
-               '<' => "g3",
-               '>' => "g3",
-               '^' => "g4",
-               '_' => "g3",
-               '+' => "g3",
-               '-' => "g3",
-               '=' => "g3",
-               '^['=> "=\e",
-               ']' => "g3",
-               '}' => "g3",
-               '|' => "g3",
-
-               'b' => "g3",
-               'c' => "g3",
-               '^c'=> "g7 mode",
-               'd' => "g3",
-               'f' => "g4",
-               'F' => "g4 v7",
-               'g' => "g9 arg mode^wg",
-               'h' => "g3",
-               'H' => "g3",
-               'i' => "g3",
-               'j' => "g3",
-               'J' => "g3",
-               'k' => "g3",
-               'K' => "g3",
-               'l' => "g3",
-               'L' => "g3",
-               'n' => "g4",
-               'o' => "g3",
-               'p' => "g3",
-               'P' => "g3",
-               'q' => "g4",
-               'r' => "g3",
-               'R' => "g3",
-               's' => "g3",
-               'S' => "=^ws",
-               't' => "g3",
-               'T' => "g3 v7",
-               'v' => "g3",
-               'w' => "g3",
-               'W' => "g3",
-               'x' => "g3",
-               'z' => "g3",
+               "\e"=> ["g7 mode", "normal mode"],
+
+               '<' => ["g3", => "width decr<>ease"],
+               '>' => ["g3", => "width incr<>ease"],
+               '^' => ["g4", => "split, edit alt file"],
+               '_' => ["g3", => "set height"],
+               '+' => ["g3", => "height incr<>ease"],
+               '-' => ["g3", => "height decr<>ease"],
+               '=' => ["g3", => "same height"],
+               '^['=> \"^w\e",
+               ']' => ["g3", => "split, to tag"],
+               '}' => ["g3", => "pre<>view tag"],
+               '|' => ["g3", => "set width"],
+
+               'b' => ["g3", => "go to bot<>tom"],
+               'c' => ["g3", => ":close"],
+               '^c'=> ["g7 mode", "abort"],
+               'd' => ["g3", => "split, to def<>inition"],
+               'f' => ["g4", => "split, file edit"],
+               'F' => ["g4 v7", => "^wf, jump to line"],
+               'g' => ["g9 arg mode^wg", => "extra cmds"],
+               'h' => ["g3", => "go left"],
+               'H' => ["g3", => "move far left"],
+               'i' => ["g3", => "split, to decl of id<>ent<>ifier"],
+               'j' => ["g3", => "go down"],
+               'J' => ["g3", => "move to bottom"],
+               'k' => ["g3", => "go up"],
+               'K' => ["g3", => "move to top"],
+               'l' => ["g3", => "go right"],
+               'L' => ["g3", => "move far right"],
+               'n' => ["g4", => "open new"],
+               'o' => ["g3", => ":only current"],
+               'p' => ["g3", => "go to prev<>ious"],
+               'P' => ["g3", => "go to pre<>view"],
+               'q' => ["g4", => ":quit current"],
+               'r' => ["g3", => "rotate down<>ward<>s"],
+               'R' => ["g3", => "rotate up<>ward<>s"],
+               's' => ["g3", => "split horiz<>ont<>al<>ly"],
+               'S' => \'^ws',
+               't' => ["g3", => "go to top"],
+               'T' => ["g3 v7", => "to tab"],
+               'v' => ["g3", => "split vert<>ic<>al<>ly"],
+               'w' => ["g3", => "go to next\nWrap around"],
+               'W' => ["g3", => "go above<>/left"],
+               'x' => ["g3", => "ex<>chan<>ge"],
+               'z' => ["g3", => "close pre<>view"],
        }, # mode ^w
 
        '^wg' => {
                lead => "ŵg",
 
-               "\e"=> "g7 mode",
-               '^['=> "=\e",
-               ']' => "g3",
-               '}' => "g3",
-               '^]'=> "g3",
-               'f' => "g4 v7",
-               'F' => "g4 v7",
+               "\e"=> ["g7 mode", "normal mode"],
+               '^['=> \"^wg\e",
+               ']' => ["g3", => "split, :ts<>elect"],
+               '}' => ["g3", => ":ptj<>ump to tag"],
+               '^]'=> ["g3", "split, :tj<>ump"],
+               'f' => ["g4 v7", => "file in tab"],
+               'F' => ["g4 v7", => "^wgf, to line<>nr"],
        }, # mode ^w g
 
        v => {
-               "\e"=> "g7 mode",
-
-               '!' => "g4",
-               ':' => "g7 modec",
-               '<' => "g4",
-               '=' => 'g4 undo',
-               '>' => 'g4',
-               '~' => "g4 v6",
-               '^['=> "=\e",
-               '^]'=> "g3",
-               '^\\'=>'^\\',
-
-               'a' => 'g9 modeva arg v6',
-               'A' => 'g6 modei v6',
-               '^a'=> 'g4 undo v8',
-               'c' => 'g6 modei v6',
-               'C' => 'g6 modei v6',
-               '^c'=> "g7 mode",
-               'd' => "g4 v6",
-               'D' => "g4 v6",
-               'g' => "g9 arg modevg",
-               '^g'=> "g8",
-               'i' => "g9 modeva arg v6",
-               'I' => "g6 modei v6", # block
-               'J' => "g4",
-               'K' => 'g4',
-               'o' => "g2",
-               'O' => "g2",
-               '^o'=> "g8",
-               'p' => 'g4',
-               'P' => 'g4',
-               'r' => 'g4 arg',
-               'R' => "=vS",  # "might change in future"
-               's' => "=vc",
-               'S' => 'g6 modei v6',
-               'u' => "g4 v6",
-               'U' => "g4 v6",
-               'v' => "g8",
-               'V' => "g8",
-               '^v'=> "g8 v6",
-               'x' => "=vd",
-               'X' => "=vD",
-               '^x'=> 'g4 undo v8',
-               'y' => "g4",
-               'Y' => "g4",
-
-               (map { $_ => "=$_" } @motions, qw(
+               "\e"=> ["g7 mode", "normal mode"],
+
+               '!' => ["g4", "external filter"],
+               ':' => ["g7 modec", "cmd on range"],
+               '<' => ["g4", "un<>indent"],
+               '=' => ['g4 undo', "re<>ind<>ent"],
+               '>' => ['g4', "ind<>ent"],
+               '~' => ["g4 v6", "toggle case"],
+               '^['=> \"v\e",
+               '^]'=> ["g3", "jump to tag"],
+               '^\\'=>\'^\\',
+
+               'a' => ['g9 modeva arg v6', "ex<>tend area"],
+               'A' => ['g6 modei v6', "ap<>pend to block"], # block
+               '^a'=> ['g4 undo v8', "incr<>ement num<>bers"],
+               'c' => ['g6 modei v6', "repl<>ace area"],
+               'C' => ['g6 modei v6', "repl<>ace full lines"], # like vS, but blocks are extended until eol
+               '^c'=> ["g7 mode", "abort"],
+               'd' => ["g4 v6", "delete area"],
+               'D' => ["g4 v6", "delete lines"],
+               'g' => ["g9 arg modevg", "extra cmds"],
+               '^g'=> ["g8", "select mode"],
+               'i' => ["g9 modeva arg v6", "extend inner a<>r<>ea"],
+               'I' => ["g6 modei v6", "insert to block"], # block
+               'J' => ["g4", "join lines"],
+               'K' => ['g4', "help sel<>ect<>ion"],
+               'o' => ["g2", "to other corner"],
+               'O' => ["g2", "to other side"],
+               '^o'=> ["g8", "visual once"], # select
+               'p' => ['g4', "repl<>ace w/ paste"],
+               'P' => ['g4', "repl<>ace w/ paste"],
+               'r' => ['g4 arg', "fill up w/ ch<>ar"],
+               'R' => \'vS',  # "might change in future"
+               's' => \'vc',
+               'S' => ['g6 modei v6', "repl<>ace lines"],
+               'u' => ["g4 v6", "lower<>case"],
+               'U' => ["g4 v6", "upper<>case"],
+               'v' => ["g8", "char<>wise"],
+               'V' => ["g8", "line<>wise"],
+               '^v'=> ["g8 v6", "block<>wise"],
+               'x' => \'vd',
+               'X' => \'vD',
+               '^x'=> ['g4 undo v8', "decr<>ement num<>bers"],
+               'y' => ["g4", "yank area"],
+               'Y' => ["g4", "yank lines"],
+
+               (map { $_ => \$_ } @motions, qw(
                        ^b ^d ^e ^f ^i m q ^q ^s ^u ^w ^y z ^z "
-               )), # a lot like normal mode
+               )), # a lot like normal mode TODO
        }, # mode v
 
-       vg => {
+       'vg' => {
                lead => "g",
 
-               "\e"=> "g8 modev",
-
-               '^['=> "=\e",
-               '?' => "g4 v6",
-               '^a'=> 'g4 undo v8',
-               '^g' => "g1 vim6",
-               'c' => 'g4 xcommentary',
-               'J' => 'g4 v6',
-               'l' => 'g3 arg xlion',
-               'L' => 'g3 arg xlion',
-               'q' => "g4 v6",
-               'v' => "=gv",
-               'w' => 'g4 v7',
-               '^x'=> 'g4 undo v8',
+               "\e"=> ["g8 modev", "visual mode"],
+
+               '^['=> \"vg\e",
+               '?' => ["g4 v6", => "rot13 encode"],
+               '^a'=> ['g4 undo v8', "seq. incr<>ement"],
+               '^g' => ["g1 vim6", "count region info"],
+               'J' => ['g4 v6', => "join literal<>ly"],
+               'q' => ["g4 v6", => "for<>mat"],
+               'v' => \'gv',
+               'w' => ['g4 v7', => "for<>mat still"],
+               '^x'=> ['g4 undo v8', "seq. decr<>ement"],
+
+               # plugins
+               'c' => ['g4 xcommentary', => "(un)<>com<>ment\ncommentary or tComment plugin"],
+               'l' => ['g3 arg xlion', => "align to left\nlion plugin, also good for easy-align"],
+               'L' => ['g3 arg xlion', => "align to right\nlion plugin"],
        }, # mode v g
 
        va => {
-               "\e"=> "g8 modev",
-
-               '(' => "=vab",
-               ')' => "=vab",
-               '`' => "=va'",
-               "'" => 'g2 v7',
-               '"' => "=va'",
-               '<' => 'g2 v6',
-               '>' => "=va&lt;",
-               '[' => 'g2 v6',
-               '{' => "=vaB",
-               '^['=> "=\e",
-               ']' => "=va[",
-               '}' => "=vaB",
-
-               'b' => 'g2 v6',
-               'B' => 'g2 v6',
-               'p' => 'g2 v6',
-               's' => 'g2 v6',
-               't' => 'g2 v7',
-               'w' => 'g2 v6',
-               'W' => 'g2 v6',
+               "\e"=> ["g8 modev", "visual mode"],
+
+               '(' => \'vab',
+               ')' => \'vab',
+               '`' => \"va'",
+               "'" => ['g2 v7', "quoted string"],
+               '"' => \"va'",
+               '<' => ['g2 v6', => "&lt;&gt; block"],
+               '>' => \'va<',
+               '[' => ['g2 v6', => "[] block"],
+               '{' => \'vaB',
+               '^['=> \"va\e",
+               ']' => \'va[',
+               '}' => \'vaB',
+
+               'b' => ['g2 v6', => "() block"],
+               'B' => ['g2 v6', => "{} Block"],
+               'p' => ['g2 v6', => "para<>graph"],
+               's' => ['g2 v6', => "senten<>ce"],
+               't' => ['g2 v7', => "xml tag block"],
+               'w' => ['g2 v6', => "word"],
+               'W' => ['g2 v6', => '<span style="font-variant:small-caps">word</span>'],
        }, # mode v a
 
        #c => {
        #       desc => "command-line mode",
        #
-       #       '^_' => "=i^_",
-       #       '^^' => "=i^^",
+       #       '^_' => \"i^_",
+       #       '^^' => \"i^^",
        #       '^\\'=>'^\\',
-       #       '^a' => "", #todo
-       #       '^b' => "g3",
-       #       '^c' => "=i^c",
-       #       '^d' => "", #todo
-       #       '^e' => "g3",
-       #       '^h' => "=i^h",
-       #       '^j' => "g4",
-       #       '^k' => "=i^k",
-       #       '^l' => "", #todo
-       #       '^n' => "", #todo
-       #       '^p' => "", #todo
-       #       '^r' => "=i^r", # and then some...
-       #            ## ["g4 arg v6"],
-       #       '^q' => "=^q",
-       #       '^u' => "=i^u",
-       #       '^v' => "=i^v",
-       #       '^w' => "=i^w",
-       #       '^y' => "g4",
+       #       '^a' => ["", "complete"], #todo
+       #       '^b' => ["g3", "bol"],
+       #       '^c' => \"i^c",
+       #       '^d' => ["", "complete"], #todo
+       #       '^e' => ["g3", "eol"],
+       #       '^h' => \"i^h",
+       #       '^j' => ["g4", "execute cmd"],
+       #       '^k' => \"i^k",
+       #       '^l' => ["", "complete"], #todo
+       #       '^n' => ["", "complete"], #todo
+       #       '^p' => ["", "complete"], #todo
+       #       '^r' => \'i^r', # and then some...
+       #            ## ["g4 arg v6", "insert register"],
+       #       '^q' => \"^q",
+       #       '^u' => \"i^u",
+       #       '^v' => \"i^v",
+       #       '^w' => \"i^w",
+       #       '^y' => ["g4", "selec<>tion to clip<>b<>oard"],
        #}, # mode c
 
        i => {
-               "\e" => "g7 mode",
-
-               '^@' => "g4",
-               '^^' => "g4 v6",
-               '^['=> "=\e",
-               '^]' => "g4 v6",
-               '^_' => "g4 v6",
-               '^\\'=>'^\\',
-
-               '^a' => "g4 v6",
-               '^b' => "no v6",
-               '^c' => "g7 mode",
-               '^d' => 'g4',
-               '^e' => "g4 v6",
-               '^f' => 'g4',
-               '^g' => "g9 modei^g arg",
-               '^h' => "g4",
-               '^i' => "g4",
-               '^j' => "g4",
-               '^k' => 'g4 arg arg v6 linkdigraphs',
-               '^l' => "g7 mode v6",  # insertmode only
-               '^m' => "g4",
-               '^n' => "g2 v6",
-               '^o' => 'g4',
-               '^p' => "g2 v6",
-               '^q' => "=^q",  # or i^v
-               '^r' => 'g4 arg v6',
-               '^s' => "=^s",
-               '^t' => "g4",
-               '^u' => "g4",
-               '^v' => 'g4 linkcharset',
-               '^w' => "g4",
-               '^x' => 'g9 arg modei^x v6',
-               '^y' => "g4 v6",
-               '^z' => "g1 v6",  # insertmode only
+               "\e" => ["g7 mode", "normal mode"],
+
+               '^@' => ["g4", => "last insert"],
+               '^^' => ["g4 v6", => "toggle :lmap usag<>e"],
+               '^[' => \"i\e",
+               '^]' => ["g4 v6", => "abbrev<>iate"],
+               '^_' => ["g4 v6", => "toggle lang<>uage"],
+               '^\\'=>\'^\\',
+
+               '^a' => ["g4 v6", => "insert prev<>ious"],
+               '^b' => ["no v6", => "former i^_"],
+               '^c' => ["g7 mode", => "abort, no abbr"],
+               '^d' => ['g4', => "un<>ind<>ent"],
+               '^e' => ["g4 v6", => "ins char below"],
+               '^f' => ['g4', => "set indent<>ation"],
+               '^g' => ["g9 modei^g arg", => "extra cmds"],
+               '^h' => ["g4", => "back<>space"],
+               '^i' => ["g4", => "tab"],
+               '^j' => ["g4", => "enter"],
+               '^k' => ['g4 arg arg v6 linkdigraphs', => "di<>graph\nKey code"],
+               '^l' => ["g7 mode v6", => "<em>im</em> leave ins mode"],  # insertmode only
+               '^m' => ["g4", => "enter"],
+               '^n' => ["g2 v6", => "find next keyword"],
+               '^o' => ['g4', => "exec<>ute cmd"],
+               '^p' => ["g2 v6", => "find prev keyword"],
+               '^q' => \'^q',  # or i^v
+               '^r' => ['g4 arg v6', "insert reg<>ister"],
+               '^s' => \'^s',
+               '^t' => ["g4", => "indent"],
+               '^u' => ["g4", => "delete line"],
+               '^v' => ['g4 linkcharset', => "literal or ch<>ar<>cod<>e\nVerbatim or by Value"],
+               '^w' => ["g4", => "delete word back"],
+               '^x' => ['g9 arg modei^x v6', => "ex<>pand mode"],
+               '^y' => ["g4 v6", => "ins char above"],
+               '^z' => ["g1 v6", => ":sus<>pend in <em>im</em>"],  # insertmode only
        }, # modei
 
        'i^g' => {
                lead => "ĝ",
 
-               "\e"=> 'g6 modei',
+               "\e"=> ['g6 modei', "insert mode"],
 
-               'k' => 'g2',
-               'j' => 'g2',
-               's' => 'g4 arg xsurround',
-               'u' => 'g4',
-               'U' => 'g4 v8',
+               'k' => ['g2', => "<up> start col<>umn"],
+               'j' => ['g2', => "<down> start col<>umn"],
+               'u' => ['g4', => "break undo seq<>uence"],
+               'U' => ['g4 v8', => "keep undo seq<>uence"],
                # other keys (even esc) are not recognized
+
+               's' => ['g4 arg xsurround', => "sur<>round\nsurround plugin"],
        }, # mode i ^g
 
        'i^x' => {
                lead => "x̂",
 
-               "\e" => "g7 mode", # yes, it really leaves insert mode
-
-               '^['=> "=\e",
-               '^]' => 'g4',
-               '^d' => 'g4',
-               '^e' => "g3",
-               '^f' => 'g4',
-               '^i' => 'g4',
-               '^k' => 'g4',
-               '^l' => 'g4',
-               '^n' => 'g4',
-               '^o' => 'g4 v7',
-               '^p' => 'g4',
-               '^s' => 'g4',
-                's' => "=i^x^s",
-               '^t' => 'g4',
-               '^u' => 'g4 v7',
-               '^v' => 'g4',
-               '^y' => "g3",
+               "\e" => ["g7 mode", "normal mode"], # yes, it really leaves insert mode
+
+               '^['=> \"i^x\e",
+               '^]' => ['g4', => "tag comp<>l<>et<>e"],
+               '^d' => ['g4', => "def<>ine compl<>et<>e"],
+               '^e' => ["g3", => "window up"],
+               '^f' => ['g4', => "file comp<>l<>et<>e"],
+               '^i' => ['g4', => "ident comp<>l<>et<>e"],
+               '^k' => ['g4', => "dict comp<>l<>et<>e"],
+               '^l' => ['g4', => "line comp<>l<>et<>e"],
+               '^n' => ['g4', => "next comp<>l<>et<>e"],
+               '^o' => ['g4 v7', => "omni comp<>l<>et<>e"],
+               '^p' => ['g4', => "prev comp<>l<>ete"],
+               '^s' => ['g4', => "spell sugg<>est"],
+                's' => \'i^x^s',
+               '^t' => ['g4', => "thes<>aur<>us compl<>et<>e"],
+               '^u' => ['g4 v7', => "cus<>tom comp<>l<>et<>e"],
+               '^v' => ['g4', => "ex cmd compl<>et<>e"],
+               '^y' => ["g3", => "window down"],
        }, # mode i ^x
 
        d => {
                lead => "d",
 
-               "\e"=> "g7 mode",
-               '^['=> "=\e",
-
-               (map { $_ => 'g4' } @motions),
-               (map { $_ => 'g4 arg' } qw( f F t T ` ' / ? )), # @motions with option
-               (map { $_ => "=v$_" } qw( a i )), # motions from virtual
-               (map { $_ => "=$_" } qw( g z [ ]  \\ ^\\ ^q ^s ^z )),
-
-               'd'  => 'g4',
-               'o'  => 'g5',
-               'p'  => 'g5',
-               's'  => 'g4 arg xsurround',
-
-               'l'  => '=x',
-               'h'  => '=X',
-               '^h' => '=X',
-               '^j' => '=dj',
-               '^m' => '=dj',
-               '^n' => '=dj',
-               '+'  => '=dj',
-               '^p' => '=dk',
-               '-'  => '=dk',
-               '$'  => '=D',
-               '_'  => '=dd',
+               "\e"=> ["g7 mode", "normal mode"],
+               '^['=> \"d\e",
+
+               'd'  => ['g4', 'delete line'],
+               'o'  => ['g5', 'diff obtain'],
+               'p'  => ['g5', 'diff put'],
+               's'  => ['g4 arg xsurround', 'delete surr<>oun<>d<>ing'],
+
+               (map { ($_ => [\$_, "delete to <alias>$_"]) } qw( g z [ ] )), # modes
+
+               # commands
+               (map { $_ => \$_ } qw( \\ ^\\ ^q ^s ^z )),
+               'l'  => \'x',
+               'h'  => \'X',
+               '^h' => \'X',
+               '^j' => \'dj',
+               '^m' => \'dj',
+               '^n' => \'dj',
+               '+'  => \'dj',
+               '^p' => \'dk',
+               '-'  => \'dk',
+               '$'  => \'D',
+               '_'  => \'dd',
+
+               # simple @motions
+               'W' => ['g4', 'delete <span style="font-variant:small-caps">word</span>'],
+               'b' => ['g4', 'delete <left> word'],
+               'B' => ['g4', 'delete <left> <span style="font-variant:small-caps">word</span>'],
+               'e' => ['g4', 'delete word e<>nd'],
+               'E' => ['g4', 'delete <span style="font-variant:small-caps">word</span> e<>nd'],
+               'G' => ['g4', 'delete to line<>/eof'],
+               'H' => ['g4', 'delete to top'],
+               'j' => ['g4', 'delete <down> line'],
+               'k' => ['g4', 'delete <up> line'],
+               'L' => ['g4', 'delete to bottom'],
+               'M' => ['g4', 'delete to middle'],
+               'n' => ['g4', 'delete to next res<>ult'],
+               'N' => ['g4', 'delete to prev res<>ult'],
+               'w' => ['g4', 'delete word'],
+               ',' => ['g4', 'delete to prev ch<>ar<>acter'],
+               ';' => ['g4', 'delete to next ch<>ar<>acter'],
+               '*' => ['g4', 'delete to find'],
+               '#' => ['g4', 'delete <left> to find'],
+               '%' => ['g4', 'delete to line pct'],
+               '^' => ['g4', 'delete to soft bol'],
+               '0' => ['g4', 'delete to bol'],
+               '|' => ['g4', 'delete to col<>umn'],
+               '{' => ['g4', 'delete <left> par<>agr<>aph'],
+               '}' => ['g4', 'delete rest of p<>ar<>agr<>aph'],
+               '(' => ['g4', 'delete <left> senten<>ce'],
+               ')' => ['g4', 'delete rest of s<>en<>ten<>ce'],
+
+               # @motions with option
+               'f' => ['g4 arg', 'delete to char<>acter'],
+               'F' => ['g4 arg', 'delete <left> to char<>acter'],
+               't' => ['g4 arg', 'delete upto ch<>ar<>acter'],
+               'T' => ['g4 arg', 'delete <left> upto ch<>ar<>acter'],
+               '`' => ['g4 arg', 'delete to mark'],
+               "'" => ['g4 arg', 'delete lines to m<>ark'],
+               '/' => ['g4 arg', 'delete to res<>ult'],
+               '?' => ['g4 arg', 'delete <left> to res<>ult'],
+
+               # motions from virtual
+               'a' => ['g9 modeva arg v6 alias', 'delete area'], # va
+               'i' => ['g9 modeva arg v6 alias', 'delete inner'], # vi
        }, # mode d
 
+       # y => { 'o' => ['g9 arg xunimpaired', "toggle option\nunimpaired plugin"] }, # TODO
+
        # TODO: mode/ (command-line)
        # XXX ex mode if you want to go completely wild
 },