'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",
'^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",
'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",
'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",
'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",
'i^x^u' => "cus<>tom comp<>l<>et<>e",
'i^x^v' => "ex cmd compl<>et<>e",
'i^x^y' => "window down",
-
- # XXX ex mode if you want to go completely wild
},
mode => {
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."],
+ 'vim6 new' => ["vim", "Not in original Vi (assessment incomplete)."],
},
+def => {
+ '' => {
+ '~' => "g4 undo",
+ '!' => "g4 argm undo modec",
+ '@' => "g4 arg undo",
+ '#' => "g2 vim6 new",
+ '$' => "g2",
+ '%' => "g2",
+ '^' => "g2",
+ '&' => "g4 undo",
+ '*' => "g2 vim6 new",
+ '(' => '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 vim6 new",
+ '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 vim6 new",
+ '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 vim6 new",
+ '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 vim6 new",
+ '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 vim6 new",
+ '@' => "g4 vim7 new",
+ '#' => "g2 vim6 new",
+ '$' => "g2",
+ '^' => "g2 vim6 new",
+ '&' => "g4",
+ '*' => "g2 vim6 new",
+ '_' => "g2 vim6 new",
+ '+' => "g4 vim7 new",
+ '`' => "g2 vim6 new arg",
+ '8' => "g1",
+ '0' => "g2 vim6 new",
+ '-' => "g4 vim7 new",
+ '^['=> "g7 mode",
+ ']' => "g3",
+ '^]'=> "g3",
+ ';' => "g2",
+ "'" => "g2 vim6 new arg",
+ '<' => "g4 vim7 new",
+ '?' => "g4 argm vim6 new",
+ ',' => "g2",
+
+ 'a' => "g1",
+ '^a'=> "g1",
+ 'd' => "g2 vim6 new",
+ 'D' => "g2 vim6 new",
+ 'e' => "g2",
+ 'E' => "g2",
+ 'f' => "g4 vim6 new",
+ 'F' => "g4 vim7 new",
+ 'g' => "g2",
+ '^g'=> "g1 vim6",
+ 'h' => "g8 modev",
+ 'H' => "g8 modev",
+ '^h'=> "g8 modev vim6 new",
+ 'i' => "g6 undo modei",
+ 'I' => "g6 undo modei",
+ 'j' => "g2 vim6 new",
+ 'J' => "g4",
+ 'k' => "g2 vim6 new",
+ 'm' => "g2 vim6 new",
+ 'n' => "g8 vim7 new modev",
+ 'N' => "g8 vim7 new modev",
+ 'o' => "g2",
+ 'p' => "g4 undo",
+ 'P' => "g4",
+ 'q' => "g4 argm",
+ 'Q' => "g7 vim6 new",
+ '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",
+ 'v' => 'g8 modev',
+ 'V' => "g4",
+ 'w' => "g4 argm vim7 new",
+ 'x' => "g4 vim7 new",
+ }, # mode g
+
+ Z => {
+ lead => "Z",
+
+ "\e"=> "g7 mode",
+ '^['=> "=\e",
+
+ 'Q' => "g4 vim6 new",
+ 'Z' => "g4",
+ }, # mode Z
+
+ z => {
+ lead => "z",
+
+ "\e"=> "g7 mode",
+
+ '^' => "g3",
+ '+' => "g3",
+ '-' => "g3",
+ '=' => "g4 vim7 new",
+ '.' => "g3",
+ '^['=> "=\e",
+
+ 'a' => "g4 vim6 new folding",
+ 'A' => "g4 vim6 new folding",
+ 'b' => "g3",
+ 'c' => "g4 vim6 new folding",
+ 'C' => "g4 vim6 new folding",
+ 'd' => "g4 vim6 new folding",
+ 'D' => "g4 vim6 new 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",
+ 'h' => "g3",
+ 'H' => "g3",
+ 'i' => "g4 vim6 new folding",
+ 'j' => "g2 vim6 new folding",
+ 'k' => "g2 vim6 new 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",
+ '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",
+ 'z' => "g3",
+ }, # mode z
+
+ '[' => {
+ lead => "[",
+
+ "\e"=> "g7 mode",
+
+ "`" => "g2 vim6 new",
+ '#' => "g2",
+ '(' => "g2",
+ '*' => "=[/",
+ '/' => "g2",
+ "'" => "=[` ^", # vim6 new
+ '{' => "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' => "g4",
+ 's' => "g3 vim7 new",
+ 'S' => "g3 vim7 new",
+ 'z' => "g2 vim6 new folding",
+ }, # mode [
+
+ ']' => {
+ lead => "]",
+
+ "\e"=> "g7 mode",
+
+ "`" => "g2 vim6 new",
+ '#' => "g2",
+ ')' => "g2",
+ '*' => "=]/",
+ "'" => "=]` ^", # vim6 new
+ '/' => "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 vim7 new",
+ 'S' => "g3 vim7 new",
+ 'z' => "g2 vim6 new folding",
+ }, # 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 vim7 new",
+ '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 vim7 new",
+ 'v' => "g3",
+ 'w' => "g3",
+ 'W' => "g3",
+ 'x' => "g3",
+ 'z' => "g3",
+ }, # mode ^w
+
+ '^wg' => {
+ lead => "ŵg",
+
+ "\e"=> "g7 mode",
+ '^['=> "=\e",
+ ']' => "g3",
+ '}' => "g3",
+ '^]'=> "g3",
+ 'f' => "g4 vim7 new",
+ 'F' => "g4 vim7 new",
+ }, # mode ^w g
+
+ v => {
+ "\e"=> "g7 mode",
+
+ '!' => "g4",
+ ':' => "g7 modec",
+ ',' => "=,",
+ "'" => "='",
+ '"' => '="',
+ '<' => "g4",
+ '=' => 'g4 undo',
+ '>' => 'g4',
+ '~' => "g4 vim6 new",
+ '^['=> "=\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',
+ '^c'=> "g7 mode",
+ 'd' => "g4 vim6 new",
+ 'D' => "g4 vim6 new",
+ 'g' => "g9 arg modevg",
+ '^g'=> "g8",
+ '^h'=> 'g4',
+ 'i' => "g9 modeva arg vim6 new",
+ 'I' => "g6 modei vim6 new", # 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 vim6 new',
+ 'u' => "g4 vim6 new",
+ 'U' => "g4 vim6 new",
+ 'v' => "g8",
+ 'V' => "g8",
+ '^v'=> "g8 vim6 new",
+ 'x' => "=vd",
+ 'X' => "=vD",
+ '^x'=> 'g4 undo vim8 new',
+ '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 vim6 new",
+ '^a'=> 'g4 undo vim8 new',
+ '^g' => "g1 vim6",
+ 'J' => 'g4 vim6 new',
+ 'q' => "g4 vim6 new",
+ 'v' => "=gv",
+ 'w' => 'g4 vim7 new',
+ '^x'=> 'g4 undo vim8 new',
+ }, # mode v g
+
+ va => {
+ "\e"=> "g8 modev",
+
+ '(' => "=vab",
+ ')' => "=vab",
+ '`' => "=va'",
+ "'" => 'g2 vim7 new',
+ '"' => "=va'",
+ '<' => 'g2 vim6 new',
+ '>' => "=va<",
+ '[' => 'g2 vim6 new',
+ '{' => "=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',
+ }, # 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 vim6 new"],
+ # '^q' => "=^q",
+ # '^u' => "=i^u",
+ # '^v' => "=i^v",
+ # '^w' => "=i^w",
+ # '^y' => "g4",
+ #}, # mode c
+
+ i => {
+ "\e" => "g7 mode",
+
+ '^@' => "g4",
+ '^^' => "g4 vim6 new",
+ '^['=> "=\e",
+ '^]' => "g4 vim6 new",
+ '^_' => "g4 vim6 new",
+ '^\\'=>'^\\',
+
+ '^a' => "g4 vim6 new",
+ '^b' => "no vim6 new",
+ '^c' => "g7 mode",
+ '^d' => 'g4',
+ '^e' => "g4 vim6 new",
+ '^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
+ '^m' => "g4",
+ '^n' => "g2 vim6 new",
+ '^o' => 'g4',
+ '^p' => "g2 vim6 new",
+ '^q' => "=^q", # or i^v
+ '^r' => 'g4 arg vim6 new',
+ '^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
+ }, # modei
+
+ 'i^g' => {
+ lead => "ĝ",
+
+ "\e"=> 'g6 modei',
+
+ 'k' => 'g2',
+ 'j' => 'g2',
+ 'u' => 'g4',
+ 'U' => 'g4 vim8 new',
+ # 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 vim7 new',
+ '^p' => 'g4',
+ '^s' => 'g4',
+ 's' => "=i^x^s",
+ '^t' => 'g4',
+ '^u' => 'g4 vim7 new',
+ '^v' => 'g4',
+ '^y' => "g3",
+ }, # mode i ^x
+
+ # TODO: mode/ (command-line)
+ # XXX ex mode if you want to go completely wild
+},
}