X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/3bfa29782285fd9a9fefcaf21fa0aa7df776d88b..20944668da222b8510754fb4819b2b21e768840c:/vi.eng.inc.pl diff --git a/vi.eng.inc.pl b/vi.eng.inc.pl index 03eabf3..20f70f3 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 => { @@ -155,6 +161,8 @@ key => { 'gJ' => "join leave spac<>ing", 'gk' => " 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 +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", @@ -304,6 +311,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 +336,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", @@ -335,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", @@ -352,15 +360,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<' => "<> block", @@ -422,6 +433,7 @@ key => { 'i^gk' => " start col<>umn", 'i^gj' => " 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 +453,97 @@ 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", + + (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 => { @@ -460,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 => { @@ -474,9 +577,657 @@ flag => { arg => ["key", "Commands with a dot need a char argument afterwards."], motion => ["key", "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'=> "g3", + 'c' => "g6 argm undo modei", + 'C' => "g6 undo modei", + '^c'=> "g4", + 'd' => "g4 argm undo moded", + 'D' => "g4 undo", + '^d'=> "g3", + 'e' => "g2", + 'E' => "g2", + '^e'=> "g3", + 'f' => "g2 arg", + 'F' => "g2 arg", + '^f'=> "g3", + '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 ext", + }, # 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", + 'i' => "g9 modeva arg v6", + 'I' => "g6 modei v6", # block + 'J' => "g4", + 'K' => 'g4', + 'o' => "g2", + 'O' => "g2", + '^o'=> "g8", + 'p' => 'g4', + 'P' => 'g4', + 'r' => 'g4 arg', + 'R' => "=vS", # "might change in future" + '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 { $_ => "=$_" } @motions, qw( + ^b ^d ^e ^f ^i m q ^q ^s ^u ^w ^y z ^z " + )), # 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<", + '[' => '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 + + 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 +}, }