vi: delete mode (motions and specific commands)
[sheet.git] / vi.eng.inc.pl
index ac7e3e2287a7607202f2d5ed41e7c9558ad5664e..3ea7840bc8c6275f8daecc6ee99ad77b0891e9fd 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 => {
 
@@ -338,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",
@@ -497,6 +502,48 @@ key => {
        ']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 => {
@@ -515,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 => {
@@ -577,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",
@@ -589,7 +637,7 @@ def => {
                '^e'=> "g3",
                'f' => "g2 arg",
                'F' => "g2 arg",
-               '^f'=> "g2",
+               '^f'=> "g3",
                'g' => "g9 arg modeg",
                'G' => "g2",
                '^g'=> "g1",
@@ -958,9 +1006,6 @@ def => {
 
                '!' => "g4",
                ':' => "g7 modec",
-               ',' => "=,",
-               "'" => "='",
-               '"' => '="',
                '<' => "g4",
                '=' => 'g4 undo',
                '>' => 'g4',
@@ -979,7 +1024,6 @@ def => {
                'D' => "g4 v6",
                'g' => "g9 arg modevg",
                '^g'=> "g8",
-               '^h'=> 'g4',
                'i' => "g9 modeva arg v6",
                'I' => "g6 modei v6", # block
                'J' => "g4",
@@ -989,10 +1033,8 @@ 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 v6',
                'u' => "g4 v6",
@@ -1006,11 +1048,9 @@ def => {
                '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 => {
@@ -1158,6 +1198,35 @@ def => {
                '^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'  => 'g4',
+               'p'  => 'g4',
+               '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
 },