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