keys: drop ascii support
[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         "\e"=> ["mo mode"],
125
126         '~' => ["co argm ext vim6"],
127         '@' => ["co ext vim7 new"],
128         '#' => ["pm ext vim6"],
129         '$' => ["pm"],
130         '^' => ["pm ext vim6"],
131         '&' => ["co"],
132         '*' => ["pm ext vim6"],
133         '_' => ["pm ext vim6"],
134         '+' => ["co ext vim7 new"],
135         '`' => ["pm ext vim6 arg"],
136         '8' => ["ci"],
137         '0' => ["pm ext vim6"],
138         '-' => ["co ext vim7 new"],
139         '^['=> ["mo mode"],
140         ']' => ["po"],
141         '^]'=> ["po"],
142         ';' => ["pm"],
143         "'" => ["pm ext vim6 arg"],
144         '<' => ["co ext vim7 new"],
145         '?' => ["co argm ext vim6"],
146         ',' => ["pm"],
147
148         'a' => ["ci"],
149         '^a'=> ["ci"],
150         'd' => ["pm ext vim6"],
151         'D' => ["pm ext vim6"],
152         'e' => ["pm"],
153         'E' => ["pm"],
154         'f' => ["co ext vim6"],
155         'F' => ["co ext vim7 new"],
156         'g' => ["pm"],
157         '^g'=> ["ci"],
158         'h' => ["mv modev"],
159         'H' => ["mv modev"],
160         '^h'=> ["mv modev ext vim6"],
161         'i' => ["mi undo modei"],
162         'I' => ["mi undo modei"],
163         'j' => ["pm ext vim6"],
164         'J' => ["co"],
165         'k' => ["pm ext vim6"],
166         'm' => ["pm ext vim6"],
167         'o' => ["pm"],
168         'p' => ["co undo"],
169         'P' => ["co"],
170         'q' => ["co argm"],
171         'Q' => ["mo ext vim6"],
172         'r' => ["co arg"],
173         'R' => ["mi undo modei"],
174         's' => ["ci ext vim6"],
175         't' => ["po ext vim7 new"],
176         'T' => ["po ext vim7 new"],
177         'u' => ["co argm ext vim6"], # XXX undo?
178         'U' => ["co undo argm ext vim6"],
179         'v' => ['mv modev'],
180         'V' => ["co"],
181         'w' => ["co argm ext vim7 new"],
182         'x' => ["co ext vim7 new"],
183 }, # mode g
184
185 Z => {
186         lead => "Z",
187
188         "\e"=> ["mo mode"],
189         '^['=> "\e",
190
191         'Q' => ["co ext vim6"],
192         'Z' => ["co"],
193 }, # mode Z
194
195 z => {
196         lead => "z",
197
198         "\e"=> ["mo mode"],
199
200         '^' => ["po"],
201         '+' => ["po"],
202         '-' => ["po"],
203         '=' => ["co ext vim7 new"],
204         '.' => ["po"],
205         '^['=> "\e",
206
207         'a' => ["co ext vim6 folding"],
208         'A' => ["co ext vim6 folding"],
209         'b' => ["po"],
210         'c' => ["co ext vim6 folding"],
211         'C' => ["co ext vim6 folding"],
212         'd' => ["co ext vim6 folding"],
213         'D' => ["co ext vim6 folding"],
214         'e' => ["po"],
215         'E' => ["co ext vim6 folding"],
216         'f' => ["co argm ext vim6 folding"],
217         'F' => ["co ext vim6 folding"],
218         'g' => ["co ext vim7 new"],
219         'G' => ["co ext vim7 new"],
220         'h' => ["po"],
221         'H' => ["po"],
222         'i' => ["co ext vim6 folding"],
223         'j' => ["pm ext vim6 folding"],
224         'k' => ["pm ext vim6 folding"],
225         'l' => ["po"],
226         'L' => ["po"],
227         '^m'=> ["po"],
228         'm' => ["co ext vim6 folding"],
229         'M' => ["co ext vim6 folding"],
230         'n' => ["co ext vim6 folding"],
231         'N' => ["co ext vim6 folding"],
232         'o' => ["co ext vim6 folding"],
233         'O' => ["co ext vim6 folding"],
234         'r' => ["co ext vim6 folding"],
235         'R' => ["co ext vim6 folding"],
236         's' => ["po"],
237         't' => ["po"],
238         'u' => ["co arg ext vim7 new"],
239         'v' => ["co ext vim6 folding"],
240         'w' => ["co ext vim7 new"],
241         'W' => ["co ext vim7 new"],
242         'x' => ["co ext vim6 folding"],
243         'X' => ["co ext vim6 folding"],
244         'z' => ["po"],
245 }, # mode z
246
247 '[' => {
248         lead => "[",
249
250         "\e"=> ["mo mode"],
251
252         "`" => ["pm ext vim6"],
253         '#' => ["pm"],
254         '(' => ["pm"],
255         '*' => "[/",
256         '/' => ["pm"],
257         "'" => "[` ^", # ext vim6
258         '{' => ["pm"],
259         '[' => ["pm"],
260         '^['=> "\e",
261         ']' => ["pm"],
262
263         'c' => ["pm"],
264         'd' => ["ci"],
265         'D' => ["co"],
266         '^d'=> ["po"],
267         'f' => "gf",  # deprecated
268         'i' => ['ci'],
269         'I' => ['co'],
270         '^i'=> ['po'],
271         'm' => ["pm"],
272         'p' => ["co"],
273         'P' => ["co"],
274         's' => ["po ext vim7 new"],
275         'S' => ["po ext vim7 new"],
276         'z' => ["pm ext vim6 folding"],
277 }, # mode [
278
279 ']' => {
280         lead => "]",
281
282         "\e"=> ["mo mode"],
283
284         "`" => ["pm ext vim6"],
285         '#' => ["pm"],
286         ')' => ["pm"],
287         '*' => "]/",
288         "'" => "]` ^", # ext vim6
289         '/' => ["pm"],
290         '[' => ["pm"],
291         '^['=> "\e",
292         ']' => ["pm"],
293         '}' => ["pm"],
294
295         'c' => ["pm"],
296         'd' => ["ci"],
297         'D' => ["co"],
298         '^d'=> ["po"],
299         'f' => "gf",  # deprecated
300         'i' => ["ci"],
301         'I' => ["co"],
302         '^i'=> ["po"],
303         'm' => ["pm"],
304         'p' => ["co"],
305         'P' => "[p",
306         's' => ["po ext vim7 new"],
307         'S' => ["po ext vim7 new"],
308         'z' => ["pm ext vim6 folding"],
309 }, # mode ]
310
311 '^w' => {
312         lead => "ŵ",
313
314         "\e"=> ["mo mode"],
315
316         '<' => ["po"],
317         '>' => ["po"],
318         '^' => ["co"],
319         '_' => ["po"],
320         '+' => ["po"],
321         '-' => ["po"],
322         '=' => ["po"],
323         '^['=> "\e",
324         ']' => ["po"],
325         '}' => ["po"],
326         '|' => ["po"],
327
328         'b' => ["po"],
329         'c' => ["po"],
330         '^c'=> ["mo mode"],
331         'd' => ["po"],
332         'f' => ["co"],
333         'F' => ["co ext vim7 new"],
334         'g' => ["me arg mode^wg"],
335         'h' => ["po"],
336         'H' => ["po"],
337         'i' => ["po"],
338         'j' => ["po"],
339         'J' => ["po"],
340         'k' => ["po"],
341         'K' => ["po"],
342         'l' => ["po"],
343         'L' => ["po"],
344         'n' => ["co"],
345         'o' => ["po"],
346         'p' => ["po"],
347         'P' => ["po"],
348         'q' => ["co"],
349         'r' => ["po"],
350         'R' => ["po"],
351         's' => ["po"],
352         'S' => "^ws",
353         't' => ["po"],
354         'v' => ["po"],
355         'w' => ["po"],
356         'W' => ["po"],
357         'x' => ["po"],
358         'z' => ["po"],
359 }, # mode ^w
360
361 '^wg' => {
362         lead => "ŵg",
363
364         "\e"=> ["mo mode"],
365         '^['=> "\e",
366         ']' => ["po"],
367         '}' => ["po"],
368         '^]'=> ["po"],
369         'f' => ["co ext vim7 new"],
370         'F' => ["co ext vim7 new"],
371 }, # mode ^w g
372
373 v => {
374         "\e"=> ["mo mode"],
375
376         '!' => ["co"],
377         ':' => ["mo modec"],
378         '<' => ["co"],
379         '=' => ['co undo'],
380         '>' => ['co'],
381         '~' => ["co ext vim6"],
382         '^['=> "\e",
383         '^]'=> ["po"],
384         '^\\'=>'^\\',
385
386         'a' => ['me modeva arg ext vim6'],
387         'A' => ['mi modei ext vim6'],
388         'c' => ['mi modei ext vim6'],
389         'C' => ['mi modei ext vim6'],
390         '^c'=> ["mo mode"],
391         'd' => ["co ext vim6"],
392         'D' => ["co ext vim6"],
393         'g' => ["me arg modevg"],
394         '^g'=> ["mv"],
395         '^h'=> ['co'],
396         'i' => ["me modeva arg ext vim6"],
397         'I' => ["mi modei ext vim6"], # block
398         'J' => ["co"],
399         'K' => ['co'],
400         'o' => ["pm"],
401         'O' => ["pm"],
402         '^o'=> ["mv"],
403         'p' => ['co'],
404         'P' => ['co'],
405         '^q'=> "^q",
406         'r' => ['co arg'],
407         'R' => "vS",  # "might change in future"
408         '^s'=> "^s",
409         's' => "vc",
410         'S' => ['mi modei ext vim6'],
411         'u' => ["co ext vim6"],
412         'U' => ["co ext vim6"],
413         'v' => ["mv"],
414         'V' => ["mv"],
415         '^v'=> ["mv ext vim6"],
416         'x' => "vd",
417         'X' => "vD",
418         'y' => ["co"],
419         'Y' => ["co"],
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"=> ["mv modev"],
432
433         '^['=> "\e",
434         '?' => ["co ext vim6"],
435         'J' => ['co ext vim6'],
436         'q' => ["co ext vim6"],
437         'v' => 'gv',
438         'w' => ['co ext vim7 new'],
439 }, # mode v g
440
441 va => {
442         "\e"=> ["mv modev"],
443
444         '(' => 'vab',
445         ')' => 'vab',
446         '`' => "va'",
447         "'" => ['pm ext vim7 new'],
448         '"' => "va'",
449         '<' => ['pm ext vim6'],
450         '>' => 'va&lt;',
451         '[' => ['pm ext vim6'],
452         '{' => 'vaB',
453         '^['=> "\e",
454         ']' => 'va[',
455         '}' => 'vaB',
456
457         'b' => ['pm ext vim6'],
458         'B' => ['pm ext vim6'],
459         'p' => ['pm ext vim6'],
460         's' => ['pm ext vim6'],
461         't' => ['pm ext vim7 new'],
462         'w' => ['pm ext vim6'],
463         'W' => ['pm ext vim6'],
464 }, # mode v a
465
466 #c => {
467 #       desc => "command-line mode",
468 #
469 #       '^_' => 'i^_',
470 #       '^^' => 'i^^',
471 #       '^\\'=>'^\\',
472 #       '^a' => [""], #todo
473 #       '^b' => ["po"],
474 #       '^c' => 'i^c',
475 #       '^d' => [""], #todo
476 #       '^e' => ["po"],
477 #       '^h' => 'i^h',
478 #       '^j' => ["co"],
479 #       '^k' => 'i^k',
480 #       '^l' => [""], #todo
481 #       '^n' => [""], #todo
482 #       '^p' => [""], #todo
483 #       '^r' => 'i^r', # and then some...
484 #            ## ["co arg ext vim6"],
485 #       '^q' => '^q',
486 #       '^u' => 'i^u',
487 #       '^v' => 'i^v',
488 #       '^w' => 'i^w',
489 #       '^y' => ["co"],
490 #}, # mode c
491
492 i => {
493         "\e" => ["mo mode"],
494
495         '^@' => ["co"],
496         '^^' => ["co ext vim6"],
497         '^['=> "\e",
498         '^]' => ["co ext vim6"],
499         '^_' => ["co ext vim6"],
500         '^\\'=>'^\\',
501
502         '^a' => ["co ext vim6"],
503         '^b' => ["no ext vim6"],
504         '^c' => ["mo mode"],
505         '^d' => ['co'],
506         '^e' => ["co ext vim6"],
507         '^f' => ['co'],
508         '^g' => ["me modei^g arg"],
509         '^h' => ["co"],
510         '^i' => ["co"],
511         '^j' => ["co"],
512         '^k' => ['co arg arg ext vim6 linkdigraphs'],
513         '^l' => ["mo mode ext vim6"],  # insertmode only
514         '^m' => ["co"],
515         '^n' => ["pm ext vim6"],
516         '^o' => ['co'],
517         '^p' => ["pm ext vim6"],
518         '^q' => "^q",  # or i^v
519         '^r' => ['co arg ext vim6'],
520         '^s' => "^s",
521         '^t' => ["co"],
522         '^u' => ["co"],
523         '^v' => ['co linkcharset'],
524         '^w' => ["co"],
525         '^x' => ['me arg modei^x ext vim6'],
526         '^y' => ["co ext vim6"],
527         '^z' => ["ci ext vim6"],  # insertmode only
528 }, # modei
529
530 'i^g' => {
531         lead => "ĝ",
532
533         "\e"=> ['mi modei'],
534
535         'k' => ['pm'],
536         'j' => ['pm'],
537         'u' => ['co'],
538         # other keys (even esc) are not recognized
539 }, # mode i ^g
540
541 'i^x' => {
542         lead => "x̂",
543
544         "\e" => ["mo mode"], # yes, it really leaves insert mode
545
546         '^['=> "\e",
547         '^]' => ['co'],
548         '^d' => ['co'],
549         '^e' => ["po"],
550         '^f' => ['co'],
551         '^i' => ['co'],
552         '^k' => ['co'],
553         '^l' => ['co'],
554         '^n' => ['co'],
555         '^o' => ['co ext vim7 new'],
556         '^p' => ['co'],
557         '^s' => ['co'],
558          's' => 'i^x^s',
559         '^t' => ['co'],
560         '^u' => ['co ext vim7 new'],
561         '^v' => ['co'],
562         '^y' => ["po"],
563 }, # mode i ^x
564
565 # XXX ex mode if you want to go completely wild
566 }