From d6cfa48bae206d50fcda0dd28de092e613499c5b Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Mon, 1 Jul 2019 17:22:30 +0200 Subject: [PATCH] vi: delete mode (motions and specific commands) --- vi.eng.inc.pl | 99 +++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 84 insertions(+), 15 deletions(-) diff --git a/vi.eng.inc.pl b/vi.eng.inc.pl index ac7e3e2..3ea7840 100644 --- a/vi.eng.inc.pl +++ b/vi.eng.inc.pl @@ -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 $_") } qw( g z [ ] )), + 'dW' => 'delete word', + 'db' => 'delete word', + 'dB' => 'delete word', + 'de' => 'delete word e<>nd', + 'dE' => 'delete word e<>nd', + 'df' => 'delete to char<>acter', + 'dF' => 'delete to char<>acter', + 'dG' => 'delete to line<>/eof', + 'dH' => 'delete to top', + 'dj' => 'delete line', + 'dk' => 'delete 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 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 to res<>ult', + 'd`' => 'delete to mark', + "d'" => 'delete lines to m<>ark', + 'd*' => 'delete to find', + 'd#' => 'delete to find', + 'd%' => 'delete to line pct', + 'd^' => 'delete to soft bol', + 'd0' => 'delete to bol', + 'd|' => 'delete to col<>umn', + 'd{' => 'delete par<>agr<>aph', + 'd}' => 'delete rest of p<>ar<>agr<>aph', + 'd(' => 'delete 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 }, -- 2.30.0