vi: g^g is an incompatible feature introduced by vim
[sheet.git] / vi.inc.pl
index a4a20e877e90a714d9fc779259b2600acc88c261..322760fe3b748539cd1c73f3423114f66014a321 100644 (file)
--- a/vi.inc.pl
+++ b/vi.inc.pl
 use utf8;
+{
 
 '' => {
-       desc => "normal mode",
-
-       '~' => ["case toggle", "co undo"],
-       '!' => ["filt$sign{_}er lines", "co argm undo modec"],
-       '@' => ["play macro", "co arg undo"],
-       '#' => ["rev. find word", "pm ext vim6"],
-       '$' => ["eol", "pm"],
-       '%' => ["goto match", "pm"],
-       '^' => ['"soft" bol', "pm"],
-       '&' => [":s rep$sign{_}eat", "co undo"],
-       '*' => ["find word", "pm ext vim6"],
-       '(' => ["begin senten$sign{_}ce", 'pm'],
-       ')' => ["end senten$sign{_}ce", 'pm'],
-       '_' => ['"soft" bol down', "pm"],
-       '+' => ["next line", "pm"],
-       '`' => ["goto mark", "pm arg"],
-       '0' => ['"hard" bol', "pm"],
-       '^^'=> ["edit alt. file", "co"],
-       '-' => ["prev line", "pm"],
-       '=' => ["re$sign{_}ind$sign{_}ent", 'co argm undo'],
-       '?' => ["find rev.", "pm arg modec"],
-       ';' => ["repeat t/f/T/F", "pm"],
-       ':' => ["ex cmd line", "co modec"],
-       "'" => ["goto mark bol", "pm arg"],
-       '"' => ["use reg$sign{_}ister", 'co arg'],
-       '\\' => ["reser$sign{_}ved", 'me arg'],
-       '^\\' => ["to mode/$sign{_}ext$sign{_}ens$sign{_}ion$sign{_}s", "mo arg"],
-       ',' => ["reverse t/T/f/F", "pm"],
-       '<' => ["un$sign{_}ind$sign{_}ent", "co argm undo"],
-       '.' => ["repeat last cmd", "co undo"],
-       '>' => ["ind$sign{_}ent", "co argm undo"],
-       '/' => ["find", "pm arg modec"],
-       '[' => ["move back$sign{_}ward$sign{_}s", "me arg mode["],
-       '{' => ["begin parag.", "pm"],
-       ']' => ["move forw$sign{_}ard", "me arg mode]"],
-       '}' => ["end parag.", "pm"],
-       '^]'=> ["go to tag", "po"],
-       '|' => ["goto (1st) col", "pm"],
-
-       'a' => ["app$sign{_}end", "mi undo modei"],
-       'A' => ["app$sign{_}end to eol", "mi undo modei"],
-       '^a'=> ["incr$sign{_}ement", "co undo", "Add one"],
-       'b' => ["prev word", "pm", "Back"],
-       'B' => ['prev <span style="font-variant:small-caps">word</span>', "pm"],
-       '^b'=> ["page up", "pm"],
-       'c' => ["chan$sign{_}ge", "mi argm undo modei"],
-       'C' => ["chan$sign{_}ge to eol", "mi undo modei"],
-       '^c'=> ["abort", "co"],
-       'd' => ["del$sign{_}ete", "co argm undo"],
-       'D' => ["delete to eol", "co undo"],
-       '^d'=> ["scroll down", "po"],
-       'e' => ["end word", "pm"],
-       'E' => ['end <span style="font-variant:small-caps">word</span>', "pm"],
-       '^e'=> ["window down", "po", "Extra line"],
-       'f' => ["fwd to char", "pm arg"],
-       'F' => ["back$sign{_}wd to char", "pm arg"],
-       '^f'=> ["page down", "pm", "page Forward"],
-       'g' => ["extra cmds", "me arg modeg"],
-       'G' => ["eof/$sign{_}goto ln", "pm"],
-       '^g'=> [":file (info)", "ci"],
-       'h' => [$sign{left}, "pm"],
-       'H' => ["screen top", "pm", 'Home row'],
-       '^h'=> "h",
-       'i' => ["insert mode", "mi undo modei"],
-       'I' => ["insert at bol", "mi undo modei"],
-       '^i'=> ["jump to newer", "pm ext vim6", 'Increase position'],
-       'j' => [$sign{down}, "pm"],
-       'J' => ["join lines", "co undo"],
-       '^j'=> "j",
-       'k' => [$sign{up}, "pm"],
-       'K' => ["help", "co", "looKup Keyword"],
-       'l' => [$sign{right}, "pm"],
-       'L' => ["screen bottom", "pm", "Lowermost Line"],
-       '^l'=> ["redraw", "ci"],
-       'm' => ["set mark", "co arg"],
-       'M' => ["screen mid$sign{_}dle", "pm"],
-       '^m'=> "+",
-       'n' => ["next find", "pm"],
-       'N' => ["prev find", "pm"],
-       '^n'=> "j",
-       'o' => ["line below", "mi undo modei", 'Open'],
-       'O' => ["line above", "mi undo modei"],
-       '^o'=> ["jump to older", "pm ext vim6"],
-       'p' => ["paste after", "co undo"],
-       'P' => ["paste before", "co undo"],
-       '^p'=> "k",
-       'q' => ["rec$sign{_}ord macro", "mo arg", "Queue seQuence"],
-       'Q' => ["ex mode", "mo"],
-       '^q'=> ["(xon)", "ci", 'Qome back'], # or ^v
-       'r' => ["repl$sign{_}ace char", "co arg undo"],
-       'R' => ["repl$sign{_}ace mode", "mi undo modei"],
-       '^r'=> ["redo", "co undo ext vim6"],
-       's' => ["subst char", "mi undo modei"],
-       'S' => ["subst line", "mi undo modei"],
-       '^s'=> ["(xoff)", "ci", 'Stop'],
-       't' => ["till char", "pm arg"],
-       'T' => ["back till char", "pm"],
-       '^t'=> ["back tag", "po"], # backtrag :P
-       'u' => ["undo", "co undo"],
-       'U' => ["undo line", "co undo"],
-       '^u'=> ["scroll up", "po"],
-       'v' => ["visual mode", "mv modev"],
-       'V' => ["visual lines", "mv modev"],
-       '^v'=> ["visual block", "mv modev ext vim6"],
-       'w' => ["next word", "pm"],
-       'W' => ['next <span style="font-variant:small-caps">word</span>', "pm"],
-       '^w'=> ["win$sign{_}dow cmds", "me arg mode^w"],
-       'x' => ["delete char", "co undo"],
-       'X' => ["back$sign{_}space", "co undo"],
-       '^x'=> ["subs$sign{_}tract", "co undo"],
-       'y' => ["yank", "co argm", '(copy)'],
-       'Y' => ["yank line", "co"],
-       '^y'=> ["window up", "po", 'Yield'],
-       'z' => ["extra cmds", "me arg modez"],
-       'Z' => ["quit", "me arg modeZ"],
-       '^z'=> [":sus$sign{_}pend", "ci", 'zzz (as in sleep)'],
+       '~' => "g4 undo",
+       '!' => "g4 argm undo modec",
+       '@' => "g4 arg undo",
+       '#' => "g2 ext vim6",
+       '$' => "g2",
+       '%' => "g2",
+       '^' => "g2",
+       '&' => "g4 undo",
+       '*' => "g2 ext vim6",
+       '(' => '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'=> "g2",
+       'c' => "g6 argm undo modei",
+       'C' => "g6 undo modei",
+       '^c'=> "g4",
+       'd' => "g4 argm undo",
+       'D' => "g4 undo",
+       '^d'=> "g3",
+       'e' => "g2",
+       'E' => "g2",
+       '^e'=> "g3",
+       'f' => "g2 arg",
+       'F' => "g2 arg",
+       '^f'=> "g2",
+       'g' => "g9 arg modeg",
+       'G' => "g2",
+       '^g'=> "g1",
+       'h' => "g2",
+       'H' => "g2",
+       '^h'=> "=h",
+       'i' => "g6 undo modei",
+       'I' => "g6 undo modei",
+       '^i'=> "g2 ext vim6",
+       '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 ext vim6",
+       '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 ext vim6",
+       '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 ext vim6",
+       '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",
 }, # normal mode
 
 g => {
-       desc => "extended commands (g)",
        lead => "g",
 
-       '~' => ["case toggl$sign{_}e", "co argm ext vim6"],
-       '@' => ["oper$sign{_}at$sign{_}or$sign{_}func", "co ext vim7 new"],
-       '#' => ["rev. find string", "pm ext vim6"],
-       '$' => ["virt$sign{_}ual eol", "pm"],
-       '^' => [qq'"soft" bol v$sign{_}irt$sign{_}ual', "pm ext vim6"],
-       '&' => [":s rep$sign{_}eat glob$sign{_}al$sign{_}ly", "co", "Global substitute"],
-       '*' => ["find string", "pm ext vim6"],
-       '_' => [qq'"soft" eol', "pm ext vim6"],
-       '+' => ["later undo", "co ext vim7 new"],
-       '`' => ["to mark keepj$sign{_}umps", "pm ext vim6 arg"],
-       '8' => ["char hex val$sign{_}ue$sign{_}s", "ci"],
-       '0' => ["virtual bol", "pm ext vim6"],
-       '-' => ["earlier undo", "co ext vim7 new"],
-       '^['=> ["esc", "mo mode"],
-       ']' => ["go to tselect", "po"],
-       '^]'=> ["go to tjump", "po"],
-       ';' => ["to prev change pos", "pm"],
-       "'" => ["to mark keepj$sign{_}umps", "pm ext vim6 arg"],
-       '<' => ["see prev cmd output", "co ext vim7 new"],
-       '?' => ["rot13 encode", "co argm ext vim6"],
-       ',' => ["to next change pos", "pm"],
-
-       'a' => ["char value", "ci", "Get Ascii value"],
-       '^a'=> ["mem usage stats", "ci"],
-       'd' => ["local declar$sign{_}ation", "pm ext vim6"],
-       'D' => ["global declar$sign{_}ation", "pm ext vim6"],
-       'e' => ["back to word end", "pm"],
-       'E' => [qq'back to <span style="font-variant:small-caps">word</span> end', "pm"],
-       'f' => ["edit file at cur$sign{_}sor", "co ext vim6", "Goto File"],
-       'F' => ["edit file + jump", "co ext vim7 new"],
-       'g' => ["first line", "pm"],
-       '^g'=> ["cur$sign{_}sor pos info", "ci"],
-       'h' => ["select mode", "mv modev", "Get Highlighted"],
-       'H' => ["select lines", "mv modev", "Get Highlighted"],
-       '^h'=> ["select block", "mv modev ext vim6", "Get Highlighted"],
-       'i' => ["insert at last pos", "mi undo modei"],
-       'I' => ["insert at soft bol", "mi undo modei"],
-       'j' => ["$sign{down} screen", "pm ext vim6"],
-       'J' => ["join leave spac$sign{_}ing", "co"],
-       'k' => ["$sign{up} screen", "pm ext vim6"],
-       'm' => ["cen$sign{_}ter screen", "pm ext vim6"],
-       'o' => [":goto (byte)", "pm"],
-       'p' => ["paste still", "co undo"],
-       'P' => ["paste before still", "co"],
-       'q' => ["for$sign{_}mat", "co argm"],
-       'Q' => ["ex mode manual :", "mo ext vim6"],
-       'r' => ["virt. repl$sign{_}ace char", "co arg"],
-       'R' => ["virt. repl$sign{_}ace mode", "mi undo modei"],
-       's' => ["sleep", "ci ext vim6", "Go to Sleep"],
-       't' => ["next tab", "po ext vim7 new", "Goto Tab"],
-       'T' => ["tab back", "po ext vim7 new"],
-       'u' => ["lower$sign{_}case", "co argm ext vim6"], # XXX undo?
-       'U' => ["up$sign{_}per$sign{_}case", "co undo argm ext vim6"],
-       'v' => ["prev$sign{_}ious highl$sign{_}ight", 'mv modev', 'precedinG Visual'],
-       'V' => ["avoid resel$sign{_}ect$sign{_}ion", "co"],
-       'w' => ["for$sign{_}mat still", "co argm ext vim7 new"],
-       'x' => ["Netrw$sign{_}BrowseX", "co ext vim7 new"],
+       "\e"=> "g7 mode",
+
+       '~' => "g4 argm ext vim6",
+       '@' => "g4 ext vim7 new",
+       '#' => "g2 ext vim6",
+       '$' => "g2",
+       '^' => "g2 ext vim6",
+       '&' => "g4",
+       '*' => "g2 ext vim6",
+       '_' => "g2 ext vim6",
+       '+' => "g4 ext vim7 new",
+       '`' => "g2 ext vim6 arg",
+       '8' => "g1",
+       '0' => "g2 ext vim6",
+       '-' => "g4 ext vim7 new",
+       '^['=> "g7 mode",
+       ']' => "g3",
+       '^]'=> "g3",
+       ';' => "g2",
+       "'" => "g2 ext vim6 arg",
+       '<' => "g4 ext vim7 new",
+       '?' => "g4 argm ext vim6",
+       ',' => "g2",
+
+       'a' => "g1",
+       '^a'=> "g1",
+       'd' => "g2 ext vim6",
+       'D' => "g2 ext vim6",
+       'e' => "g2",
+       'E' => "g2",
+       'f' => "g4 ext vim6",
+       'F' => "g4 ext vim7 new",
+       'g' => "g2",
+       '^g'=> "g1 vim6",
+       'h' => "g8 modev",
+       'H' => "g8 modev",
+       '^h'=> "g8 modev ext vim6",
+       'i' => "g6 undo modei",
+       'I' => "g6 undo modei",
+       'j' => "g2 ext vim6",
+       'J' => "g4",
+       'k' => "g2 ext vim6",
+       'm' => "g2 ext vim6",
+       'o' => "g2",
+       'p' => "g4 undo",
+       'P' => "g4",
+       'q' => "g4 argm",
+       'Q' => "g7 ext vim6",
+       'r' => "g4 arg",
+       'R' => "g6 undo modei",
+       's' => "g1 ext vim6",
+       't' => "g3 ext vim7 new",
+       'T' => "g3 ext vim7 new",
+       'u' => "g4 argm ext vim6", # XXX undo?
+       'U' => "g4 undo argm ext vim6",
+       'v' => 'g8 modev',
+       'V' => "g4",
+       'w' => "g4 argm ext vim7 new",
+       'x' => "g4 ext vim7 new",
 }, # mode g
 
 Z => {
-       desc => "quit commands",
        lead => "Z",
 
-       '^['=> ["esc", "mo mode"],
+       "\e"=> "g7 mode",
+       '^['=> "=\e",
 
-       'Q' => [" :q! (force)", "co ext vim6"],
-       'Z' => [" :wq (write)", "co"],
+       'Q' => "g4 ext vim6",
+       'Z' => "g4",
 }, # mode Z
 
 z => {
-       desc => "additional commands (z)",
        lead => "z",
 
-       '^' => ["page above", "po"],
-       '+' => ["page below", "po"],
-       '-' => ["line at bottom bol", "po", "don't (-) see any further"],
-       '=' => ["sug$sign{_}gest spell$sign{_}ing", "co ext vim7 new"],
-       '.' => ["line at center bol", "po"],
-       '^['=> ["esc", "mo mode"],
-
-       'a' => ["toggle fold", "co ext vim6 folding"],
-       'A' => ["toggle fold rec$sign{_}urs$sign{_}ive$sign{_}ly", "co ext vim6 folding"],
-       'b' => ["line at bot. bol", "po"],
-       'c' => ["close fold", "co ext vim6 folding"],
-       'C' => ["close folds rec$sign{_}curs$sign{_}ive$sign{_}ly", "co ext vim6 folding"],
-       'd' => ["delete fold", "co ext vim6 folding"],
-       'D' => ["delete folds rec$sign{_}urs$sign{_}ive", "co ext vim6 folding"],
-       'e' => ["cursor at right side", "po"],
-       'E' => ["elimi$sign{_}nate f$sign{_}olds", "co ext vim6 folding"],
-       'f' => ["create fold", "co argm ext vim6 folding"],
-       'F' => ["fold lines", "co ext vim6 folding"],
-       'g' => ["add spell$sign{_}ing", "co ext vim7 new", 'Good word'],
-       'G' => ["temp spell$sign{_}ing", "co ext vim7 new"],
-       'h' => ["scroll $sign{right}", "po"],
-       'H' => ["scroll $sign{right} half scr$sign{_}een", "po"],
-       'i' => ["toggle all folds", "co ext vim6 folding"],
-       'j' => ["next fold start", "pm ext vim6 folding"],
-       'k' => ["prev fold end", "pm ext vim6 folding"],
-       'l' => ["scroll $sign{left}", "po"],
-       'L' => ["scroll $sign{left} half scr$sign{_}een", "po"],
-       '^m'=> ["line at top bol", "po"],
-       'm' => ["fold more", "co ext vim6 folding"],
-       'M' => ["close all folds", "co ext vim6 folding"],
-       'n' => ["fold none", "co ext vim6 folding"],
-       'N' => ["fold norm$sign{_}al", "co ext vim6 folding"],
-       'o' => ["open fold", "co ext vim6 folding"],
-       'O' => ["open folds rec$sign{_}urs$sign{_}ive$sign{_}ly", "co ext vim6 folding"],
-       'r' => ["reduce folding", "co ext vim6 folding"],
-       'R' => ["open all folds", "co ext vim6 folding"],
-       's' => ["cursor at left side", "po"],
-       't' => ["line at top", "po"],
-       'u' => ["undo spell$sign{_}ing", "co arg ext vim7 new"],
-       'v' => ["unfold cursor line", "co ext vim6 folding"],
-       'w' => ["add missp$sign{_}ell$sign{_}ing", "co ext vim7 new", "Wrong word"],
-       'W' => ["temp missp$sign{_}ell$sign{_}ing", "co ext vim7 new"],
-       'x' => ["update folds", "co ext vim6 folding"],
-       'X' => ["re$sign{_}apply f$sign{_}olds", "co ext vim6 folding"],
-       'z' => ["line at center", "po", "Zee Zenter (with a funny accent)"],
+       "\e"=> "g7 mode",
+
+       '^' => "g3",
+       '+' => "g3",
+       '-' => "g3",
+       '=' => "g4 ext vim7 new",
+       '.' => "g3",
+       '^['=> "=\e",
+
+       'a' => "g4 ext vim6 folding",
+       'A' => "g4 ext vim6 folding",
+       'b' => "g3",
+       'c' => "g4 ext vim6 folding",
+       'C' => "g4 ext vim6 folding",
+       'd' => "g4 ext vim6 folding",
+       'D' => "g4 ext vim6 folding",
+       'e' => "g3",
+       'E' => "g4 ext vim6 folding",
+       'f' => "g4 argm ext vim6 folding",
+       'F' => "g4 ext vim6 folding",
+       'g' => "g4 ext vim7 new",
+       'G' => "g4 ext vim7 new",
+       'h' => "g3",
+       'H' => "g3",
+       'i' => "g4 ext vim6 folding",
+       'j' => "g2 ext vim6 folding",
+       'k' => "g2 ext vim6 folding",
+       'l' => "g3",
+       'L' => "g3",
+       '^m'=> "g3",
+       'm' => "g4 ext vim6 folding",
+       'M' => "g4 ext vim6 folding",
+       'n' => "g4 ext vim6 folding",
+       'N' => "g4 ext vim6 folding",
+       'o' => "g4 ext vim6 folding",
+       'O' => "g4 ext vim6 folding",
+       'r' => "g4 ext vim6 folding",
+       'R' => "g4 ext vim6 folding",
+       's' => "g3",
+       't' => "g3",
+       'u' => "g4 arg ext vim7 new",
+       'v' => "g4 ext vim6 folding",
+       'w' => "g4 ext vim7 new",
+       'W' => "g4 ext vim7 new",
+       'x' => "g4 ext vim6 folding",
+       'X' => "g4 ext vim6 folding",
+       'z' => "g3",
 }, # mode z
 
 '[' => {
-       desc => "backward search commands ([)",
        lead => "[",
 
-       "`" => ["previous lc mark", "pm ext vim6"],
-       '#' => ["previous open #if$sign{_}/#else", "pm"],
-       '(' => ["previous open (", "pm"],
-       '*' => "[/",
-       '/' => ["start of C com$sign{_}m$sign{_}ent", "pm"],
-       "'" => "[` ^", # ext vim6
-       '{' => ["previous open {", "pm"],
-       '[' => ["section back$sign{_}ward$sign{_}s", "pm"],
-       '^['=> ["esc", "mo mode"],
-       ']' => [qq'<span style="font-variant:small-caps">section</span> back$sign{_}ward$sign{_}s', "pm"],
-
-       'c' => ["start of change backw$sign{_}ards", "pm"],
-       'd' => ["define line", "ci"],
-       'D' => ["defin$sign{_}ition", "co"],
-       '^d'=> ["to defin$sign{_}it$sign{_}ion", "po"],
-       'f' => "gf",  # deprecated
-       'i' => ["first occur$sign{_}renc$sign{_}e line", 'ci'],
-       'I' => ["first occur$sign{_}renc$sign{_}e", 'co'],
-       '^i'=> ["to first occur$sign{_}renc$sign{_}e", 'po'],
-       'm' => ["start of funct$sign{_}ion", "pm"],
-       'p' => ["P reind$sign{_}ent$sign{_}ed", "co"],
-       'P' => ["[p", "co"],
-       's' => ["last missp$sign{_}ell$sign{_}ing", "po ext vim7 new"],
-       'S' => ["last bad word", "po ext vim7 new"],
-       'z' => ["start of open fold", "pm ext vim6 folding"],
+       "\e"=> "g7 mode",
+
+       "`" => "g2 ext vim6",
+       '#' => "g2",
+       '(' => "g2",
+       '*' => "=[/",
+       '/' => "g2",
+       "'" => "=[` ^", # ext vim6
+       '{' => "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' => "g4",
+       's' => "g3 ext vim7 new",
+       'S' => "g3 ext vim7 new",
+       'z' => "g2 ext vim6 folding",
 }, # mode [
 
 ']' => {
-       desc => "forward search commands (])",
        lead => "]",
 
-       "`" => ["next lc mark", "pm ext vim6"],
-       '#' => ["next open #endif$sign{_}/#else", "pm"],
-       ')' => ["next open )", "pm"],
-       '*' => "]/",
-       "'" => "]` ^", # ext vim6
-       '/' => ["end of C com$sign{_}m$sign{_}ent", "pm"],
-       '[' => [qq'<span style="font-variant:small-caps">section</span> forw$sign{_}ard', "pm"],
-       '^['=> ["esc", "mo mode"],
-       ']' => ["section forw$sign{_}ard", "pm"],
-       '}' => ["next open }", "pm"],
-
-       'c' => ["start of change forw$sign{_}ards", "pm"],
-       'd' => ["next define line", "ci"],
-       'D' => ["next define", "co"],
-       '^d'=> ["to next define", "po"],
-       'f' => "gf",  # deprecated
-       'i' => ["next occur$sign{_}renc$sign{_}e line", "ci"],
-       'I' => ["next occur$sign{_}renc$sign{_}e", "co"],
-       '^i'=> ["to occur$sign{_}renc$sign{_}e", "po"],
-       'm' => ["end of funct$sign{_}ion", "pm"],
-       'p' => ["p reind$sign{_}ent$sign{_}ed", "co"],
-       'P' => "[p",
-       's' => ["next missp$sign{_}ell$sign{_}ing", "po ext vim7 new"],
-       'S' => ["next bad word", "po ext vim7 new"],
-       'z' => ["end of open fold", "pm ext vim6 folding"],
+       "\e"=> "g7 mode",
+
+       "`" => "g2 ext vim6",
+       '#' => "g2",
+       ')' => "g2",
+       '*' => "=]/",
+       "'" => "=]` ^", # ext vim6
+       '/' => "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 ext vim7 new",
+       'S' => "g3 ext vim7 new",
+       'z' => "g2 ext vim6 folding",
 }, # mode ]
 
 '^w' => {
-       desc => "window commands (ctrl-w)",
-       lead => $ascii ? "'w"  : "ŵ",
-
-       '<' => ["width decr$sign{_}ease", "po"],
-       '>' => ["width incr$sign{_}ease", "po"],
-       '^' => ["split, edit alt file", "co"],
-       '_' => ["set height", "po"],
-       '+' => ["height incr$sign{_}ease", "po"],
-       '-' => ["height decr$sign{_}ease", "po"],
-       '=' => ["same height", "po"],
-       '^['=> ["esc", "mo mode"],
-       ']' => ["split, to tag", "po"],
-       '}' => ["pre$sign{_}view tag", "po"],
-       '|' => ["set width", "po"],
-
-       'b' => ["go to bot$sign{_}tom", "po"],
-       'c' => [":close", "po"],
-       '^c'=> ["abort", "mo mode"],
-       'd' => ["split, to def$sign{_}inition", "po"],
-       'f' => ["split, file edit", "co"],
-       'F' => ["^wf, jump to line", "co ext vim7 new"],
-       'g' => ["extra cmds", "me arg mode^wg"],
-       'h' => ["go left", "po"],
-       'H' => ["move far left", "po"],
-       'i' => ["split, to decl of id$sign{_}ent$sign{_}ifier", "po"],
-       'j' => ["go down", "po"],
-       'J' => ["move to bottom", "po"],
-       'k' => ["go up", "po"],
-       'K' => ["move to top", "po"],
-       'l' => ["go right", "po"],
-       'L' => ["move far right", "po"],
-       'n' => ["open new", "co"],
-       'o' => [":only current", "po"],
-       'p' => ["go to prev$sign{_}ious", "po"],
-       'P' => ["go to pre$sign{_}view", "po"],
-       'q' => [":quit current", "co"],
-       'r' => ["rotate down$sign{_}ward$sign{_}s", "po"],
-       'R' => ["rotate up$sign{_}ward$sign{_}s", "po"],
-       's' => ["split horiz$sign{_}ont$sign{_}al$sign{_}ly", "po"],
-       'S' => "^ws",
-       't' => ["go to top", "po"],
-       'v' => ["split vert$sign{_}ic$sign{_}al$sign{_}ly", "po"],
-       'w' => ["go to next", "po", "Wrap around"],
-       'W' => ["go above$sign{_}/left", "po"],
-       'x' => ["ex$sign{_}chan$sign{_}ge", "po"],
-       'z' => ["close pre$sign{_}view", "po"],
+       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 ext vim7 new",
+       '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",
+       'v' => "g3",
+       'w' => "g3",
+       'W' => "g3",
+       'x' => "g3",
+       'z' => "g3",
 }, # mode ^w
 
 '^wg' => {
-       desc => "extended window commands (ctrl-w g)",
-       lead => $ascii ? "'wg" : "ŵg",
-
-       '^['=> ["esc", "mo mode"],
-       ']' => ["split, :ts$sign{_}elect", "po"],
-       '}' => [":ptj$sign{_}ump to tag", "po"],
-       '^]'=> ["split, :tj$sign{_}ump", "po"],
-       'f' => ["file in tab", "co ext vim7 new"],
-       'F' => ["^wgf, to line$sign{_}nr", "co ext vim7 new"],
+       lead => "ŵg",
+
+       "\e"=> "g7 mode",
+       '^['=> "=\e",
+       ']' => "g3",
+       '}' => "g3",
+       '^]'=> "g3",
+       'f' => "g4 ext vim7 new",
+       'F' => "g4 ext vim7 new",
 }, # mode ^w g
 
 v => {
-       desc => "visual mode",
-
-       '!' => ["external filter", "co"],
-       ':' => ["cmd on range", "mo modec"],
-       '<' => ["un$sign{_}indent", "co"],
-       '=' => ["re$sign{_}ind$sign{_}ent", 'co undo'],
-       '>' => ["ind$sign{_}ent", 'co'],
-       '~' => ["toggle case", "co ext vim6"],
-       '^['=> ["esc", "mo mode"],
-       '^]'=> ["jump to tag", "po"],
+       "\e"=> "g7 mode",
+
+       '!' => "g4",
+       ':' => "g7 modec",
+       '<' => "g4",
+       '=' => 'g4 undo',
+       '>' => 'g4',
+       '~' => "g4 ext vim6",
+       '^['=> "=\e",
+       '^]'=> "g3",
        '^\\'=>'^\\',
 
-       'a' => ["ex$sign{_}tend area", 'me modeva arg ext vim6'],
-       'A' => ["ap$sign{_}pend to block", 'mi modei ext vim6'], # block
-       'c' => ["repl$sign{_}ace area", 'mi modei ext vim6'],
-       'C' => ["repl$sign{_}ace full lines", 'mi modei ext vim6'], # like vS, but blocks are extended until eol
-       '^c'=> ["abort", "mo mode"],
-       'd' => ["delete area", "co ext vim6"],
-       'D' => ["delete lines", "co ext vim6"],
-       'g' => ["extra cmds", "me arg modevg"],
-       '^g'=> ["select mode", "mv"],
-       '^h'=> ["back$sign{_}space", 'co'], # delete in select mode, left otherwise
-       'i' => ["extend inner a$sign{_}r$sign{_}ea", "me modeva arg ext vim6"],
-       'I' => ["insert to block", "mi modei ext vim6"], # block
-       'J' => ["join lines", "co"],
-       'K' => ["help sel$sign{_}ect$sign{_}ion", 'co'],
-       'o' => ["to other corner", "pm"],
-       'O' => ["to other side", "pm"],
-       '^o'=> ["visual once", "mv"], # select
-       'p' => ["repl$sign{_}ace w/ paste", 'co'],
-       'P' => ["repl$sign{_}ace w/ paste", 'co'],
-       '^q'=> "^q",
-       'r' => ["fill up w/ ch$sign{_}ar", 'co arg'],
-       'R' => "vS",  # "might change in future"
-       '^s'=> "^s",
-       's' => "vc",
-       'S' => ["repl$sign{_}ace lines", 'mi modei ext vim6'],
-       'u' => ["lower$sign{_}case", "co ext vim6"],
-       'U' => ["upper$sign{_}case", "co ext vim6"],
-       'v' => ["char$sign{_}wise", "mv"],
-       'V' => ["line$sign{_}wise", "mv"],
-       '^v'=> ["block$sign{_}wise", "mv ext vim6"],
-       'x' => "vd",
-       'X' => "vD",
-       'y' => ["yank area", "co"],
-       'Y' => ["yank lines", "co"],
-
-       map {$_ => $_} qw(
+       'a' => 'g9 modeva arg ext vim6',
+       'A' => 'g6 modei ext vim6',
+       'c' => 'g6 modei ext vim6',
+       'C' => 'g6 modei ext vim6',
+       '^c'=> "g7 mode",
+       'd' => "g4 ext vim6",
+       'D' => "g4 ext vim6",
+       'g' => "g9 arg modevg",
+       '^g'=> "g8",
+       '^h'=> 'g4',
+       'i' => "g9 modeva arg ext vim6",
+       'I' => "g6 modei ext vim6", # block
+       'J' => "g4",
+       'K' => 'g4',
+       'o' => "g2",
+       'O' => "g2",
+       '^o'=> "g8",
+       'p' => 'g4',
+       'P' => 'g4',
+       '^q'=> "=^q",
+       'r' => 'g4 arg',
+       'R' => "=vS",  # "might change in future"
+       '^s'=> "=^s",
+       's' => "=vc",
+       'S' => 'g6 modei ext vim6',
+       'u' => "g4 ext vim6",
+       'U' => "g4 ext vim6",
+       'v' => "g8",
+       'V' => "g8",
+       '^v'=> "g8 ext vim6",
+       'x' => "=vd",
+       'X' => "=vD",
+       'y' => "g4",
+       'Y' => "g4",
+
+       map { $_ => "=$_" } qw(
                b B ^b ^d e E ^e f F ^f G h H ^i j ^j k l L m M ^m
                n N ^n ^p q ^s t T ^u w W ^w ^y z ^z
                ` # $ % ^ * ( 0 ) [ { ] } ; / ? + - _ |
@@ -422,138 +426,141 @@ v => {
 }, # mode v
 
 vg => {
-       desc => "extended visual commands (v g)",
        lead => "g",
 
-       '^['=> ["esc", "mv modev"],
-       '?' => ["rot13 encode", "co ext vim6"],
-       'J' => ["join literal$sign{_}ly", 'co ext vim6'],
-       'q' => ["for$sign{_}mat", "co ext vim6"],
-       'v' => 'gv',
-       'w' => ["for$sign{_}mat still", 'co ext vim7 new'],
+       "\e"=> "g8 modev",
+
+       '^['=> "=\e",
+       '?' => "g4 ext vim6",
+       'J' => 'g4 ext vim6',
+       'q' => "g4 ext vim6",
+       'v' => "=gv",
+       'w' => 'g4 ext vim7 new',
 }, # mode v g
 
 va => {
-       desc => 'text object selection (v a/i)',
-
-       '(' => 'vab',
-       ')' => 'vab',
-       '`' => "va'",
-       "'" => ["quoted string", 'pm ext vim7 new'],
-       '"' => "va'",
-       '<' => ["&lt;&gt; block", 'pm ext vim6'],
-       '>' => 'va&lt;',
-       '[' => ["[] block", 'pm ext vim6'],
-       '{' => 'vaB',
-       '^['=> ["esc", 'mv modev'],
-       ']' => 'va[',
-       '}' => 'vaB',
-
-       'b' => ["() block", 'pm ext vim6'],
-       'B' => ["{} Block", 'pm ext vim6'],
-       'p' => ["para$sign{_}graph", 'pm ext vim6'],
-       's' => ["senten$sign{_}ce", 'pm ext vim6'],
-       't' => ["xml tag block", 'pm ext vim7 new'],
-       'w' => ["word", 'pm ext vim6'],
-       'W' => ['<span style="font-variant:small-caps">word</span>', 'pm ext vim6'],
+       "\e"=> "g8 modev",
+
+       '(' => "=vab",
+       ')' => "=vab",
+       '`' => "=va'",
+       "'" => 'g2 ext vim7 new',
+       '"' => "=va'",
+       '<' => 'g2 ext vim6',
+       '>' => "=va&lt;",
+       '[' => 'g2 ext vim6',
+       '{' => "=vaB",
+       '^['=> "=\e",
+       ']' => "=va[",
+       '}' => "=vaB",
+
+       'b' => 'g2 ext vim6',
+       'B' => 'g2 ext vim6',
+       'p' => 'g2 ext vim6',
+       's' => 'g2 ext vim6',
+       't' => 'g2 ext vim7 new',
+       'w' => 'g2 ext vim6',
+       'W' => 'g2 ext vim6',
 }, # mode v a
 
 #c => {
 #      desc => "command-line mode",
 #
-#      '^_' => 'i^_',
-#      '^^' => 'i^^',
+#      '^_' => "=i^_",
+#      '^^' => "=i^^",
 #      '^\\'=>'^\\',
-#      '^a' => ["complete", ""], #todo
-#      '^b' => ["bol", "po"],
-#      '^c' => 'i^c',
-#      '^d' => ["complete", ""], #todo
-#      '^e' => ["eol", "po"],
-#      '^h' => 'i^h',
-#      '^j' => ["execute cmd", "co"],
-#      '^k' => 'i^k',
-#      '^l' => ["complete", ""], #todo
-#      '^n' => ["complete", ""], #todo
-#      '^p' => ["complete", ""], #todo
-#      '^r' => 'i^r', # and then some...
-#           ## ["insert register", "co arg ext vim6"],
-#      '^q' => '^q',
-#      '^u' => 'i^u',
-#      '^v' => 'i^v',
-#      '^w' => 'i^w',
-#      '^y' => ["selec$sign{_}tion to clip$sign{_}b$sign{_}oard", "co"],
+#      '^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 ext vim6"],
+#      '^q' => "=^q",
+#      '^u' => "=i^u",
+#      '^v' => "=i^v",
+#      '^w' => "=i^w",
+#      '^y' => "g4",
 #}, # mode c
 
 i => {
-       desc => "insert mode",
+       "\e" => "g7 mode",
 
-       '^@' => ["last insert", "co"],
-       '^^' => ["toggle :lmap usag$sign{_}e", "co ext vim6"],
-       '^[' => ["esc", "mo mode"],
-       '^]' => ["abbrev$sign{_}iate", "co ext vim6"],
-       '^_' => ["toggle lang$sign{_}uage", "co ext vim6"],
+       '^@' => "g4",
+       '^^' => "g4 ext vim6",
+       '^['=> "=\e",
+       '^]' => "g4 ext vim6",
+       '^_' => "g4 ext vim6",
        '^\\'=>'^\\',
 
-       '^a' => ["insert prev$sign{_}ious", "co ext vim6"],
-       '^b' => ["former i^_", "no ext vim6"],
-       '^c' => ["abort, no abbr", "mo mode"],
-       '^d' => ["un$sign{_}ind$sign{_}ent", 'co'],
-       '^e' => ["ins char below", "co ext vim6"],
-       '^f' => ["set indent$sign{_}ation", 'co'],
-       '^g' => ["extra cmds", "me modei^g arg"],
-       '^h' => ["back$sign{_}space", "co"],
-       '^i' => ["tab", "co"],
-       '^j' => ["enter", "co"],
-       '^k' => ["di$sign{_}graph", 'co arg arg ext vim6 linkdigraphs', "Key code"],
-       '^l' => ["<em>im</em> leave ins mode", "mo mode ext vim6"],  # insertmode only
-       '^m' => ["enter", "co"],
-       '^n' => ["find next keyword", "pm ext vim6"],
-       '^o' => ["exec$sign{_}ute cmd", 'co'],
-       '^p' => ["find prev keyword", "pm ext vim6"],
-       '^q' => "^q",  # or i^v
-       '^r' => ["insert reg$sign{_}ister", 'co arg ext vim6'],
-       '^s' => "^s",
-       '^t' => ["indent", "co"],
-       '^u' => ["delete line", "co"],
-       '^v' => ["literal or ch$sign{_}ar$sign{_}cod$sign{_}e", 'co linkcharset', "Verbatim or by Value"],
-       '^w' => ["delete word back", "co"],
-       '^x' => ["ex$sign{_}pand mode", 'me arg modei^x ext vim6'],
-       '^y' => ["ins char above", "co ext vim6"],
-       '^z' => [":sus$sign{_}pend in <em>im</em>", "ci ext vim6"],  # insertmode only
+       '^a' => "g4 ext vim6",
+       '^b' => "no ext vim6",
+       '^c' => "g7 mode",
+       '^d' => 'g4',
+       '^e' => "g4 ext vim6",
+       '^f' => 'g4',
+       '^g' => "g9 modei^g arg",
+       '^h' => "g4",
+       '^i' => "g4",
+       '^j' => "g4",
+       '^k' => 'g4 arg arg ext vim6 linkdigraphs',
+       '^l' => "g7 mode ext vim6",  # insertmode only
+       '^m' => "g4",
+       '^n' => "g2 ext vim6",
+       '^o' => 'g4',
+       '^p' => "g2 ext vim6",
+       '^q' => "=^q",  # or i^v
+       '^r' => 'g4 arg ext vim6',
+       '^s' => "=^s",
+       '^t' => "g4",
+       '^u' => "g4",
+       '^v' => 'g4 linkcharset',
+       '^w' => "g4",
+       '^x' => 'g9 arg modei^x ext vim6',
+       '^y' => "g4 ext vim6",
+       '^z' => "g1 ext vim6",  # insertmode only
 }, # modei
 
 'i^g' => {
-       desc => "extended insert commands (i ctrl-g)",
-       lead => $ascii ? "'g"  : "ĝ",
+       lead => "ĝ",
+
+       "\e"=> 'g6 modei',
 
-       'k' => ["$sign{up} start col$sign{_}umn", 'pm'],
-       'j' => ["$sign{down} start col$sign{_}umn", 'pm'],
-       'u' => ["break undo seq$sign{_}uence", 'co'],
+       'k' => 'g2',
+       'j' => 'g2',
+       'u' => 'g4',
        # other keys (even esc) are not recognized
 }, # mode i ^g
 
 'i^x' => {
-       desc => "insert completion commands (i ctrl-x)",
-       lead => $ascii ? "'x"  : "x̂",
-
-       '^[' => ["esc", "mo mode"], # yes, it really leaves insert mode
-       '^]' => ["tag comp$sign{_}l$sign{_}et$sign{_}e", 'co'],
-       '^d' => ["def$sign{_}ine compl$sign{_}et$sign{_}e", 'co'],
-       '^e' => ["window up", "po"],
-       '^f' => ["file comp$sign{_}l$sign{_}et$sign{_}e", 'co'],
-       '^i' => ["ident comp$sign{_}l$sign{_}et$sign{_}e", 'co'],
-       '^k' => ["dict comp$sign{_}l$sign{_}et$sign{_}e", 'co'],
-       '^l' => ["line comp$sign{_}l$sign{_}et$sign{_}e", 'co'],
-       '^n' => ["next comp$sign{_}l$sign{_}et$sign{_}e", 'co'],
-       '^o' => ["omni comp$sign{_}l$sign{_}et$sign{_}e", 'co ext vim7 new'],
-       '^p' => ["prev comp$sign{_}l$sign{_}ete", 'co'],
-       '^s' => ["spell sugg$sign{_}est", 'co'],
-        's' => 'i^x^s',
-       '^t' => ["thes$sign{_}aur$sign{_}us compl$sign{_}et$sign{_}e", 'co'],
-       '^u' => ["cus$sign{_}tom comp$sign{_}l$sign{_}et$sign{_}e", 'co ext vim7 new'],
-       '^v' => ["ex cmd compl$sign{_}et$sign{_}e", 'co'],
-       '^y' => ["window down", "po"],
+       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 ext vim7 new',
+       '^p' => 'g4',
+       '^s' => 'g4',
+        's' => "=i^x^s",
+       '^t' => 'g4',
+       '^u' => 'g4 ext vim7 new',
+       '^v' => 'g4',
+       '^y' => "g3",
 }, # mode i ^x
 
 # XXX ex mode if you want to go completely wild
-
+}