7654d946e126c22bed61d91e71c9fa3761977ae3
[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 }