emoji: silence unused argument warnings
[sheet.git] / vi.eng.inc.pl
index 03eabf31ab4e1aa9689ed0101a05020cce3bfe23..ac7e3e2287a7607202f2d5ed41e7c9558ad5664e 100644 (file)
@@ -155,6 +155,8 @@ key => {
        '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",
@@ -240,7 +242,6 @@ key => {
        '[^i'=> "to first occur<>renc<>e",
        '[m' => "start of funct<>ion",
        '[p' => "P reind<>ent<>ed",
-       '[P' => "[p",
        '[s' => "last missp<>ell<>ing",
        '[S' => "last bad word",
        '[z' => "start of open fold",
@@ -304,6 +305,7 @@ key => {
        '^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",
@@ -328,6 +330,7 @@ key => {
 
        '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",
@@ -352,15 +355,18 @@ key => {
        '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",
@@ -422,6 +428,7 @@ key => {
        '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",
@@ -441,7 +448,55 @@ key => {
        'i^x^v' => "ex cmd compl<>et<>e",
        'i^x^y' => "window down",
 
-       # XXX ex mode if you want to go completely wild
+       # 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",
 },
 
 mode => {
@@ -474,9 +529,636 @@ flag => {
 
        arg => ["key<arg>", "Commands with a dot need a char argument afterwards."],
        motion => ["key<motion>", "Requires a motion afterwards, operates between cursor and destination."],
-       'ext vim6' => ["vim", "Not in original Vi (assessment incomplete)."],
-       'ext new vim7' => ["vim7", "New in vim version 7.x."],
+       'v6 new' => ["vim", "Not in original Vi (assessment incomplete)."],
+       'xcommentary xlion xsurround xunimpaired ext' => ["plugin", "Optional features provided by common plugins."],
 },
 
-def => do 'vi.inc.pl',
+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'=> "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 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",
+       }, # 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",
+       }, # mode g
+
+       Z => {
+               lead => "Z",
+
+               "\e"=> "g7 mode",
+               '^['=> "=\e",
+
+               'Q' => "g4 v6",
+               'Z' => "g4",
+       }, # 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",
+       }, # mode z
+
+       '[' => {
+               lead => "[",
+
+               "\e"=> "g7 mode",
+
+               "`" => "g2 v6",
+               '#' => "g2",
+               '(' => "g2",
+               '*' => "=[/",
+               '/' => "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",
+       }, # mode [
+
+       ']' => {
+               lead => "]",
+
+               "\e"=> "g7 mode",
+
+               "`" => "g2 v6",
+               '#' => "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",
+       }, # 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",
+       }, # mode ^w
+
+       '^wg' => {
+               lead => "ŵg",
+
+               "\e"=> "g7 mode",
+               '^['=> "=\e",
+               ']' => "g3",
+               '}' => "g3",
+               '^]'=> "g3",
+               'f' => "g4 v7",
+               'F' => "g4 v7",
+       }, # 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",
+               '^h'=> 'g4',
+               'i' => "g9 modeva arg v6",
+               'I' => "g6 modei v6", # 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 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 { $_ => "=$_" } 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 ) [ { ] } ; / ? + - _ |
+               ) # a lot like normal mode
+       }, # mode v
+
+       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',
+       }, # 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',
+       }, # mode v a
+
+       #c => {
+       #       desc => "command-line mode",
+       #
+       #       '^_' => "=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",
+       #}, # 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
+       }, # modei
+
+       'i^g' => {
+               lead => "ĝ",
+
+               "\e"=> 'g6 modei',
+
+               'k' => 'g2',
+               'j' => 'g2',
+               's' => 'g4 arg xsurround',
+               'u' => 'g4',
+               'U' => 'g4 v8',
+               # other keys (even esc) are not recognized
+       }, # 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",
+       }, # mode i ^x
+
+       # TODO: mode/ (command-line)
+       # XXX ex mode if you want to go completely wild
+},
 }