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