latin: palm graffiti font placeholder
[sheet.git] / vi.eng.inc.pl
index 5d75a5857ebc1586f36c92ff3bbd20cd5d34f300..20f70f37158971191fbac2169c7b2b9348c0b2d6 100644 (file)
@@ -1,5 +1,11 @@
 use utf8;
 
+my @motions = qw(
+       g z [ ]
+       b B e E f F G ^h h H j ^j k l L M ^m n N ^n ^p t T w W
+       0 ` ' # $ % ^ * ( ) { } ; / ? + - _ | ,
+);
+
 {
 key => {
 
@@ -242,7 +248,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",
@@ -339,7 +344,6 @@ key => {
        'vD' => "delete lines",
        'vg' => "extra cmds",
        'v^g'=> "select mode",
-       'v^h'=> "back<>space", # delete in select mode, left otherwise
        'vi' => "extend inner a<>r<>ea",
        'vI' => "insert to block", # block
        'vJ' => "join lines",
@@ -448,6 +452,98 @@ key => {
        '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 => {
@@ -466,6 +562,7 @@ mode => {
         i    => "insert mode",
        'i^g' => "extended insert commands (i ctrl-g)",
        'i^x' => "insert completion commands (i ctrl-x)",
+        d    => 'delete motions',
 },
 
 flag => {
@@ -480,7 +577,8 @@ 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."],
-       'vim6 new' => ["vim", "Not in original Vi (assessment incomplete)."],
+       'v6 new' => ["vim", "Not in original Vi (assessment incomplete)."],
+       'xcommentary xlion xsurround xunimpaired ext' => ["plugin", "Optional features provided by common plugins."],
 },
 
 def => {
@@ -488,12 +586,12 @@ def => {
                '~' => "g4 undo",
                '!' => "g4 argm undo modec",
                '@' => "g4 arg undo",
-               '#' => "g2 vim6 new",
+               '#' => "g2 v6",
                '$' => "g2",
                '%' => "g2",
                '^' => "g2",
                '&' => "g4 undo",
-               '*' => "g2 vim6 new",
+               '*' => "g2 v6",
                '(' => 'g2',
                ')' => 'g2',
                '_' => "g2",
@@ -527,11 +625,11 @@ def => {
                '^a'=> "g4 undo",
                'b' => "g2",
                'B' => "g2",
-               '^b'=> "g2",
+               '^b'=> "g3",
                'c' => "g6 argm undo modei",
                'C' => "g6 undo modei",
                '^c'=> "g4",
-               'd' => "g4 argm undo",
+               'd' => "g4 argm undo moded",
                'D' => "g4 undo",
                '^d'=> "g3",
                'e' => "g2",
@@ -539,7 +637,7 @@ def => {
                '^e'=> "g3",
                'f' => "g2 arg",
                'F' => "g2 arg",
-               '^f'=> "g2",
+               '^f'=> "g3",
                'g' => "g9 arg modeg",
                'G' => "g2",
                '^g'=> "g1",
@@ -548,7 +646,7 @@ def => {
                '^h'=> "=h",
                'i' => "g6 undo modei",
                'I' => "g6 undo modei",
-               '^i'=> "g2 vim6 new",
+               '^i'=> "g2 v6",
                'j' => "g2",
                'J' => "g4 undo",
                '^j'=> "=j",
@@ -565,7 +663,7 @@ def => {
                '^n'=> "=j",
                'o' => "g6 undo modei",
                'O' => "g6 undo modei",
-               '^o'=> "g2 vim6 new",
+               '^o'=> "g2 v6",
                'p' => "g4 undo",
                'P' => "g4 undo",
                '^p'=> "=k",
@@ -574,7 +672,7 @@ def => {
                '^q'=> "g1", # or ^v
                'r' => "g4 arg undo",
                'R' => "g6 undo modei",
-               '^r'=> "g4 undo vim6 new",
+               '^r'=> "g4 undo v6",
                's' => "g6 undo modei",
                'S' => "g6 undo modei",
                '^s'=> "g1",
@@ -586,7 +684,7 @@ def => {
                '^u'=> "g3",
                'v' => "g8 modev",
                'V' => "g8 modev",
-               '^v'=> "g8 modev vim6 new",
+               '^v'=> "g8 modev v6",
                'w' => "g2",
                'W' => "g2",
                '^w'=> "g9 arg mode^w",
@@ -606,65 +704,68 @@ def => {
 
                "\e"=> "g7 mode",
 
-               '~' => "g4 argm vim6 new",
-               '@' => "g4 vim7 new",
-               '#' => "g2 vim6 new",
+               '~' => "g4 argm v6",
+               '@' => "g4 v7",
+               '#' => "g2 v6",
                '$' => "g2",
-               '^' => "g2 vim6 new",
+               '^' => "g2 v6",
                '&' => "g4",
-               '*' => "g2 vim6 new",
-               '_' => "g2 vim6 new",
-               '+' => "g4 vim7 new",
-               '`' => "g2 vim6 new arg",
+               '*' => "g2 v6",
+               '_' => "g2 v6",
+               '+' => "g4 v7",
+               '`' => "g2 v6 arg",
                '8' => "g1",
-               '0' => "g2 vim6 new",
-               '-' => "g4 vim7 new",
+               '0' => "g2 v6",
+               '-' => "g4 v7",
                '^['=> "g7 mode",
                ']' => "g3",
                '^]'=> "g3",
                ';' => "g2",
-               "'" => "g2 vim6 new arg",
-               '<' => "g4 vim7 new",
-               '?' => "g4 argm vim6 new",
+               "'" => "g2 v6 arg",
+               '<' => "g4 v7",
+               '?' => "g4 argm v6",
                ',' => "g2",
 
                'a' => "g1",
                '^a'=> "g1",
-               'd' => "g2 vim6 new",
-               'D' => "g2 vim6 new",
+               'c' => 'g4 argm xcommentary',
+               'd' => "g2 v6",
+               'D' => "g2 v6",
                'e' => "g2",
                'E' => "g2",
-               'f' => "g4 vim6 new",
-               'F' => "g4 vim7 new",
+               'f' => "g4 v6",
+               'F' => "g4 v7",
                'g' => "g2",
                '^g'=> "g1 vim6",
                'h' => "g8 modev",
                'H' => "g8 modev",
-               '^h'=> "g8 modev vim6 new",
+               '^h'=> "g8 modev v6",
                'i' => "g6 undo modei",
                'I' => "g6 undo modei",
-               'j' => "g2 vim6 new",
+               'j' => "g2 v6",
                'J' => "g4",
-               'k' => "g2 vim6 new",
-               'm' => "g2 vim6 new",
-               'n' => "g8 vim7 new modev",
-               'N' => "g8 vim7 new modev",
+               '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 vim6 new",
+               'Q' => "g7 v6",
                'r' => "g4 arg",
                'R' => "g6 undo modei",
-               's' => "g1 vim6 new",
-               't' => "g3 vim7 new",
-               'T' => "g3 vim7 new",
-               'u' => "g4 argm vim6 new", # XXX undo?
-               'U' => "g4 undo argm vim6 new",
+               '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 vim7 new",
-               'x' => "g4 vim7 new",
+               'w' => "g4 argm v7",
+               'x' => "g4 v7 ext",
        }, # mode g
 
        Z => {
@@ -673,7 +774,7 @@ def => {
                "\e"=> "g7 mode",
                '^['=> "=\e",
 
-               'Q' => "g4 vim6 new",
+               'Q' => "g4 v6",
                'Z' => "g4",
        }, # mode Z
 
@@ -685,47 +786,47 @@ def => {
                '^' => "g3",
                '+' => "g3",
                '-' => "g3",
-               '=' => "g4 vim7 new",
+               '=' => "g4 v7",
                '.' => "g3",
                '^['=> "=\e",
 
-               'a' => "g4 vim6 new folding",
-               'A' => "g4 vim6 new folding",
+               'a' => "g4 v6 folding",
+               'A' => "g4 v6 folding",
                'b' => "g3",
-               'c' => "g4 vim6 new folding",
-               'C' => "g4 vim6 new folding",
-               'd' => "g4 vim6 new folding",
-               'D' => "g4 vim6 new folding",
+               'c' => "g4 v6 folding",
+               'C' => "g4 v6 folding",
+               'd' => "g4 v6 folding",
+               'D' => "g4 v6 folding",
                'e' => "g3",
-               'E' => "g4 vim6 new folding",
-               'f' => "g4 argm vim6 new folding",
-               'F' => "g4 vim6 new folding",
-               'g' => "g4 vim7 new",
-               'G' => "g4 vim7 new",
+               '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 vim6 new folding",
-               'j' => "g2 vim6 new folding",
-               'k' => "g2 vim6 new folding",
+               'i' => "g4 v6 folding",
+               'j' => "g2 v6 folding",
+               'k' => "g2 v6 folding",
                'l' => "g3",
                'L' => "g3",
                '^m'=> "g3",
-               'm' => "g4 vim6 new folding",
-               'M' => "g4 vim6 new folding",
-               'n' => "g4 vim6 new folding",
-               'N' => "g4 vim6 new folding",
-               'o' => "g4 vim6 new folding",
-               'O' => "g4 vim6 new folding",
-               'r' => "g4 vim6 new folding",
-               'R' => "g4 vim6 new folding",
+               '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 vim7 new",
-               'v' => "g4 vim6 new folding",
-               'w' => "g4 vim7 new",
-               'W' => "g4 vim7 new",
-               'x' => "g4 vim6 new folding",
-               'X' => "g4 vim6 new folding",
+               '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
 
@@ -734,12 +835,12 @@ def => {
 
                "\e"=> "g7 mode",
 
-               "`" => "g2 vim6 new",
+               "`" => "g2 v6",
                '#' => "g2",
                '(' => "g2",
                '*' => "=[/",
                '/' => "g2",
-               "'" => "=[` ^", # vim6 new
+               "'" => "=[` ^", # v6
                '{' => "g2",
                '[' => "g2",
                '^['=> "=\e",
@@ -755,10 +856,32 @@ def => {
                '^i'=> 'g3',
                'm' => "g2",
                'p' => "g4",
-               'P' => "g4",
-               's' => "g3 vim7 new",
-               'S' => "g3 vim7 new",
-               'z' => "g2 vim6 new folding",
+               '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 [
 
        ']' => {
@@ -766,11 +889,11 @@ def => {
 
                "\e"=> "g7 mode",
 
-               "`" => "g2 vim6 new",
+               "`" => "g2 v6",
                '#' => "g2",
                ')' => "g2",
                '*' => "=]/",
-               "'" => "=]` ^", # vim6 new
+               "'" => "=]` ^", # v6
                '/' => "g2",
                '[' => "g2",
                '^['=> "=\e",
@@ -788,9 +911,31 @@ def => {
                'm' => "g2",
                'p' => "g4",
                'P' => "=[p",
-               's' => "g3 vim7 new",
-               'S' => "g3 vim7 new",
-               'z' => "g2 vim6 new folding",
+               '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' => {
@@ -815,7 +960,7 @@ def => {
                '^c'=> "g7 mode",
                'd' => "g3",
                'f' => "g4",
-               'F' => "g4 vim7 new",
+               'F' => "g4 v7",
                'g' => "g9 arg mode^wg",
                'h' => "g3",
                'H' => "g3",
@@ -836,7 +981,7 @@ def => {
                's' => "g3",
                'S' => "=^ws",
                't' => "g3",
-               'T' => "g3 vim7 new",
+               'T' => "g3 v7",
                'v' => "g3",
                'w' => "g3",
                'W' => "g3",
@@ -852,8 +997,8 @@ def => {
                ']' => "g3",
                '}' => "g3",
                '^]'=> "g3",
-               'f' => "g4 vim7 new",
-               'F' => "g4 vim7 new",
+               'f' => "g4 v7",
+               'F' => "g4 v7",
        }, # mode ^w g
 
        v => {
@@ -861,30 +1006,26 @@ def => {
 
                '!' => "g4",
                ':' => "g7 modec",
-               ',' => "=,",
-               "'" => "='",
-               '"' => '="',
                '<' => "g4",
                '=' => 'g4 undo',
                '>' => 'g4',
-               '~' => "g4 vim6 new",
+               '~' => "g4 v6",
                '^['=> "=\e",
                '^]'=> "g3",
                '^\\'=>'^\\',
 
-               'a' => 'g9 modeva arg vim6 new',
-               'A' => 'g6 modei vim6 new',
-               '^a'=> 'g4 undo vim8 new',
-               'c' => 'g6 modei vim6 new',
-               'C' => 'g6 modei vim6 new',
+               '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 vim6 new",
-               'D' => "g4 vim6 new",
+               'd' => "g4 v6",
+               'D' => "g4 v6",
                'g' => "g9 arg modevg",
                '^g'=> "g8",
-               '^h'=> 'g4',
-               'i' => "g9 modeva arg vim6 new",
-               'I' => "g6 modei vim6 new", # block
+               'i' => "g9 modeva arg v6",
+               'I' => "g6 modei v6", # block
                'J' => "g4",
                'K' => 'g4',
                'o' => "g2",
@@ -892,28 +1033,24 @@ def => {
                '^o'=> "g8",
                'p' => 'g4',
                'P' => 'g4',
-               '^q'=> "=^q",
                'r' => 'g4 arg',
                'R' => "=vS",  # "might change in future"
-               '^s'=> "=^s",
                's' => "=vc",
-               'S' => 'g6 modei vim6 new',
-               'u' => "g4 vim6 new",
-               'U' => "g4 vim6 new",
+               'S' => 'g6 modei v6',
+               'u' => "g4 v6",
+               'U' => "g4 v6",
                'v' => "g8",
                'V' => "g8",
-               '^v'=> "g8 vim6 new",
+               '^v'=> "g8 v6",
                'x' => "=vd",
                'X' => "=vD",
-               '^x'=> 'g4 undo vim8 new',
+               '^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
+               (map { $_ => "=$_" } @motions, qw(
+                       ^b ^d ^e ^f ^i m q ^q ^s ^u ^w ^y z ^z "
+               )), # a lot like normal mode
        }, # mode v
 
        vg => {
@@ -922,14 +1059,17 @@ def => {
                "\e"=> "g8 modev",
 
                '^['=> "=\e",
-               '?' => "g4 vim6 new",
-               '^a'=> 'g4 undo vim8 new',
+               '?' => "g4 v6",
+               '^a'=> 'g4 undo v8',
                '^g' => "g1 vim6",
-               'J' => 'g4 vim6 new',
-               'q' => "g4 vim6 new",
+               'c' => 'g4 xcommentary',
+               'J' => 'g4 v6',
+               'l' => 'g3 arg xlion',
+               'L' => 'g3 arg xlion',
+               'q' => "g4 v6",
                'v' => "=gv",
-               'w' => 'g4 vim7 new',
-               '^x'=> 'g4 undo vim8 new',
+               'w' => 'g4 v7',
+               '^x'=> 'g4 undo v8',
        }, # mode v g
 
        va => {
@@ -938,23 +1078,23 @@ def => {
                '(' => "=vab",
                ')' => "=vab",
                '`' => "=va'",
-               "'" => 'g2 vim7 new',
+               "'" => 'g2 v7',
                '"' => "=va'",
-               '<' => 'g2 vim6 new',
+               '<' => 'g2 v6',
                '>' => "=va&lt;",
-               '[' => 'g2 vim6 new',
+               '[' => 'g2 v6',
                '{' => "=vaB",
                '^['=> "=\e",
                ']' => "=va[",
                '}' => "=vaB",
 
-               'b' => 'g2 vim6 new',
-               'B' => 'g2 vim6 new',
-               'p' => 'g2 vim6 new',
-               's' => 'g2 vim6 new',
-               't' => 'g2 vim7 new',
-               'w' => 'g2 vim6 new',
-               'W' => 'g2 vim6 new',
+               '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 => {
@@ -975,7 +1115,7 @@ def => {
        #       '^n' => "", #todo
        #       '^p' => "", #todo
        #       '^r' => "=i^r", # and then some...
-       #            ## ["g4 arg vim6 new"],
+       #            ## ["g4 arg v6"],
        #       '^q' => "=^q",
        #       '^u' => "=i^u",
        #       '^v' => "=i^v",
@@ -987,38 +1127,38 @@ def => {
                "\e" => "g7 mode",
 
                '^@' => "g4",
-               '^^' => "g4 vim6 new",
+               '^^' => "g4 v6",
                '^['=> "=\e",
-               '^]' => "g4 vim6 new",
-               '^_' => "g4 vim6 new",
+               '^]' => "g4 v6",
+               '^_' => "g4 v6",
                '^\\'=>'^\\',
 
-               '^a' => "g4 vim6 new",
-               '^b' => "no vim6 new",
+               '^a' => "g4 v6",
+               '^b' => "no v6",
                '^c' => "g7 mode",
                '^d' => 'g4',
-               '^e' => "g4 vim6 new",
+               '^e' => "g4 v6",
                '^f' => 'g4',
                '^g' => "g9 modei^g arg",
                '^h' => "g4",
                '^i' => "g4",
                '^j' => "g4",
-               '^k' => 'g4 arg arg vim6 new linkdigraphs',
-               '^l' => "g7 mode vim6 new",  # insertmode only
+               '^k' => 'g4 arg arg v6 linkdigraphs',
+               '^l' => "g7 mode v6",  # insertmode only
                '^m' => "g4",
-               '^n' => "g2 vim6 new",
+               '^n' => "g2 v6",
                '^o' => 'g4',
-               '^p' => "g2 vim6 new",
+               '^p' => "g2 v6",
                '^q' => "=^q",  # or i^v
-               '^r' => 'g4 arg vim6 new',
+               '^r' => 'g4 arg v6',
                '^s' => "=^s",
                '^t' => "g4",
                '^u' => "g4",
                '^v' => 'g4 linkcharset',
                '^w' => "g4",
-               '^x' => 'g9 arg modei^x vim6 new',
-               '^y' => "g4 vim6 new",
-               '^z' => "g1 vim6 new",  # insertmode only
+               '^x' => 'g9 arg modei^x v6',
+               '^y' => "g4 v6",
+               '^z' => "g1 v6",  # insertmode only
        }, # modei
 
        'i^g' => {
@@ -1028,8 +1168,9 @@ def => {
 
                'k' => 'g2',
                'j' => 'g2',
+               's' => 'g4 arg xsurround',
                'u' => 'g4',
-               'U' => 'g4 vim8 new',
+               'U' => 'g4 v8',
                # other keys (even esc) are not recognized
        }, # mode i ^g
 
@@ -1047,16 +1188,45 @@ def => {
                '^k' => 'g4',
                '^l' => 'g4',
                '^n' => 'g4',
-               '^o' => 'g4 vim7 new',
+               '^o' => 'g4 v7',
                '^p' => 'g4',
                '^s' => 'g4',
                 's' => "=i^x^s",
                '^t' => 'g4',
-               '^u' => 'g4 vim7 new',
+               '^u' => 'g4 v7',
                '^v' => 'g4',
                '^y' => "g3",
        }, # 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',
+       }, # mode d
+
        # TODO: mode/ (command-line)
        # XXX ex mode if you want to go completely wild
 },