1 |
#---------------------------------------------------------------------- |
2 |
# |
3 |
# qvi 自動テストスクリプト |
4 |
# |
5 |
# テストスクリプト仕様: |
6 |
# http://vivi.dyndns.org/vivi/docs/qvi/qvi-029.html |
7 |
# |
8 |
#---------------------------------------------------------------------- |
9 |
|
10 |
# テストスクリプト要件: |
11 |
# [1] 全てのコマンドを網羅しているか? |
12 |
# [2] {c|d|y}<move> の全てのコマンドを網羅しているか? |
13 |
# [3] 繰り返し回数を前置した場合もチェック |
14 |
# [4] 編集コマンド実行後のカーソル位置は正しいか? |
15 |
# [5] 編集コマンド実行後の .(repeat the command) は正しく動作するか? |
16 |
# [6] .(repeat the command) に繰り返し回数を前置した場合も大丈夫か? |
17 |
# [7] 編集コマンド実行後の u(undo)/U(redo) は正しく動作するか? |
18 |
# [8] u(undo)/U(redo) 実行後の カーソル位置は正しいか? |
19 |
|
20 |
|
21 |
:set fontName=Courier New |
22 |
:set fontSize=14 |
23 |
##---------------------------------------------------------------------- |
24 |
## h j k l による単純なカーソル移動 |
25 |
##--------------------------------------------------------------------- |
26 |
<main() |
27 |
<{ |
28 |
< printf("hello, world.\n"); |
29 |
<} |
30 |
=1 0 |
31 |
>main() |
32 |
>{ |
33 |
> printf("hello, world.\n"); |
34 |
>} |
35 |
> |
36 |
"j" =2 0 |
37 |
"j" =3 0 |
38 |
"j" =4 0 |
39 |
"j" =5 0 # EOF行 |
40 |
"j" =5 0 # EOF行 |
41 |
"k" =4 0 |
42 |
"k" =3 0 |
43 |
"k" =2 0 |
44 |
"k" =1 0 |
45 |
"k" =1 0 |
46 |
"l" =1 1 # a |
47 |
"l" =1 2 # i |
48 |
"l" =1 3 # n |
49 |
"l" =1 4 # ( |
50 |
"l" =1 5 # ) |
51 |
"l" =1 5 |
52 |
"h" =1 4 |
53 |
"h" =1 3 |
54 |
"h" =1 2 |
55 |
"h" =1 1 |
56 |
"h" =1 0 |
57 |
"h" =1 0 |
58 |
|
59 |
<{ |
60 |
< hoge; |
61 |
<} |
62 |
"$j" =2 5 |
63 |
"j" =3 0 |
64 |
"k" =2 5 |
65 |
|
66 |
##--------------------------------------------------------------------- |
67 |
## h j k l 繰り返し回数前置 |
68 |
##--------------------------------------------------------------------- |
69 |
<main() |
70 |
<{ |
71 |
< printf("hello, world.\n"); |
72 |
<} |
73 |
"2j" =3 0 |
74 |
"3j" =5 0 |
75 |
"3k" =2 0 |
76 |
"3k" =1 0 |
77 |
"3l" =1 3 |
78 |
"3l" =1 5 |
79 |
"3h" =1 2 |
80 |
"3h" =1 0 |
81 |
|
82 |
##--------------------------------------------------------------------- |
83 |
## j k でカラム位置が保存されるかどうか |
84 |
##--------------------------------------------------------------------- |
85 |
<012345 |
86 |
<012 |
87 |
<0123456789 |
88 |
"5l" =1 5 |
89 |
"j" =2 2 |
90 |
"j" =3 5 |
91 |
|
92 |
.end |
93 |
|
94 |
##--------------------------------------------------------------------- |
95 |
## w b e |
96 |
##--------------------------------------------------------------------- |
97 |
<main() |
98 |
<{ |
99 |
< printf("hello, world.\n"); |
100 |
< 123xy xyzあい漢字あいカナ漢字あい。漢字。 |
101 |
<} |
102 |
=1 0 |
103 |
"w" =1 4 # ( |
104 |
"w" =2 0 # { |
105 |
"w" =3 1 # print |
106 |
"w" =3 7 # (" |
107 |
"w" =3 9 # hello |
108 |
"w" =3 14 # , |
109 |
"w" =3 16 # world |
110 |
"w" =3 21 # .\ |
111 |
"w" =3 23 # n |
112 |
"w" =3 24 # "); |
113 |
"w" =4 1 # 123xy |
114 |
"w" =4 7 # xyz |
115 |
"w" =4 10 # あい |
116 |
"w" =4 12 # 漢字 |
117 |
"w" =4 14 # あい |
118 |
"w" =4 16 # カナ |
119 |
"w" =4 18 # 漢字 |
120 |
"w" =4 20 # あい |
121 |
"w" =4 22 # 。 |
122 |
"w" =4 23 # 漢字 |
123 |
"w" =4 25 # 。 |
124 |
"w" =5 0 # } |
125 |
"w" =6 0 # EOF |
126 |
"w" =6 0 # EOF |
127 |
"b" =5 0 # } |
128 |
"b" =4 25 # 。 |
129 |
"b" =4 23 # 漢字 |
130 |
"b" =4 22 # 。 |
131 |
"b" =4 20 # あい |
132 |
"b" =4 18 # 漢字 |
133 |
"b" =4 16 # カナ |
134 |
"b" =4 14 # あい |
135 |
"b" =4 12 # 漢字 |
136 |
"b" =4 10 # あい |
137 |
"b" =4 7 # xyz |
138 |
"b" =4 1 # 123xy |
139 |
"b" =3 24 # "); |
140 |
"b" =3 23 # n |
141 |
"b" =3 21 # .\ |
142 |
"b" =3 16 # world |
143 |
"b" =3 14 # , |
144 |
"b" =3 9 # hello |
145 |
"b" =3 7 # (" |
146 |
"b" =3 1 # print |
147 |
"b" =2 0 # { |
148 |
"b" =1 4 # ( |
149 |
"b" =1 0 # main |
150 |
"b" =1 0 # main |
151 |
# main() |
152 |
# { |
153 |
# printf("hello, world.\n"); |
154 |
# 123xy xyzあい漢字あいカナ漢字あい。漢字。 |
155 |
# } |
156 |
"e" =1 3 # main |
157 |
"e" =1 5 # ) |
158 |
"e" =2 0 # { |
159 |
"e" =3 6 # printf |
160 |
"e" =3 8 # (" |
161 |
"e" =3 13 # hello |
162 |
"e" =3 14 # , |
163 |
"e" =3 20 # world |
164 |
"e" =3 22 # .\ |
165 |
"e" =3 23 # n |
166 |
"e" =3 26 # "); |
167 |
"e" =4 5 # 123xy |
168 |
"e" =4 9 # xyz |
169 |
"e" =4 11 # あい |
170 |
"e" =4 13 # 漢字 |
171 |
"e" =4 15 # あい |
172 |
"e" =4 17 # カナ |
173 |
"e" =4 19 # 漢字 |
174 |
"e" =4 21 # あい |
175 |
"e" =4 22 # 。 |
176 |
"e" =4 24 # 漢字 |
177 |
"e" =4 25 # 。 |
178 |
"e" =5 0 # } |
179 |
"e" =6 0 # EOF |
180 |
"e" =6 0 # EOF |
181 |
|
182 |
<main() |
183 |
<{ |
184 |
< printf("hello, world.\n"); |
185 |
< 123xy xyzあい漢字あいカナ漢字あい。漢字。 |
186 |
<} |
187 |
=1 0 |
188 |
"2w" =2 0 # { |
189 |
"99w" =6 0 |
190 |
"2b" =4 25 # 。 |
191 |
"99b" =1 0 |
192 |
"3e" =2 0 # { |
193 |
"99e" =6 0 # EOF |
194 |
##--------------------------------------------------------------------- |
195 |
## W B E |
196 |
##--------------------------------------------------------------------- |
197 |
<main() |
198 |
<{ |
199 |
< printf("hello, world.\n"); |
200 |
< 123xy xyzあい漢字あいカナ漢字あい。漢字。 |
201 |
< |
202 |
<} |
203 |
=1 0 |
204 |
"W" =2 0 # { |
205 |
"W" =3 1 # print |
206 |
"W" =3 16 # world |
207 |
"W" =4 1 # 123 |
208 |
"W" =4 7 # xyz |
209 |
"W" =6 0 # } |
210 |
"W" =7 0 # EOF |
211 |
"B" =6 0 # } |
212 |
"B" =4 7 # xyz |
213 |
"B" =4 1 # 123 |
214 |
"B" =3 16 # world |
215 |
"B" =3 1 # print |
216 |
"B" =2 0 # { |
217 |
"B" =1 0 # main |
218 |
"E" =1 5 # ) |
219 |
"E" =2 0 # { |
220 |
"E" =3 14 # , |
221 |
"E" =3 26 # ; |
222 |
"E" =4 5 # y |
223 |
"E" =4 25 # 。 |
224 |
"E" =6 0 # } |
225 |
"E" =7 0 # EOF |
226 |
|
227 |
<main() |
228 |
<{ |
229 |
< printf("hello, world.\n"); |
230 |
< 123xy xyzあい漢字あいカナ漢字あい。漢字。 |
231 |
<} |
232 |
=1 0 |
233 |
"2W" =3 1 # { |
234 |
"99W" =6 0 |
235 |
"2B" =4 7 # xyz |
236 |
"99B" =1 0 |
237 |
"3E" =3 14 # , |
238 |
"99E" =6 0 # EOF |
239 |
##--------------------------------------------------------------------- |
240 |
## 0 ^ $ 行内移動コマンド |
241 |
##--------------------------------------------------------------------- |
242 |
< abc |
243 |
=1 0 |
244 |
"$" =1 3 |
245 |
"^" =1 1 |
246 |
"0" =1 0 |
247 |
<あいう |
248 |
"$" =1 2 |
249 |
"^" =1 0 |
250 |
"0" =1 0 |
251 |
|
252 |
##--------------------------------------------------------------------- |
253 |
## % コマンド |
254 |
##--------------------------------------------------------------------- |
255 |
<main() |
256 |
<{ |
257 |
< for(;;) { |
258 |
< } |
259 |
<} |
260 |
"%" =1 5 |
261 |
"%" =1 4 |
262 |
"%" =1 5 |
263 |
"2G%" =5 0 |
264 |
"%" =2 0 |
265 |
"3G%" =3 7 |
266 |
"%" =3 4 |
267 |
"%" =3 7 |
268 |
"0f;%" =3 4 |
269 |
"gg2%" =1 5 # 繰り返し回数は無視 |
270 |
|
271 |
##--------------------------------------------------------------------- |
272 |
## } { コマンド |
273 |
##--------------------------------------------------------------------- |
274 |
<main() |
275 |
< |
276 |
<hoge |
277 |
<fuga |
278 |
< |
279 |
<foo |
280 |
"}" =2 0 |
281 |
"}" =5 0 |
282 |
"}" =7 0 |
283 |
"{" =5 0 |
284 |
"{" =2 0 |
285 |
"{" =1 0 |
286 |
"2}" =5 0 |
287 |
"2}" =7 0 |
288 |
"2{" =2 0 |
289 |
"2{" =1 0 |
290 |
|
291 |
##--------------------------------------------------------------------- |
292 |
## ]] [[ コマンド |
293 |
##--------------------------------------------------------------------- |
294 |
<main() |
295 |
<{ |
296 |
<} |
297 |
<foo() |
298 |
<{ |
299 |
<} |
300 |
<bar() |
301 |
<{ |
302 |
<} |
303 |
"]]" =2 0 |
304 |
"]]" =5 0 |
305 |
"]]" =8 0 |
306 |
"]]" =10 0 |
307 |
"[[" =8 0 |
308 |
"[[" =5 0 |
309 |
"[[" =2 0 |
310 |
"[[" =1 0 |
311 |
"3]]" =8 0 |
312 |
"3]]" =10 0 |
313 |
"2[[" =5 0 |
314 |
"3[[" =1 0 |
315 |
|
316 |
##--------------------------------------------------------------------- |
317 |
## G gg コマンド |
318 |
##--------------------------------------------------------------------- |
319 |
< main() |
320 |
<{ |
321 |
< print; |
322 |
<} |
323 |
<foo() |
324 |
<{ |
325 |
<} |
326 |
<bar() |
327 |
<{ |
328 |
< } |
329 |
"G" =10 1 |
330 |
"gg" =1 1 |
331 |
"2G" =2 0 |
332 |
"3G" =3 1 |
333 |
<hoge |
334 |
<fuga |
335 |
"2GJ" // EOF行を空でないようにする |
336 |
>hoge |
337 |
>fuga |
338 |
"ggG" =2 0 |
339 |
|
340 |
##--------------------------------------------------------------------- |
341 |
## - + Enter コマンド |
342 |
##--------------------------------------------------------------------- |
343 |
<main() |
344 |
<{ |
345 |
< printf("hello, world.\n"); |
346 |
< 123xy xyzあい漢字あいカナ漢字あい。漢字。 |
347 |
<} |
348 |
"+" =2 0 |
349 |
"+" =3 1 |
350 |
"2+" =5 0 |
351 |
"2+" =6 0 |
352 |
"-" =5 0 |
353 |
"-" =4 1 |
354 |
"2-" =2 0 |
355 |
"3-" =1 0 |
356 |
0x0d =2 0 |
357 |
0x0d =3 1 |
358 |
"2" 0x0d =5 0 |
359 |
"2" 0x0d =6 0 |
360 |
|
361 |
##--------------------------------------------------------------------- |
362 |
## H M L コマンド |
363 |
##--------------------------------------------------------------------- |
364 |
< 1 |
365 |
<2 |
366 |
< 3 |
367 |
<4 |
368 |
< 5 |
369 |
"L" =5 1 |
370 |
"H" =1 1 |
371 |
"M" =3 1 |
372 |
"2H" =2 0 |
373 |
"3L" =3 1 |
374 |
|
375 |
##--------------------------------------------------------------------- |
376 |
## /? n N コマンド |
377 |
##--------------------------------------------------------------------- |
378 |
<main() |
379 |
<{ |
380 |
< printf("hello, world.\n"); |
381 |
< 123xy xyzあい漢字あいカナ漢字あい。漢字。 |
382 |
<} |
383 |
/i |
384 |
=1 2 |
385 |
"n" =3 3 |
386 |
"n" =1 2 |
387 |
"1G2n" =3 3 |
388 |
|
389 |
##--------------------------------------------------------------------- |
390 |
## f F t T ; , コマンド |
391 |
##--------------------------------------------------------------------- |
392 |
<mainmain |
393 |
"fi" =1 2 |
394 |
"fi" =1 6 |
395 |
"fi" =1 6 |
396 |
"," =1 2 |
397 |
"0;" =1 2 |
398 |
"02;" =1 6 |
399 |
"$2," =1 2 |
400 |
"0ti" =1 1 |
401 |
"ti" =1 1 |
402 |
"02ti" =1 5 |
403 |
"," =1 3 |
404 |
";" =1 5 |
405 |
"2;" =1 5 |
406 |
"$Fi" =1 6 |
407 |
"Fi" =1 2 |
408 |
"Fi" =1 2 |
409 |
"$2;" =1 2 |
410 |
"$Ti" =1 7 |
411 |
"Ti" =1 7 |
412 |
"$2Ti" =1 3 |
413 |
"," =1 5 |
414 |
";" =1 3 |
415 |
"2;" =1 3 |
416 |
|
417 |
.end |
418 |
|
419 |
##--------------------------------------------------------------------- |
420 |
## i コマンド |
421 |
##--------------------------------------------------------------------- |
422 |
<hoge |
423 |
"ifoo" 0x1b |
424 |
>foohoge |
425 |
> |
426 |
=1 2 # Esc でカーソルは左にひとつ戻る |
427 |
"." # repeat i command |
428 |
>fofooohoge |
429 |
> |
430 |
"." # repeat i command |
431 |
>fofofoooohoge |
432 |
> |
433 |
"3ix" 0x1b # 3回 x 挿入 |
434 |
>fofofoxxxooohoge |
435 |
> |
436 |
"0iX Y" 0x1b |
437 |
>X Yfofofoxxxooohoge |
438 |
> |
439 |
"u0." |
440 |
>X Yfofofoxxxooohoge |
441 |
> |
442 |
|
443 |
##--------------------------------------------------------------------- |
444 |
## I コマンド |
445 |
##--------------------------------------------------------------------- |
446 |
< hoge |
447 |
=1 0 |
448 |
"Ixyz" 0x1b # hoge の直前に挿入 |
449 |
> xyzhoge |
450 |
> |
451 |
"$4I8" 0x1b # 8 を 4回挿入 |
452 |
> 8888xyzhoge |
453 |
> |
454 |
"u" |
455 |
> xyzhoge |
456 |
> |
457 |
"." # repeat I command |
458 |
> 8888xyzhoge |
459 |
> |
460 |
"u3." # 8を4回ではなく3回挿入 |
461 |
> 888xyzhoge |
462 |
> |
463 |
##--------------------------------------------------------------------- |
464 |
## a コマンド |
465 |
##--------------------------------------------------------------------- |
466 |
<hoge |
467 |
"afoo" 0x1b |
468 |
>hfoooge |
469 |
> |
470 |
=1 3 # Esc でカーソルは左にひとつ戻る |
471 |
"." # repeat i command |
472 |
>hfoofoooge |
473 |
> |
474 |
"." # repeat i command |
475 |
>hfoofoofoooge |
476 |
> |
477 |
"3ax" 0x1b # 3回 x 挿入 |
478 |
>hfoofoofooxxxoge |
479 |
> |
480 |
##--------------------------------------------------------------------- |
481 |
## A コマンド |
482 |
##--------------------------------------------------------------------- |
483 |
< hoge |
484 |
=1 0 |
485 |
"Axyz" 0x1b # hoge の直前に挿入 |
486 |
> hogexyz |
487 |
> |
488 |
"04A8" 0x1b # 8 を 4回挿入 |
489 |
> hogexyz8888 |
490 |
> |
491 |
"u" # xyz と 8888 は一度に undo される |
492 |
> hoge |
493 |
> |
494 |
"." # repeat A command |
495 |
> hoge8888 |
496 |
> |
497 |
"u3." # 8を4回ではなく3回挿入 |
498 |
> hoge888 |
499 |
> |
500 |
##--------------------------------------------------------------------- |
501 |
## C コマンド |
502 |
##--------------------------------------------------------------------- |
503 |
<main() |
504 |
"fiCXYZ" 0x1b |
505 |
>maXYZ |
506 |
> |
507 |
=1 4 |
508 |
|
509 |
##--------------------------------------------------------------------- |
510 |
## cc コマンド |
511 |
##--------------------------------------------------------------------- |
512 |
<abc |
513 |
<xyz |
514 |
<123 |
515 |
"2Gcchogehoge" 0x1b |
516 |
>abc |
517 |
>hogehoge |
518 |
>123 |
519 |
> |
520 |
=2 7 |
521 |
"u1G2ccfoo" 0x1b # 1, 2 行を置換 |
522 |
>foo |
523 |
>123 |
524 |
> |
525 |
|
526 |
##--------------------------------------------------------------------- |
527 |
## S コマンド (オートインデント非サポート) |
528 |
##--------------------------------------------------------------------- |
529 |
<abc |
530 |
<xyz |
531 |
<123 |
532 |
"2GShogehoge" 0x1b |
533 |
>abc |
534 |
>hogehoge |
535 |
>123 |
536 |
> |
537 |
=2 7 |
538 |
"u1G2Sfoo" 0x1b # 1, 2 行を置換 |
539 |
>foo |
540 |
>123 |
541 |
> |
542 |
##--------------------------------------------------------------------- |
543 |
## s コマンド |
544 |
##--------------------------------------------------------------------- |
545 |
<main |
546 |
"sXYZ" 0x1b |
547 |
=1 2 |
548 |
>XYZain |
549 |
> |
550 |
"$." # n に移動して再置換 |
551 |
>XYZaiXYZ |
552 |
> |
553 |
"03s54321" 0x1b # 3文字→5文字置換 |
554 |
>54321aiXYZ |
555 |
> |
556 |
"fX2." # X に移動して 2文字→5文字置換 |
557 |
>54321ai54321Z |
558 |
> |
559 |
##--------------------------------------------------------------------- |
560 |
## o コマンド |
561 |
##--------------------------------------------------------------------- |
562 |
<hoge |
563 |
"oabc" 0x1b |
564 |
>hoge |
565 |
>abc |
566 |
> |
567 |
=2 2 |
568 |
"." |
569 |
>hoge |
570 |
>abc |
571 |
>abc |
572 |
> |
573 |
"1G3ox" 0x1b // x<改行> を3行挿入 |
574 |
>hoge |
575 |
>x |
576 |
>x |
577 |
>x |
578 |
>abc |
579 |
>abc |
580 |
> |
581 |
##--------------------------------------------------------------------- |
582 |
## O コマンド |
583 |
##--------------------------------------------------------------------- |
584 |
<hoge |
585 |
"Oabc" 0x1b |
586 |
>abc |
587 |
>hoge |
588 |
> |
589 |
=1 2 |
590 |
"3OZZZ" 0x1b |
591 |
>ZZZ |
592 |
>ZZZ |
593 |
>ZZZ |
594 |
>abc |
595 |
>hoge |
596 |
> |
597 |
##--------------------------------------------------------------------- |
598 |
## x X コマンド |
599 |
##--------------------------------------------------------------------- |
600 |
<hogefuga |
601 |
"x" |
602 |
>ogefuga |
603 |
> |
604 |
"u" |
605 |
=1 0 ### undo 後のカーソル位置は削除した文字の先頭 ※対処困難な場合はこのままとする |
606 |
"03x" |
607 |
>efuga |
608 |
> |
609 |
"u0." |
610 |
>efuga |
611 |
> |
612 |
"u02." |
613 |
>gefuga |
614 |
> |
615 |
"u0ff9x" |
616 |
>hoge |
617 |
> |
618 |
"u0X" |
619 |
>hogefuga |
620 |
> |
621 |
"ffX" |
622 |
>hogfuga |
623 |
> |
624 |
"u0ff3X" |
625 |
>hfuga |
626 |
> |
627 |
##--------------------------------------------------------------------- |
628 |
## D コマンド |
629 |
##--------------------------------------------------------------------- |
630 |
<main() |
631 |
"fiD" |
632 |
=1 1 |
633 |
>ma |
634 |
> |
635 |
"u0fi2D" # 繰り返し回数は無視される |
636 |
=1 1 |
637 |
>ma |
638 |
> |
639 |
"u0fn." |
640 |
>mai |
641 |
> |
642 |
|
643 |
|
644 |
##--------------------------------------------------------------------- |
645 |
## dd, d<move> コマンド |
646 |
##--------------------------------------------------------------------- |
647 |
<1 |
648 |
<2 |
649 |
<3 |
650 |
<4 |
651 |
<5 |
652 |
"2Gdd" # 2行目を削除 |
653 |
>1 |
654 |
>3 |
655 |
>4 |
656 |
>5 |
657 |
> |
658 |
"u" |
659 |
>1 |
660 |
>2 |
661 |
>3 |
662 |
>4 |
663 |
>5 |
664 |
> |
665 |
=3 0 # カーソルは3行目に移動 |
666 |
"2." # 2行削除 |
667 |
>1 |
668 |
>2 |
669 |
>5 |
670 |
> |
671 |
"u" |
672 |
>1 |
673 |
>2 |
674 |
>3 |
675 |
>4 |
676 |
>5 |
677 |
> |
678 |
=5 0 # カーソルは5行目に移動 |
679 |
<abc = 1; |
680 |
"dw" # 次の単語先頭直前まで削除 |
681 |
>= 1; |
682 |
> |
683 |
"u0." # undo & 行頭移動 & repeat dw コマンド |
684 |
>= 1; |
685 |
> |
686 |
"u02." # undo & 行頭移動 & repeat dw コマンド 2-times |
687 |
>1; |
688 |
> |
689 |
"u0d2w" # undo & 行頭移動 & d2w |
690 |
>1; |
691 |
> |
692 |
"u0." # undo & 行頭移動 & repeat d2w コマンド |
693 |
>1; |
694 |
> |
695 |
<abc = 1; |
696 |
<xyz = 123; |
697 |
"f;dw" # 行末の単語(;)を削除 |
698 |
>abc = 1 |
699 |
>xyz = 123; |
700 |
> |
701 |
"u0f;d2w" # 行末から次の行の最初の単語を削除 |
702 |
>abc = 1= 123; |
703 |
> |
704 |
|
705 |
<abc = 1; |
706 |
"de" # abc のみを削除 |
707 |
> = 1; |
708 |
> |
709 |
|
710 |
<main() |
711 |
< |
712 |
<hoge |
713 |
"f(" =1 4 |
714 |
"d}" # 2行目までを行単位削除 |
715 |
>hoge |
716 |
> |
717 |
|
718 |
<main() |
719 |
"cfn123" 0x1b |
720 |
>123() |
721 |
> |
722 |
"u0l." |
723 |
>m123() |
724 |
> |
725 |
|
726 |
<main() |
727 |
"dfi" # i まで削除 |
728 |
>n() |
729 |
> |
730 |
"u0d;" # i まで削除 |
731 |
>n() |
732 |
> |
733 |
"u0dti" # i 直前まで削除 |
734 |
>in() |
735 |
> |
736 |
|
737 |
##--------------------------------------------------------------------- |
738 |
## r コマンド |
739 |
##--------------------------------------------------------------------- |
740 |
<main() |
741 |
"r3" |
742 |
>3ain() |
743 |
> |
744 |
"u03r0" |
745 |
>000n() |
746 |
> |
747 |
<hoge |
748 |
<fuga |
749 |
"3r=" |
750 |
>===e |
751 |
>fuga |
752 |
> |
753 |
"u0fg3r=" |
754 |
>ho=== |
755 |
>fuga |
756 |
> |
757 |
|
758 |
##--------------------------------------------------------------------- |
759 |
## R コマンド |
760 |
##--------------------------------------------------------------------- |
761 |
|
762 |
<main() |
763 |
"RXY" 0x1b =1 1 |
764 |
>XYin() |
765 |
> |
766 |
"u03R=" 0x1b =1 2 |
767 |
>===ain() |
768 |
> |
769 |
<hoge |
770 |
<fuga |
771 |
"R=======" 0x1b # 改行は上書きされない |
772 |
>======= |
773 |
>fuga |
774 |
> |
775 |
|
776 |
##--------------------------------------------------------------------- |
777 |
## dd d<move> x X 後の p P |
778 |
##--------------------------------------------------------------------- |
779 |
<main() |
780 |
"xp" # m, a を入れ替え |
781 |
>amin() |
782 |
> |
783 |
"2p" # m を2回ペースト |
784 |
>ammmin() |
785 |
> |
786 |
<main() |
787 |
<hoge |
788 |
"lddp" # 2文字目に移動して、1, 2 行目を入れ替え |
789 |
>hoge |
790 |
>main() |
791 |
> |
792 |
<11 |
793 |
<222 |
794 |
<3333 |
795 |
<44444 |
796 |
"jl2YP" # 2行目2文字目に移動してヤンク・ペースト |
797 |
=2 0 # カーソルは2行目最初 |
798 |
>11 |
799 |
>222 |
800 |
>3333 |
801 |
>222 |
802 |
>3333 |
803 |
>44444 |
804 |
> |
805 |
"ulp" # 元にもどして、2行目2文字目に移動してペースト |
806 |
>11 |
807 |
>222 |
808 |
>222 |
809 |
>3333 |
810 |
>3333 |
811 |
>44444 |
812 |
> |
813 |
=3 0 |
814 |
"2yyP" |
815 |
>11 |
816 |
>222 |
817 |
>222 |
818 |
>3333 |
819 |
>222 |
820 |
>3333 |
821 |
>3333 |
822 |
>44444 |
823 |
> |
824 |
# 空でないEOF行で行単位pした場合 |
825 |
<abc |
826 |
<xyzzz |
827 |
"3GiZZZ" 0x1b # 空でないEOF行作成 |
828 |
>abc |
829 |
>xyzzz |
830 |
>ZZZ |
831 |
"kdd" # 2行目削除 |
832 |
>abc |
833 |
>ZZZ |
834 |
=2 0 |
835 |
"p" # 行単位ペースト |
836 |
>abc |
837 |
>ZZZ |
838 |
>xyzzz |
839 |
> |
840 |
"2p" # 2行ペースト |
841 |
>abc |
842 |
>ZZZ |
843 |
>xyzzz |
844 |
>xyzzz |
845 |
>xyzzz |
846 |
> |
847 |
|
848 |
##--------------------------------------------------------------------- |
849 |
## yy y<move> Y 後の p P |
850 |
##--------------------------------------------------------------------- |
851 |
<main() |
852 |
"ywP" |
853 |
=1 0 |
854 |
>mainmain() |
855 |
> |
856 |
"uywp" |
857 |
>mmainain() |
858 |
> |
859 |
"ufiYp" |
860 |
=2 0 |
861 |
>main() |
862 |
>main() |
863 |
> |
864 |
<foo |
865 |
<bar |
866 |
<hoge |
867 |
"yyGp" |
868 |
>foo |
869 |
>bar |
870 |
>hoge |
871 |
>foo |
872 |
> |
873 |
<main() |
874 |
"yfiP" |
875 |
>maimain() |
876 |
> |
877 |
"y;p" |
878 |
>mmaiaimain() |
879 |
> |
880 |
|
881 |
##--------------------------------------------------------------------- |
882 |
## J コマンド |
883 |
##--------------------------------------------------------------------- |
884 |
<a |
885 |
<x |
886 |
"J" # join 時に空白が挿入される |
887 |
>a x |
888 |
> |
889 |
<a |
890 |
<x |
891 |
"J" # join 時、行末に空白類がある場合は空白は挿入されない |
892 |
>a x |
893 |
> |
894 |
<a |
895 |
< x |
896 |
"J" # join 時、次行先頭空白類列は空白ひとつに置換される |
897 |
>a x |
898 |
> |
899 |
<a |
900 |
<b |
901 |
<c |
902 |
<d |
903 |
"3J" # 3回join ではなく、3行join |
904 |
>a b c |
905 |
>d |
906 |
> |
907 |
"u" |
908 |
>a |
909 |
>b |
910 |
>c |
911 |
>d |
912 |
> |
913 |
"2G." |
914 |
>a |
915 |
>b c d |
916 |
> |
917 |
|
918 |
##--------------------------------------------------------------------- |
919 |
## >> << コマンド |
920 |
##--------------------------------------------------------------------- |
921 |
<hoge |
922 |
< fuga |
923 |
< foo |
924 |
<bar |
925 |
"2>>" |
926 |
> hoge |
927 |
> fuga |
928 |
> foo |
929 |
>bar |
930 |
> |
931 |
"u" |
932 |
>hoge |
933 |
> fuga |
934 |
> foo |
935 |
>bar |
936 |
> |
937 |
"2<<" |
938 |
>hoge |
939 |
>fuga |
940 |
> foo |
941 |
>bar |
942 |
> |
943 |
"u" |
944 |
>hoge |
945 |
> fuga |
946 |
> foo |
947 |
>bar |
948 |
> |
949 |
"3G." |
950 |
>hoge |
951 |
> fuga |
952 |
>foo |
953 |
>bar |
954 |
> |
955 |
|
956 |
##--------------------------------------------------------------------- |
957 |
## :<digits> Enter |
958 |
##--------------------------------------------------------------------- |
959 |
<main() { |
960 |
< hoge; |
961 |
<} |
962 |
=1 0 |
963 |
:2 |
964 |
=2 1 |
965 |
:3 |
966 |
=3 0 |
967 |
:4 |
968 |
=4 0 # EOF 行 |
969 |
:1 |
970 |
=1 0 |
971 |
:5 |
972 |
=1 0 # EOF 行を超えた場合は移動しない |
973 |
:1,2 |
974 |
=2 1 # 行番号を複数指定した場合は、最後の行番号が有効 |
975 |
:0 |
976 |
=1 0 # :0 は先頭行に移動 |
977 |
:1+2 |
978 |
=3 0 |
979 |
:.+2 |
980 |
=3 0 # 2行進む |
981 |
:4 |
982 |
:.-2 |
983 |
=2 1 # 2行戻る |
984 |
:1 |
985 |
:+2 |
986 |
=3 0 # 2行進む |
987 |
:4 |
988 |
:-2 |
989 |
=2 1 # 2行戻る |
990 |
:$ |
991 |
=3 0 |
992 |
##--------------------------------------------------------------------- |
993 |
## :<range>d |
994 |
##--------------------------------------------------------------------- |
995 |
<1 |
996 |
<2 |
997 |
<3 |
998 |
<4 |
999 |
<5 |
1000 |
:2d |
1001 |
>1 |
1002 |
>3 |
1003 |
>4 |
1004 |
>5 |
1005 |
> |
1006 |
"u" |
1007 |
>1 |
1008 |
>2 |
1009 |
>3 |
1010 |
>4 |
1011 |
>5 |
1012 |
> |
1013 |
:2,4d |
1014 |
>1 |
1015 |
>5 |
1016 |
> |
1017 |
"u" |
1018 |
:%d |
1019 |
> |
1020 |
"u" |
1021 |
##--------------------------------------------------------------------- |
1022 |
## :<range>s/before/after/[g] |
1023 |
##--------------------------------------------------------------------- |
1024 |
<1 |
1025 |
<22 |
1026 |
<3 |
1027 |
:%s/2/xyz |
1028 |
>1 |
1029 |
>xyz2 |
1030 |
>3 |
1031 |
> |
1032 |
"u" |
1033 |
:%s/2/xyz/ |
1034 |
>1 |
1035 |
>xyz2 |
1036 |
>3 |
1037 |
> |
1038 |
"u" |
1039 |
:%s/2/xyz/g |
1040 |
>1 |
1041 |
>xyzxyz |
1042 |
>3 |
1043 |
> |
1044 |
|