emoji: gmail table (google talk)
[sheet.git] / vi.inc.pl
1 use utf8;
2 {
3
4 '' => {
5         '~' => ["co undo"],
6         '!' => ["co argm undo modec"],
7         '@' => ["co arg undo"],
8         '#' => ["pm ext vim6"],
9         '$' => ["pm"],
10         '%' => ["pm"],
11         '^' => ["pm"],
12         '&' => ["co undo"],
13         '*' => ["pm ext vim6"],
14         '(' => ['pm'],
15         ')' => ['pm'],
16         '_' => ["pm"],
17         '+' => ["pm"],
18         '`' => ["pm arg"],
19         '0' => ["pm"],
20         '^^'=> ["co"],
21         '-' => ["pm"],
22         '=' => ['co argm undo'],
23         '?' => ["pm arg modec"],
24         ';' => ["pm"],
25         ':' => ["co modec"],
26         "'" => ["pm arg"],
27         '"' => ['co arg'],
28         '\\' => ['me arg'],
29         '^\\' => ["mo arg"],
30         ',' => ["pm"],
31         '<' => ["co argm undo"],
32         '.' => ["co undo"],
33         '>' => ["co argm undo"],
34         '/' => ["pm arg modec"],
35         '[' => ["me arg mode["],
36         '{' => ["pm"],
37         ']' => ["me arg mode]"],
38         '}' => ["pm"],
39         '^]'=> ["po"],
40         '|' => ["pm"],
41
42         'a' => ["mi undo modei"],
43         'A' => ["mi undo modei"],
44         '^a'=> ["co undo"],
45         'b' => ["pm"],
46         'B' => ["pm"],
47         '^b'=> ["pm"],
48         'c' => ["mi argm undo modei"],
49         'C' => ["mi undo modei"],
50         '^c'=> ["co"],
51         'd' => ["co argm undo"],
52         'D' => ["co undo"],
53         '^d'=> ["po"],
54         'e' => ["pm"],
55         'E' => ["pm"],
56         '^e'=> ["po"],
57         'f' => ["pm arg"],
58         'F' => ["pm arg"],
59         '^f'=> ["pm"],
60         'g' => ["me arg modeg"],
61         'G' => ["pm"],
62         '^g'=> ["ci"],
63         'h' => ["pm"],
64         'H' => ["pm"],
65         '^h'=> "h",
66         'i' => ["mi undo modei"],
67         'I' => ["mi undo modei"],
68         '^i'=> ["pm ext vim6"],
69         'j' => ["pm"],
70         'J' => ["co undo"],
71         '^j'=> "j",
72         'k' => ["pm"],
73         'K' => ["co"],
74         'l' => ["pm"],
75         'L' => ["pm"],
76         '^l'=> ["ci"],
77         'm' => ["co arg"],
78         'M' => ["pm"],
79         '^m'=> "+",
80         'n' => ["pm"],
81         'N' => ["pm"],
82         '^n'=> "j",
83         'o' => ["mi undo modei"],
84         'O' => ["mi undo modei"],
85         '^o'=> ["pm ext vim6"],
86         'p' => ["co undo"],
87         'P' => ["co undo"],
88         '^p'=> "k",
89         'q' => ["mo arg"],
90         'Q' => ["mo"],
91         '^q'=> ["ci"], # or ^v
92         'r' => ["co arg undo"],
93         'R' => ["mi undo modei"],
94         '^r'=> ["co undo ext vim6"],
95         's' => ["mi undo modei"],
96         'S' => ["mi undo modei"],
97         '^s'=> ["ci"],
98         't' => ["pm arg"],
99         'T' => ["pm"],
100         '^t'=> ["po"],
101         'u' => ["co undo"],
102         'U' => ["co undo"],
103         '^u'=> ["po"],
104         'v' => ["mv modev"],
105         'V' => ["mv modev"],
106         '^v'=> ["mv modev ext vim6"],
107         'w' => ["pm"],
108         'W' => ["pm"],
109         '^w'=> ["me arg mode^w"],
110         'x' => ["co undo"],
111         'X' => ["co undo"],
112         '^x'=> ["co undo"],
113         'y' => ["co argm"],
114         'Y' => ["co"],
115         '^y'=> ["po"],
116         'z' => ["me arg modez"],
117         'Z' => ["me arg modeZ"],
118         '^z'=> ["ci"],
119 }, # normal mode
120
121 g => {
122         lead => "g",
123
124         '~' => ["co argm ext vim6"],
125         '@' => ["co ext vim7 new"],
126         '#' => ["pm ext vim6"],
127         '$' => ["pm"],
128         '^' => ["pm ext vim6"],
129         '&' => ["co"],
130         '*' => ["pm ext vim6"],
131         '_' => ["pm ext vim6"],
132         '+' => ["co ext vim7 new"],
133         '`' => ["pm ext vim6 arg"],
134         '8' => ["ci"],
135         '0' => ["pm ext vim6"],
136         '-' => ["co ext vim7 new"],
137         '^['=> ["mo mode"],
138         ']' => ["po"],
139         '^]'=> ["po"],
140         ';' => ["pm"],
141         "'" => ["pm ext vim6 arg"],
142         '<' => ["co ext vim7 new"],
143         '?' => ["co argm ext vim6"],
144         ',' => ["pm"],
145
146         'a' => ["ci"],
147         '^a'=> ["ci"],
148         'd' => ["pm ext vim6"],
149         'D' => ["pm ext vim6"],
150         'e' => ["pm"],
151         'E' => ["pm"],
152         'f' => ["co ext vim6"],
153         'F' => ["co ext vim7 new"],
154         'g' => ["pm"],
155         '^g'=> ["ci"],
156         'h' => ["mv modev"],
157         'H' => ["mv modev"],
158         '^h'=> ["mv modev ext vim6"],
159         'i' => ["mi undo modei"],
160         'I' => ["mi undo modei"],
161         'j' => ["pm ext vim6"],
162         'J' => ["co"],
163         'k' => ["pm ext vim6"],
164         'm' => ["pm ext vim6"],
165         'o' => ["pm"],
166         'p' => ["co undo"],
167         'P' => ["co"],
168         'q' => ["co argm"],
169         'Q' => ["mo ext vim6"],
170         'r' => ["co arg"],
171         'R' => ["mi undo modei"],
172         's' => ["ci ext vim6"],
173         't' => ["po ext vim7 new"],
174         'T' => ["po ext vim7 new"],
175         'u' => ["co argm ext vim6"], # XXX undo?
176         'U' => ["co undo argm ext vim6"],
177         'v' => ['mv modev'],
178         'V' => ["co"],
179         'w' => ["co argm ext vim7 new"],
180         'x' => ["co ext vim7 new"],
181 }, # mode g
182
183 Z => {
184         lead => "Z",
185
186         '^['=> ["mo mode"],
187
188         'Q' => ["co ext vim6"],
189         'Z' => ["co"],
190 }, # mode Z
191
192 z => {
193         lead => "z",
194
195         '^' => ["po"],
196         '+' => ["po"],
197         '-' => ["po"],
198         '=' => ["co ext vim7 new"],
199         '.' => ["po"],
200         '^['=> ["mo mode"],
201
202         'a' => ["co ext vim6 folding"],
203         'A' => ["co ext vim6 folding"],
204         'b' => ["po"],
205         'c' => ["co ext vim6 folding"],
206         'C' => ["co ext vim6 folding"],
207         'd' => ["co ext vim6 folding"],
208         'D' => ["co ext vim6 folding"],
209         'e' => ["po"],
210         'E' => ["co ext vim6 folding"],
211         'f' => ["co argm ext vim6 folding"],
212         'F' => ["co ext vim6 folding"],
213         'g' => ["co ext vim7 new"],
214         'G' => ["co ext vim7 new"],
215         'h' => ["po"],
216         'H' => ["po"],
217         'i' => ["co ext vim6 folding"],
218         'j' => ["pm ext vim6 folding"],
219         'k' => ["pm ext vim6 folding"],
220         'l' => ["po"],
221         'L' => ["po"],
222         '^m'=> ["po"],
223         'm' => ["co ext vim6 folding"],
224         'M' => ["co ext vim6 folding"],
225         'n' => ["co ext vim6 folding"],
226         'N' => ["co ext vim6 folding"],
227         'o' => ["co ext vim6 folding"],
228         'O' => ["co ext vim6 folding"],
229         'r' => ["co ext vim6 folding"],
230         'R' => ["co ext vim6 folding"],
231         's' => ["po"],
232         't' => ["po"],
233         'u' => ["co arg ext vim7 new"],
234         'v' => ["co ext vim6 folding"],
235         'w' => ["co ext vim7 new"],
236         'W' => ["co ext vim7 new"],
237         'x' => ["co ext vim6 folding"],
238         'X' => ["co ext vim6 folding"],
239         'z' => ["po"],
240 }, # mode z
241
242 '[' => {
243         lead => "[",
244
245         "`" => ["pm ext vim6"],
246         '#' => ["pm"],
247         '(' => ["pm"],
248         '*' => "[/",
249         '/' => ["pm"],
250         "'" => "[` ^", # ext vim6
251         '{' => ["pm"],
252         '[' => ["pm"],
253         '^['=> ["mo mode"],
254         ']' => ["pm"],
255
256         'c' => ["pm"],
257         'd' => ["ci"],
258         'D' => ["co"],
259         '^d'=> ["po"],
260         'f' => "gf",  # deprecated
261         'i' => ['ci'],
262         'I' => ['co'],
263         '^i'=> ['po'],
264         'm' => ["pm"],
265         'p' => ["co"],
266         'P' => ["co"],
267         's' => ["po ext vim7 new"],
268         'S' => ["po ext vim7 new"],
269         'z' => ["pm ext vim6 folding"],
270 }, # mode [
271
272 ']' => {
273         lead => "]",
274
275         "`" => ["pm ext vim6"],
276         '#' => ["pm"],
277         ')' => ["pm"],
278         '*' => "]/",
279         "'" => "]` ^", # ext vim6
280         '/' => ["pm"],
281         '[' => ["pm"],
282         '^['=> ["mo mode"],
283         ']' => ["pm"],
284         '}' => ["pm"],
285
286         'c' => ["pm"],
287         'd' => ["ci"],
288         'D' => ["co"],
289         '^d'=> ["po"],
290         'f' => "gf",  # deprecated
291         'i' => ["ci"],
292         'I' => ["co"],
293         '^i'=> ["po"],
294         'm' => ["pm"],
295         'p' => ["co"],
296         'P' => "[p",
297         's' => ["po ext vim7 new"],
298         'S' => ["po ext vim7 new"],
299         'z' => ["pm ext vim6 folding"],
300 }, # mode ]
301
302 '^w' => {
303         lead => $ascii ? "'w"  : "ŵ",
304
305         '<' => ["po"],
306         '>' => ["po"],
307         '^' => ["co"],
308         '_' => ["po"],
309         '+' => ["po"],
310         '-' => ["po"],
311         '=' => ["po"],
312         '^['=> ["mo mode"],
313         ']' => ["po"],
314         '}' => ["po"],
315         '|' => ["po"],
316
317         'b' => ["po"],
318         'c' => ["po"],
319         '^c'=> ["mo mode"],
320         'd' => ["po"],
321         'f' => ["co"],
322         'F' => ["co ext vim7 new"],
323         'g' => ["me arg mode^wg"],
324         'h' => ["po"],
325         'H' => ["po"],
326         'i' => ["po"],
327         'j' => ["po"],
328         'J' => ["po"],
329         'k' => ["po"],
330         'K' => ["po"],
331         'l' => ["po"],
332         'L' => ["po"],
333         'n' => ["co"],
334         'o' => ["po"],
335         'p' => ["po"],
336         'P' => ["po"],
337         'q' => ["co"],
338         'r' => ["po"],
339         'R' => ["po"],
340         's' => ["po"],
341         'S' => "^ws",
342         't' => ["po"],
343         'v' => ["po"],
344         'w' => ["po"],
345         'W' => ["po"],
346         'x' => ["po"],
347         'z' => ["po"],
348 }, # mode ^w
349
350 '^wg' => {
351         lead => $ascii ? "'wg" : "ŵg",
352
353         '^['=> ["mo mode"],
354         ']' => ["po"],
355         '}' => ["po"],
356         '^]'=> ["po"],
357         'f' => ["co ext vim7 new"],
358         'F' => ["co ext vim7 new"],
359 }, # mode ^w g
360
361 v => {
362         '!' => ["co"],
363         ':' => ["mo modec"],
364         '<' => ["co"],
365         '=' => ['co undo'],
366         '>' => ['co'],
367         '~' => ["co ext vim6"],
368         '^['=> ["mo mode"],
369         '^]'=> ["po"],
370         '^\\'=>'^\\',
371
372         'a' => ['me modeva arg ext vim6'],
373         'A' => ['mi modei ext vim6'],
374         'c' => ['mi modei ext vim6'],
375         'C' => ['mi modei ext vim6'],
376         '^c'=> ["mo mode"],
377         'd' => ["co ext vim6"],
378         'D' => ["co ext vim6"],
379         'g' => ["me arg modevg"],
380         '^g'=> ["mv"],
381         '^h'=> ['co'],
382         'i' => ["me modeva arg ext vim6"],
383         'I' => ["mi modei ext vim6"], # block
384         'J' => ["co"],
385         'K' => ['co'],
386         'o' => ["pm"],
387         'O' => ["pm"],
388         '^o'=> ["mv"],
389         'p' => ['co'],
390         'P' => ['co'],
391         '^q'=> "^q",
392         'r' => ['co arg'],
393         'R' => "vS",  # "might change in future"
394         '^s'=> "^s",
395         's' => "vc",
396         'S' => ['mi modei ext vim6'],
397         'u' => ["co ext vim6"],
398         'U' => ["co ext vim6"],
399         'v' => ["mv"],
400         'V' => ["mv"],
401         '^v'=> ["mv ext vim6"],
402         'x' => "vd",
403         'X' => "vD",
404         'y' => ["co"],
405         'Y' => ["co"],
406
407         map {$_ => $_} qw(
408                 b B ^b ^d e E ^e f F ^f G h H ^i j ^j k l L m M ^m
409                 n N ^n ^p q ^s t T ^u w W ^w ^y z ^z
410                 ` # $ % ^ * ( 0 ) [ { ] } ; / ? + - _ |
411         ) # a lot like normal mode
412 }, # mode v
413
414 vg => {
415         lead => "g",
416
417         '^['=> ["mv modev"],
418         '?' => ["co ext vim6"],
419         'J' => ['co ext vim6'],
420         'q' => ["co ext vim6"],
421         'v' => 'gv',
422         'w' => ['co ext vim7 new'],
423 }, # mode v g
424
425 va => {
426         '(' => 'vab',
427         ')' => 'vab',
428         '`' => "va'",
429         "'" => ['pm ext vim7 new'],
430         '"' => "va'",
431         '<' => ['pm ext vim6'],
432         '>' => 'va&lt;',
433         '[' => ['pm ext vim6'],
434         '{' => 'vaB',
435         '^['=> ['mv modev'],
436         ']' => 'va[',
437         '}' => 'vaB',
438
439         'b' => ['pm ext vim6'],
440         'B' => ['pm ext vim6'],
441         'p' => ['pm ext vim6'],
442         's' => ['pm ext vim6'],
443         't' => ['pm ext vim7 new'],
444         'w' => ['pm ext vim6'],
445         'W' => ['pm ext vim6'],
446 }, # mode v a
447
448 #c => {
449 #       desc => "command-line mode",
450 #
451 #       '^_' => 'i^_',
452 #       '^^' => 'i^^',
453 #       '^\\'=>'^\\',
454 #       '^a' => [""], #todo
455 #       '^b' => ["po"],
456 #       '^c' => 'i^c',
457 #       '^d' => [""], #todo
458 #       '^e' => ["po"],
459 #       '^h' => 'i^h',
460 #       '^j' => ["co"],
461 #       '^k' => 'i^k',
462 #       '^l' => [""], #todo
463 #       '^n' => [""], #todo
464 #       '^p' => [""], #todo
465 #       '^r' => 'i^r', # and then some...
466 #            ## ["co arg ext vim6"],
467 #       '^q' => '^q',
468 #       '^u' => 'i^u',
469 #       '^v' => 'i^v',
470 #       '^w' => 'i^w',
471 #       '^y' => ["co"],
472 #}, # mode c
473
474 i => {
475         '^@' => ["co"],
476         '^^' => ["co ext vim6"],
477         '^[' => ["mo mode"],
478         '^]' => ["co ext vim6"],
479         '^_' => ["co ext vim6"],
480         '^\\'=>'^\\',
481
482         '^a' => ["co ext vim6"],
483         '^b' => ["no ext vim6"],
484         '^c' => ["mo mode"],
485         '^d' => ['co'],
486         '^e' => ["co ext vim6"],
487         '^f' => ['co'],
488         '^g' => ["me modei^g arg"],
489         '^h' => ["co"],
490         '^i' => ["co"],
491         '^j' => ["co"],
492         '^k' => ['co arg arg ext vim6 linkdigraphs'],
493         '^l' => ["mo mode ext vim6"],  # insertmode only
494         '^m' => ["co"],
495         '^n' => ["pm ext vim6"],
496         '^o' => ['co'],
497         '^p' => ["pm ext vim6"],
498         '^q' => "^q",  # or i^v
499         '^r' => ['co arg ext vim6'],
500         '^s' => "^s",
501         '^t' => ["co"],
502         '^u' => ["co"],
503         '^v' => ['co linkcharset'],
504         '^w' => ["co"],
505         '^x' => ['me arg modei^x ext vim6'],
506         '^y' => ["co ext vim6"],
507         '^z' => ["ci ext vim6"],  # insertmode only
508 }, # modei
509
510 'i^g' => {
511         lead => $ascii ? "'g"  : "ĝ",
512
513         'k' => ['pm'],
514         'j' => ['pm'],
515         'u' => ['co'],
516         # other keys (even esc) are not recognized
517 }, # mode i ^g
518
519 'i^x' => {
520         lead => $ascii ? "'x"  : "x̂",
521
522         '^[' => ["mo mode"], # yes, it really leaves insert mode
523         '^]' => ['co'],
524         '^d' => ['co'],
525         '^e' => ["po"],
526         '^f' => ['co'],
527         '^i' => ['co'],
528         '^k' => ['co'],
529         '^l' => ['co'],
530         '^n' => ['co'],
531         '^o' => ['co ext vim7 new'],
532         '^p' => ['co'],
533         '^s' => ['co'],
534          's' => 'i^x^s',
535         '^t' => ['co'],
536         '^u' => ['co ext vim7 new'],
537         '^v' => ['co'],
538         '^y' => ["po"],
539 }, # mode i ^x
540
541 # XXX ex mode if you want to go completely wild
542 }