-
Notifications
You must be signed in to change notification settings - Fork 32
/
vi_diff.jax
1434 lines (1164 loc) · 82.3 KB
/
vi_diff.jax
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
*vi_diff.txt* For Vim バージョン 9.1. Last change: 2024 Nov 10
VIMリファレンスマニュアル by Bram Moolenaar
Vim と Vi の違い *vi-differences*
このファイルはVimとVi/Exの違いを一覧表示し、ViになくてVimにあるものの概要を説
明します。
Vim は大体において POSIX 1003.2-1 に従っています。知られている唯一の足りないコ
マンドは ":open" コマンドです。細かな違いはたぶんたくさんあります(Vimが間違っ
ているか、Posixの指標がはずれているかのどちらか)。
1. シミュレートされているコマンド |simulated-command|
2. なくなっているオプション |missing-options|
3. 制限 |limits|
4. もっとも興味深い機能追加 |vim-additions|
5. Vim の他の特徴 |other-features|
6. サポートされているViの機能 |vi-features|
7. コマンドライン引数 |cmdline-arguments|
8. POSIX 準拠 |posix-compliance|
9. サポートされているオペレーティングシステム |os-support|
==============================================================================
1. シミュレートされているコマンド *simulated-command*
このコマンドは Vi にはありますが Vim ではシミュレートしているだけです。
*:o* *:op* *:open*
:[range]o[pen] |:visual|と同様。Exモードを終了します。
{Vi: オープンモードで編集を開始する}
:[range]o[pen] /pattern/ 上と同様で、さらに現在行の中で "pattern" に
マッチする桁へカーソルを移動します。
Vimにオープンモードはありません。まったく便利ではないからです。Viなら ":open"
でオープンモードを開始しますが、VimではExモードを抜けます。その結果、Viの場合
と同じコマンドが実行できるようになります。ただ、1行だけを再描画するのでなく、
画面全体を再描画する点が違います。
==============================================================================
2. なくなっているオプション *missing-options*
これらのオプションは Vi にはあって、Vim にはないものです。これらのオプションを
セットしてもエラーメッセージは出ませんが、設定した値は使われませんし表示もされ
ません。
autoprint (ap) 切替 (初期値 オン) *'autoprint'* *'ap'*
beautify (bf) 切替 (初期値 オフ) *'beautify'* *'bf'*
flash (fl) 切替 (初期値 オン) *'flash'* *'fl'*
graphic (gr) 切替 (初期値 オフ) *'graphic'* *'gr'*
hardtabs (ht) 数値 (初期値 8) *'hardtabs'* *'ht'*
ディスプレイ上で一つの <Tab> が移動するスペースの数
mesg 切替 (初期値 オン) *'mesg'*
novice 切替 (初期値 オフ) *'novice'*
open 切替 (初期値 オン) *'open'*
optimize (op) 切替 (初期値 オフ) *'optimize'* *'op'*
redraw 切替 (初期値 オフ) *'redraw'*
slowopen (slow) 切替 (初期値 オフ) *'slowopen'* *'slow'*
sourceany 切替 (初期値 オフ) *'sourceany'*
w300 数値 (初期値 23) *'w300'*
w1200 数値 (初期値 23) *'w1200'*
w9600 数値 (初期値 23) *'w9600'*
Viはtermcapエントリの変更を許可しませんでした。Viを終了し、termcapエントリを編
集して再試行する必要があります。Vimには |terminal-options| があります。
==============================================================================
3. 制限 *limits*
Vim で編集できるファイルの制限はかなり少ないです。 {Vi: <Nul>文字を扱えず、ま
た 128をこえる文字を扱えません。行の長さにも制限がありますし、他にも多くの制限
があります。}
行の最大の長さ 2147483647 文字。それより長い行は分割されます。
最大行数 2147483647 行
最大のファイルのサイズ long integer が32ビットである場合2147483647バイト(2
ギガバイト)です。64ビットの長さであればもっと多くな
ります。またスワップファイル|swap-file|の為のディス
クの空き容量にも制限されます。
*E75*
ファイルのパスの長さ Unix と Win32: 1024 文字、それ以外は 256 文字
(もしくはシステムがサポートしている長さ分だけ)
展開されたオプションの文字列の長さ
Unix と Win32: 1024 文字、それ以外は 256 文字
表示される最大の長さ Unix と Win32: 1024 文字、それ以外は 255 文字
マッピングでの lhs の最大の長さ
50 文字
異なるハイライトの種類の数: 30000以上
数値変数の範囲: -2147483648 から 2147483647 (64ビットシステムでは
もっと大きい場合があります)
タグファイルにおける一行の最大の長さ: 512 バイト
アンドゥとレジスタの中のテキストに関する情報はメモリに保持されます。ですので、
使用可能な(仮想)メモリの量を超えて(大きな)変更を行っている場合はアンドゥレベル
の数とレジスタに保持されうるテキストは制限されることになります。コマンドライン
履歴やquickfixモードでのエラーメッセージなどの他のものもまたメモリに保持されま
す。
メモリの使い方を制限する
--------------------------
'maxmem' ('mm') オプションは一つのバッファに使われるメモリの最大の量 (キロバイ
トで) を決めるのに使います。'maxmemtot' はすべてのバッファで使われるメモリの最
大の量(キロバイトで)を決めるのに使います。Amiga では 'maxmemtot' は使えるメモ
リの量に依存して設定されます。
これらは厳格な制限ではなく、いつテキストをスワップファイルに移動するかの目安で
す。もし Vim がファイルにスワップを行うのが嫌であれば 'maxmem' と 'maxmemtot'
の値をかなり大きい値に設定しておきます。そうするとスワップファイルはリカバリー
の時にのみ使われるようになります。もしどんなスワップファイルも欲しくなければ
'updatecount' を 0 に設定するか、Vim を起動するときに "-n" 引数をつけます。
==============================================================================
4. もっとも興味深い機能追加 *vim-additions*
Vi との互換性 |'compatible'|
Vim には Vi の99%の機能が含まれますが、Vi のうちのいくつかはバグか少な
くとも改良が必要だと考えられるものがあります。しかしそれでもなお Vim
は可能な限り「本当の」 Vi のように振る舞うモードで起動します。Vim にも
う少しよい動作をして欲しい場合は 'compatible' オプションを解除してみて
ください: >
:set nocompatible
< または Vim を "-N" 引数つきで起動してください: >
vim -N
< もし .vimrc ファイルがあれば 'nocompatible' つきでVimが起動します。
|startup| も見てください。'cpoptions' オプションはたくさんの特定のアイ
テムに関する Viと同一の動作をするかどうかのオン/オフを切り替えることが
できます。
様々なシステムのサポート
Vim は次のシステムで利用できます:
- すべての Unix システム (テストされたすべてのシステムで動作しますが
GUI と Perl インターフェイスはどこでも動作するわけではないかもしれま
せん)。
- Amiga (500, 1000, 1200, 2000, 3000, 4000, ...).
- MS-Windows
- VMS
- Macintosh
- IBM OS/390
Note: いくつかのシステムではリソース使用量を削減するために機能を無効に
する必要があります。いくつかの時代後れのシステムでは以前のバージョンの
Vimを使わねばなりません。
多段永続化アンドゥ |undo|
'u' は時をさかのぼり、'CTRL-R' は再び進めます。変更を覚えておく回数を
'undolevels' オプションでセットしてください(初期値 1000)。'undolevels'
を0にセットすると Vi 互換のアンドゥになります。-1 にセットするとアン
ドゥできないようになります。
あるバッファに対する変更をすべてアンドゥした場合は、バッファは何も変更
されていないと見なされます。つまり <!> なしで :q で終了させることがで
きます。
変更をアンドゥしてその後新しい変更をすると、Vimのアンドゥツリーにブラ
ンチが作られます。これにより、テキストを永遠に失うという危険性なしにテ
キストをどの状態にでも戻すことができます。|undo-tree|
'undofile' オプションがセットされた場合には、アンドゥ情報がファイルに
保存されます。これはつまり、Vimを一旦終了し再起動して同じファイルの編
集をすれば、再起動前に行っていた変更もアンドゥできる、ということです。
グラフィカルユーザーインターフェイス(GUI) |gui|
GUI (メニュー、マウス、スクロールバー、などなど)のサポートが含められま
した。独自のメニューを定義することもできます。CTRL/SHIFT/ALT とキーの
組み合わではなく特殊なキーとマウスの組み合わせというよりよい方法がサ
ポートされます。さまざまなプラットフォーム、X11 Motif、Win32 (Windows
XP か、より最新のもの), Amiga, Macintosh でサポートされています。
複数のウィンドウとバッファ |windows.txt|
Vim ではスクリーンをいくつかのウィンドウに分けてそれぞれの中で異なる
バッファを編集したり同じバッファを別の場所で編集したりできます。バッ
ファはウィンドウに表示されていなくともロードして(変更を加えて)おくこと
もできます。これは隠れたバッファと呼ばれます。この機能のために多くのコ
マンドやオプションが追加されています。
Vimはタブページを使うこともできます。各タブページは1個以上のウィンドウ
を含みます。タブラベルを表示する行を使ってこれらのタブを素早く切替える
ことができます。|tab-page|
端末ウィンドウ |:terminal|
Vimは端末エミュレータが動くウィンドウを作ることができます。これは、任
意のコマンド、シェル、またはデバッガを実行するために使用できます。
構文ハイライト |:syntax|
Vim ではキーワードやパターンやその他のものをハイライトすることができま
す。これは ":syntax" コマンドで定義し、ほとんどの言語やファイルのタイ
プに対してハイライトをつけることができます。C、C++、Java、Pascal、
Makefiles、シェルスクリプト、などなどの多くの一般的な言語のうちのほと
んどのためのハイライト定義ファイルはすでに含まれています。ハイライトに
使われる色は普通の端末で定義することができ、色端末と GUI では
|:highlight| コマンドで定義できます。色を変更するのに便利な方法は
|:colorscheme|コマンドを使うことです。
ハイライトされたテキストをHTMLにエクスポートすることができます
|convert-to-HTML|。ハイライトできる他の要素は、検索文字列のマッチ部分
|'hlsearch'|、対応する括弧 |matchparen|、カーソル行とカーソル桁
|'cursorline'| |'cursorcolumn'|です。
テキストプロパティ |textprop.txt|
Vimはプラグインによるテキストの強調表示をサポートしています。プロパティ
タイプは |prop_type_add()| で指定でき、プロパティは |prop_add()| で配
置できます。
スペルチェック |spell|
オプション 'spell' がセットされていると、スペリングの間違いがハイライ
トされます。現在のところ約50の言語がサポートされています。言語はオプ
ション 'spelllang' で選択できます。ソースコード中ではコメントと文字列
だけがスペルチェックされます。
折り畳み |folding|
複数行の範囲を一行の「折り畳まれた」行として表示することができます。
これによりファイルを一望することができ、テキストブロック間を素早く移動
することが可能になります。折り畳みの設定は手動、ファイルのシンタック
ス、インデント等々で設定することができます。
差分モード |diff|
ファイルの2つのバージョンの差分をハイライトして表示することができます。
テキストの一致する部分は折り畳みされます。コマンドを使って片方のバー
ジョンのテキストをもう一方へ移動することができます。
プラグイン |add-plugin|
プラグインファイルを正しいディレクトリにただ置くだけで機能追加ができま
す。これは他人が書いた Vim script を使い始める簡単な方法です。プラグイ
ンは全ての種類のファイルについて設定することもできますし、ある1つのファ
イルタイプについて設定することも可能です。
パッケージ機能はこれをさらに簡単にします。 |packages|
非同期通信とタイマー |channel| |job| |timer|
Vim はバックグラウンドで他のプロセスとメッセージを交換できます。これに
より、何か仕事をさせ結果を Vim に送り返すようなサーバーを実現可能にし
ます。 |channel|
Vim はジョブを開始させ、それと通信し、停止させられます。 |job|
タイマーは、何かしらの仕事をする関数を、一定時間経過後に1回だけ、もし
くは繰り返し実行することができます。 |timer|
一連のコマンドを繰り返す |q|
"q{c}" で名前付きレジスタ{c}にタイプする文字の記録を始めます。後に続く
"q" は記録を終了します。そしてレジスタにあるコマンドは "@{c}" コマンド
で実行することができます。これは複雑な動作を繰り返すときに非常に便利で
す。
柔軟な挿入モード |ins-special-special|
ファイルを動き回るのに矢印キーを挿入モードで使うことができます。このこ
とはアンドゥとリドゥを考えると挿入モードが二つに分かれることになりま
す。
CTRL-O は一つのノーマルモードのコマンドを実行するのに使うことができま
す。これはつまり <Esc> キーを打ってコマンドを打ってからそれから |a| を
打ったのとほとんど同じことです。
ビジュアルモード |Visual-mode|
ビジュアルモードは、初めにいくつかのテキストを選択してからそれに対して
コマンドを実行するのに使うことができます。これは初めにオペレータコマン
ドを与えてからそのオペレータを施すテキストの最後まで移動するコマンドを
実行するもう一つの(簡単な)方法です。
|v| と |V| はビジュアルモードを開始します。|v| は文字ごとに選択し |V|
は行ごとに選択します。カーソルを動かしてビジュアル部分を広げ、その部分
はスクリーン上でハイライトされます。"o" を打つことでビジュアルなテキス
ト部分の反対側の端が動かされることになります。ビジュアルなテキスト部分
には次のオペレータを施すことができます:
d 削除
c 変更
y ヤンク
> or < インデントを挿入/削除
! 外部プログラムを使ってフィルターを施す
= インデントを通してフィルターを施す
: ビジュアルな行に対して |:| コマンドを始める
gq 'textwidth' 桁位置にテキストを整形する
J 行を連結する
~ 大文字小文字を入れ換える
u 小文字にする
U 大文字にする
{Vi はビジュアルモードを持っていません、"visual" という名前はノーマル
モードでExモードと区別するために使われています}
ブロックオペレータ |visual-block|
長方形のテキストがビジュアルモードを使って選択することができます。
CTRL-V でビジュアルモードを開始します。選択されたブロックは "d" で削除
したり 'y' でヤンクしたり大文字小文字を "~"、"u"、"U" で変えることがで
きます。削除もしくはヤンクされたブロックは "p" か "P" コマンドでテキス
トに挿入することができます。
ヘルプシステム |:help|
ヘルプはウィンドウの中に表示されます。検索したりするテキストの中を移動
する普通のコマンドはそのまま使えます。タグも複数のヘルプファイルの間を
移動するのに使え、ハイパーテキストのリンクをクリックするような感覚で
す。|:help| コマンドは引数を取りますので検索したい情報に素早くジャンプ
できます。<F1> を押して素早くヘルプシステムにアクセスすることもできま
す。ヘルプファイルのインデックスファイルは 'helpfile' オプションで設定
することができます。
コマンドライン編集/履歴 |cmdline-editing|
カーソルキーを使うことでコマンドラインのどの場所からでも挿入を行ったり
削除を行ったりすることができます。右/左矢印キーは前/後に一つの文字移動
するのに使うことができ、Shift キーを押しながら右/左矢印キーを押すと前/
後に一つの単語移動することができます。CTRL-B/CTRL-E はコマンドラインの
初め/終わりに移動するのに使うことができます。
{Vi: 行の最後の文字だけを変更できます}
{Vi: <Esc> を押すとコマンドラインが実行されます。これはほとんどの人に
とって予想外のことです。それゆえ Vim では変更されました。しかし、<Esc>
がマッピングの一部であるときは、コマンドラインが実行されます。<Esc> を
打ったときにもViの振る舞いをしたいなら、":cmap ^V<Esc> ^V^M" を使って
ください。}
|cmdline-history|
コマンドラインは記録されます。上/下矢印キーを使うことで前のコマンドラ
インを呼び出すことができます。'history' オプションで覚えておく行数を設
定することができます。検索パターンのコマンド履歴はまた別に分かれていま
す。
コマンドライン補完 |cmdline-completion|
コマンドライン(スクリーンの一番下で)でなんらかの作業をしているときに
<Tab> キーを押すと補完を行うことができます。
what example ~
- コマンド :e<Tab>
- タグ :ta scr<Tab>
- オプション :set sc<Tab>
- オプションの値 :set hf=<Tab>
- ファイル名 :e ve<Tab>
- その他
複数マッチしたものがある場合は、CTRL-N (次)と CTRL-P (前)でマッチした
ものの間を移動することができます。<Tab> は CTRL-N のように振る舞います
が、マッチしたものの最後で押すと最初にマッチしたものに戻ります。
'wildchar' オプションでコマンドライン補完に利用する文字を設定できま
す。デフォルトは<Tab>です。複数の補完候補がある不完全な状態でCTRL-Dを
タイプすることで、全ての補完候補を表示することができます。CTRL-Aではす
べての候補を入力することができます。CTRL-Lでは候補内で、一致する最長部
分までを入力します。
挿入モードでの補完 |ins-completion|
挿入モードで CTRL-N と CTRL-P を使うことでどこかに現れる単語を補完する
ことができます。 |i_CTRL-N|
CTRL-X を使うことでもう一つのモードに入ることができます。どの補完を行
うことができるかというと:
|i_CTRL-X_CTRL-F| ファイル名
|i_CTRL-X_CTRL-K| 辞書 'dictionary' ファイルにある単語
|i_CTRL-X_CTRL-T| 類語辞典 'thesaurus' ファイルにある単語
|i_CTRL-X_CTRL-I| インクルードされるファイルにある単語
|i_CTRL-X_CTRL-L| すべての行
|i_CTRL-X_CTRL-]| タグファイルにある単語
|i_CTRL-X_CTRL-D| マクロ定義
|i_CTRL-X_CTRL-O| オムニ補完: ファイルタイプなどに特化した
賢い補完
長い行のサポート |'wrap'| |'linebreak'|
'wrap' オプションがオフであれば、長い行は折り返されずに行の一部分だけが
表示されます。カーソルが表示されていない部分に移動するとスクリーンも横
にスクロールします。横にスクロールする桁数の最小の値を 'sidescroll' オ
プションで設定することができます。|zh| と |zl| コマンドは横スクロールに
使うことができます。あるいは、'linebreak' オプションがセットされている
場合は長い行は単語の間で切られます。こうすることで段落を一つの行にして
編集することが容易になります(例: 後で編集中のテキストを DTP プログラム
に持っていく場合)。カーソルを上下するには |gk| と |gj| コマンドを使って
ください。
テキストの整形 |formatting|
'textwidth' オプションを設定することで行の長さを自動的に制限することが
できます。このオプションはあまり便利ではなかった Vi での 'wrapmargin'
オプションを補助するものです。|gq| オペレータはテキストの一部分を整形
するのに使うことができます(例えば、|gqap| は現在の段落を整形します)。
テキストの位置に関するコマンドは |:center|, |:left|, |:right| です。
拡張正規表現 |pattern|
様々なテキスト要素にマッチさせるための、多くの拡張正規表現の要素があり
ます。例えば "\n" は改行にマッチします。
"x\{2,4}" は、"x" が2個から4個続くテキストにマッチします。
"\s" は空白文字にマッチします。
ディレクトリ、リモート、アーカイブの閲覧 |netrw|
Vimはファイルシステムをブラウズすることができます。単にディレクトリを
編集します {訳注: :e {directory} とする}。そのリスト中を普通のコマンド
を使って移動し、<Enter>を押すとカーソル下のディレクトリやファイルに移
ります。
これはftp, http, sshなど越しのリモートファイルにも機能します。
zipとtarのアーカイブもブラウズすることができます。|tar| |zip|
編集-コンパイル-編集 をスピードアップする |quickfix|
|:make| コマンドを使うことでコンパイルしてから初めのエラーにジャンプす
ることができます。コンパイラのエラーメッセージが書かれたファイルを解析
できます。最初のエラーにジャンプします。
エラーファイルのそれぞれの行はファイルの名前、行番号、エラーメッセージ
という風に調べられます。'errorformat' オプションは多くのコンパイラから
の出力を扱うことができるように scanf のような形式の文字列のリストを指
定することができます。
|:cn| コマンドは次のエラーにジャンプするのに使うことができます。|:cl|
コマンドはすべてのエラーメッセージをリストします。他のコマンドも使うこ
とができます。'makeef' オプションはエラーメッセージが含まれるファイル
の名前を指定します。'makeprg' オプションは |:make| コマンドで実行する
プログラムの名前を指定します。'shellpipe' オプションはコンパイラからの
出力をエラーファイルに書き込むときに使われる文字列を指定します。
複数のファイルから検索する |:vimgrep|
複数のファイルからパターンを検索することができます。この機能はVimの高
度な正規表現パターンを使い、すべてのシステム上で機能し、圧縮されたファ
イルも検索できます。
C プログラムのインデントを改善 |'cindent'|
'cindent' オプションがオンの時はそれぞれのインデントは自動的に調整され
ます。C の文法はだいたい解釈されますし、さまざまなスタイルでのインデン
トは 'cinoptions' で設定することができます。インデントをするきっかけと
なるキーワードは 'cinkeys' で指定することができます。
コメントも自動的に整形することができ、'comments' オプションでどの文字
がコメントをスタートさせ終了させるのかを指定することができます。この機
能は C のコードでもっともよく動作しますがメール(行の最初の ">")や他の
タイプのテキストでもうまく動作します。|=| オペレータで行を再インデント
することもできます。
他にも多くの言語に対して自動インデントをするためのインデントプラグイン
が提供されています。|30.3|
インクルードされるファイルの中から単語を探す |include-search|
|[i| コマンドはカーソルの下の単語をインクルードされるファイルの中から
検索することができます。'include' オプションをセットすることでファイル
をインクルードするコマンドのパターンを記述することができます(デフォル
トでは C のプログラムで検索できるように設定してあります)。
|[I| コマンドはマッチしたすべてをリストし、|[_CTRL-I| コマンドはマッチ
した場所にジャンプするコマンドです。
|[d|, |[D|, |[_CTRL-D| も同様ですが、'define' オプションで指定されるパ
ターンにマッチする行にのみします
自動コマンド |autocommand|
ファイルを読み込んだり書き込んだり別のバッファにジャンプしたりなどする
時に、ファイル名によって自動的にコマンドを実行することができます。これ
は C のプログラムを書いたり、ドキュメントを書いたり、普通のテキストを
書いたりなどする時にオプションをセットしたりそれら特有のマッピングをし
たりするときに便利です。これを利用することで圧縮されたファイルを編集す
ることもできるようになります。
コマンドと表現 |expression|
強力なスクリプト言語を形成するようにいくつかコマンドが追加されました。
|:if| 条件によって実行します。例えば $TERM の値によってオプ
ションを変更したりできます。
|:while| コマンドを繰り返します。
|:for| リストをわたるループ。
|:echo| 式の結果を表示します
|:let| 値を内部変数やオプションなどに割り当てます。
変数の型は数値、文字列、リスト、辞書。
|:execute| 式からなるコマンドを実行します。
|:try| 例外を捕捉します。
などなど。|eval|を参照。
デバッグとプロファイリングがサポートされています。|debug-scripts|
|profile|
もしこれで十分でないなら、|Python|, |Ruby|, |Tcl|, |Lua|, |Perl|,
|MzScheme| のインターフェイスが提供されています。
Viminfo |viminfo-file|
コマンドライン履歴やマークやレジスタの内容を起動時に読み込まれるファイ
ルに保存しておくことができます。Vim を終了させた後、再び Vim を起動し
たときでも検索コマンドを繰り返したりコマンドラインを繰り返したりできま
す。|'0| を使って最後に編集していた場所にジャンプすることもまた可能で
す。'viminfo' オプションで .viminfo ファイルに保存されるアイテムを選択
することができます。初期値はオフです。
印刷 |printing|
コマンド|:hardcopy|はテキストをプリンタに送信します。構文強調も含まれ
ます。
マウスサポート |mouse-using|
マウスは GUI バージョンと Unix、sysmouse がある BSD、gpm がある Linux、
Win32 上の xterm でサポートされています。カーソルの場所を変えたりビジュ
アル領域を選択したりレジスタの内容を貼り付けたりするのに使うことができ
ます。
キーの名前の使い方 |<>| |key-notation|
特殊なキーはすべて <Up>、<End> などなどのような書き方ができるようにな
りました。この名前はマッピングでも使うことができますしそれらを編集する
のが容易になります。
バイナリファイルを編集する |edit-binary|
Vim はバイナリファイルを編集することができます。実行形式のファイルを
壊すことなくいくつかの文字を変更することができます。Vim は NUL 文字を
削除しません(内部では <NL> と表されています)。
|-b| バイナリファイルの編集を始める時のコマンドライン引数
|'binary'| |-b| によってセットされるオプションで、ファイルの最後の
行に <EOL> を付加するのをやめさせます
多言語のサポート |multi-lang|
ダブルバイトやマルチバイトエンコーディングのファイルを編集できます。
フォントを切り替えずに多言語を同時に編集可能なUTF-8をサポートしていま
す。 |UTF-8|
メッセージやメニューが多くの言語に翻訳されています。
行を越えるカーソル移動
オプション 'virtualedit' がセットされていると、テキストがない場所を含
め、画面全体どこでもカーソルを移動させることができます。これは表や図を
容易に編集できて便利です。
==============================================================================
5. その他の Vim の機能 *other-features*
その他の優れた機能をランダムに集めてみました。
Vim が "-s scriptfile" 付きで起動された場合、"scriptfile" から読み込まれる文字
は実際あなたがそれをタイプしたように扱われます。もしエディタが終了する前にスク
リプトファイルの終わりに到達した場合は、さらにコンソールから文字を読み込みま
す。
"-w" オプションはタイプした文字をすべてスクリプトファイルに記録するのに使うこ
とができます。このファイルは後で別のファイルでその編集を繰り返したり、スクリプ
トファイルに修正を加えてから繰り返しを実行したりするのに使うことができます。
"-o" オプションはそれに続く引数の数だけウィンドウを開きます。"-o4" は4つのウィ
ンドウを開きます。
Viはフルスクリーンで動作するためにいくつかのtermcapのエントリが必要でした。Vim
が必要とするのは "cm" エントリ(cursor motion)だけです。
コマンドモードで:
'showcmd' オプションがセットされていると、スクリーンの最後の行にコマンドの文字
列が表示されます。これらはコマンドが終了した後に削除されます。
'ruler' オプションがセットされているとスクリーンの最後の行に現在のカーソルの位
置が表示されます。
"U" は最後に変更した行から離れた後でも、また "u" を実行した後でも動作します。
8bit 目がセットされている文字は表示されます。その文字が 'isprint' オプションに
含まれていなければ、'~' と 0xa0 の間の文字は "~?"、"~@"、"~A"、などなどのよう
に表示されます。
"][" は C の関数の次の終わりに移動します(一桁目が '}' の行)。
"[]" は C の関数の前の終わりに移動します(一桁目が '}' の行)。
"]f"、"[f" と "gf" はカーソルの下のファイル名の編集を開始します。CTRL-W f は
カーソルの下のファイル名の編集をウィンドウを分割してそこで開始します。
"*" はカーソルの下の識別子を前方に検索し、"#" は後方に検索します。
"K" はカーソルの下の識別子を引数として 'keywordprg' オプションに定義されている
プログラムを呼び出します。
'%' は前に数を前置することでそのファイルのパーセント数の場所にジャンプします。
数を前置しない場合はくくられているテキストの中では対応する括弧に移動します。
CTRL-] コマンドでは、カーソルは識別子の真ん中にあります。
使ったタグは覚えておかれます。タグスタックと共に使用されるコマンドは CTRL-T と
":pop" と ":tag" です。":tags" はタグスタックの内容をリスト表示します。
Viはタグを検索するときに 'wrapscan' を使用します。タグにジャンプすると、Viは別
のファイルの2行目から検索を開始します。'wrapscan' が設定されていない場合、他の
ファイルの1行目のタグを見つけられません。
'tags' オプションはタグファイル名のリストを設定することができます。ですので複
数のタグファイルを使うことができます。ファイル名が "./" で始まる場合は、"./"
はそのファイルのパスに展開されます。こうすることで編集しているファイルがある
ディレクトリと同じディレクトリのタグファイルを使うことができるようになります
{Vi: 一部のバージョンでは常に二分探索を使用します}
{Vi には、タグファイル内のコマンドに対するセキュリティ保護機能はありません}
前に編集されたファイルは代替ファイルリストに覚えておかれます。CTRL-^ に数を前
置することでこのリストのインデックスの番号のファイルにジャンプできます。
":files" コマンドで開いたファイルの一覧を見ることができます。
"#<N>" はリスト内の<N>番目のファイルの名前で置換されます。
"#<" は現在のファイル名から拡張子を取り除いたもので置換されます。
検索パターンも強化されました。<NL> 文字を検索パターンや ":s" コマンドの文字列
の一部に使うことができます。Vi では単にコマンドの終了と見なされます。
検索ではマッチした最後にカーソルをおくこともできますし、オフセット文字を使って
検索することもできます。
"~"、":next"、":Next"、"n"、"N" にカウントを前置することができるようになりまし
た。
'autowrite' オプションがセットされている場合でも ":next!" コマンドはファイルを
書き込みません。Vi ではファイルは上書きされましたが、これはバグだと思われます。
というのもそういう動作は期待されませんし ":rewind!" コマンドでは書き込まれない
からです。
Vi では置換モードで <CR> を打ち込んだときに文字を削除するのは 'ai' がセットさ
れている場合のみでした(しかし <Esc> キーが押されるまでは表示されませんでし
た)。Vim は常に文字を削除します(またすぐに表示します)。
:wnext コマンドが追加されました。":write" コマンドを実行して ":next" コマンド
を実行するのと同じです。
":w!" コマンドは上書き禁止されているファイルでも常に書き込みます。Vi では
":!chmod+w %:S" してから ":set noro" としなければなりませんでした。
'tildeop' がセットされていると "~" はオペレータとして動作します(移動コマンドを
後に続けます)。
"J" (連結)コマンドを実行するときにピリオドの後でスペースを挿入するのを一つだけ
にするように 'joinspaces' オプションを再セットすることができます(Vi では2つの
スペースが挿入されます)。
"cw" はいくつかの文字で構成されるホワイトスペースを変更できます(Vi では "cw"
はスペースを一つだけ変更するのに "dw" はすべてのホワイトスペースを削除するとい
う紛らわしい仕様でした)。
{Vi: ブランクの後に他のブランクが続く "cw" は、最初のブランクだけを変更します。
"dw"はすべての空白を削除するので、これはおそらくバグです}
"o" と "O" は回数を前置することができます(Vi は表示の一部分を削除します)。
Ex コマンドの後につけるフラグはサポートされていません(予定もありません)。
UNIX システム以外では ":cd" コマンドはホームディレクトリに移動するのではなく
(ホームディレクトリはないです)、現在のディレクトリを表示します。":pwd" はすべ
てのシステムで現在のディレクトリを表示します。
":cd" コマンドの後でもファイル名(引数リストや開いたファイル)は元のファイルを指
します。Viではファイルに変更があると ":cd" できません。そうでなければファイル
名の解釈が変わってしまうからです。
":source!" コマンドはファイルから Vi コマンドを読み込みます。
":mkexrc" コマンドは現在の変更されているオプションとマッピングを ".exrc" ファ
イルに書き出すコマンドです。":mkvimrc" は ".vimrc" ファイルに書き出します。
マッピングで「最後が再帰的であるかどうか」のチェックはされません。つまり次のよ
うなマッピングもできます。
":map! foo ^]foo".
マッピングが数字で始まる場合は、Vi ではそのカウントが失われてしまっていました
(例: ":map g 4G" というマッピングを使っていると "7g" は4行目に移動してしまいま
した)。これは Vi のバグだと考えられます。Vim では多くの人が期待する動作である
ようにカウントを連結します(この例の場合は "74G" になります。
:put! コマンドは現在の行の上にレジスタの内容を挿入します。
Vi での "p" と "P" コマンドは挿入されるテキストが一行より短い場合は "." で繰り
返すことができませんでした。Vim では常に繰り返すことができます。
":noremap" コマンドは再マップされないマップを作るのに使うことができます。これ
は2つのキーの意味を交換するのに使うと便利です。":cmap", ":cunmap", ":cnoremap"
はコマンドライン編集でのみ動作するマッピングです。":imap", ":iunmap",
":inoremap" は挿入モードのみで動作するマッピングを定義できます。同様なコマンド
は短縮入力にもあります: ":noreabbrev", ":iabbrev", ":cabbrev", ":iunabbrev",
":cunabbrev", ":inoreabbrev", ":cnoreabbrev"
Vi では ":map foo bar" は前の ":map bug foo" というマッピングを削除していまし
た。これはバグと思われますので Vim ではその仕様は含まれません。":unmap! foo"
は "map! bug foo" というマッピングを削除します。なぜならそうでなければマッピン
グを外すのが非常に困難になるからです(これは Vi と同じ動作です)。
':' レジスタは最後のコマンドラインを含んでいます。
'%' レジスタは現在のファイル名を含んでいます。
'.' レジスタは最後に挿入されたテキストを含んでいます。
":dis" コマンドはヤンクレジスタの内容を表示します。
CTRL-O/CTRL-I は古い/新しい場所に移動するのに使うことができます。これらの移動
する場所は '' コマンドで移動する場所と同じですが他のファイルの中でもありえます。
":jumps" コマンドは古い場所をリストします。
'shiftround' オプションがセットされていると ">" と "<" コマンドでは
'shiftwidth' の倍数になるようにインデントは調整されます。
'scrolljump' オプションはスクリーンからカーソルが出たときにスクロールする最小
の行数を設定することができます。もしスクロールが遅い場合はこれをセットしてくだ
さい。
'scrolloff' オプションでカーソルの上や下に保持しておく最小の行数を設定できます。
これを設定しておくとカーソルの前後を見渡せるようになります。かなり大きい数字に
セットしておけばカーソル行は常にウィンドウの中央に来ることになります。
大文字のマークはファイルを越えてジャンプするのに使うことができます。":marks"
コマンドは現在セットされているすべてのマークをリストします。"']" と "`]" は前
に操作を行った場所の最後か、テキストを挿入したかプットした場所の最後に移動しま
す。"'[" と "`[" は初めに移動します。{Vi: 大文字のマークはない}
'shelltype' オプションは Amiga 上で使われるシェルのタイプを反映させるのに使う
ことができます。
'highlight' オプションはいくつかのコマンドで使われるハイライトモードを設定する
ことができます。
CTRL-A (加算) と CTRL-X (減算) コマンドが新たに追加されました。カウントを前置
することもでき(初期値 1)、カーソルの下もしくは後の数字をその値の分加算/減算す
るのに使うことができます。数は10進数、8進数(0で始まります)、16進数(0xで始まり
ます)でもよいです。マクロを使うときに非常に便利です。
:set コマンドでは "inv" を前置することで切替オプションは逆の意味にすることがで
きます。
Vi と Vim の両方で ":substitute" コマンドで CTRL-M を使うことで改行を挿入する
ことができます。Vi ではこのためにテキストに実際の CTRL-M を挿入することができ
なかったのですが、Vim では CTRL-V を前に挿入してから実際の CTRL-M をおくことが
できます。
挿入モードで:
'revins' オプションがセットされていると挿入は逆方向に向かってなされます。これ
はヘブライ語を入力するためです。普通の文字を挿入するときはカーソルは逆方向にな
りませんしテキストは右方向に動きます。バックスペース、CTRL-W、CTRL-U もまた逆
方向に動作します。置換モードではなんら影響しません。コンパイル時にのみ有効にす
ることができます。
オートインデントを削除するのにバックスペースキーをちょうど CTRL-D のように使う
ことができます。
'backspace' (bs) オプションが "eol" を含んでいると改行をこえてバックスペースし
たり CTRL-U したり CTRL-W することができます。'backspace' が "start" を含んで
いると挿入の初めをこえてバックスペースすることができます。
'paste' オプションがセットされているといくつかのオプションが解除され挿入モード
でのマッピングと短縮入力が使用不可になります。こうすることでウィンドウシステム
でテキストを貼り付けるときに不測の結果が生じるのを避けることができます。
'paste' オプションが解除されればオプションの前の値が復元されます。
CTRL-T/CTRL-D はカーソルがどこの桁位置にあっても常に現在の行のインデントを挿
入/削除します。
CTRL-@ (前に挿入したテキストを挿入する)は常に動作します(Vi: 初めの文字としてを
打ち込んだときにのみ)。
CTRL-A は CTRL-@ のように動作しますが挿入モードから抜けません。
CTRL-R {register} はレジスタの内容を挿入するのに使うことができます。
'smartindent' オプションがセットされていると、C プログラムはもっとうまく自動イ
ンデントされます。'cindent' オプションをセットしているとさらにうまくインデント
されます。
CTRL-Y と CTRL-E は現在のカーソルの上/下の文字をコピーするのに使うことができま
す。
CTRL-V を打った後に3桁の8進数を打つことができ、このバイトの値がテキストに一文
字として挿入されます。キーボードからは打ち込めない内部の文字を使うときに便利で
す。
'expandtab' (et) がセットされていると <Tab> は適切な数のスペースに展開されま
す。
ウィンドウは常にバッファの内容を反映します(Vi ではテキストを変更したりそのほ
かいくつかの場合では行われませんでした)。
Vim が DIGRAPHS を定義してコンパイルされていればダイグラフがサポートされます。
普通のダイグラフのセットが含まれるようになり、":digraph" コマンドで見ることが
できます。":digraph {char1}{char2} {number}" でさらに追加することもできます。
"CTRL-K {char1} {char2}" とするか "{char1} BS {char2}" ('digraph' オプションが
セットされている場合のみ) とすることでダイグラフを入力できます。
挿入をカウントを前置して行う場合、例 "10atest <Esc>"、Vi は初めの挿入に対して
のみ wrapmargin を扱うことができましたが、Vim ではすべてに対して扱います。
"i" か "a" コマンドでのカウント前置はすべてのテキストに対して利用できます。Vi
では一つの行に対してのみカウントを前置できました。"3iabc<NL>def<Esc>" は
"abcabcabc<NL>def" が Vi の動作で、"abc<NL>defabc<NL>defabc<NL>def" が Vim で
の動作です。
コマンドラインモードで:
<Esc> はコマンドラインを実行せずに抜けます。Vi ではコマンドラインを実行します
が、これはほとんどの人が予測する動作とは違いました(<Esc> を打つことで常にコマ
ンドモードに戻るべきでしょう)。いくつかの曖昧なマクロでの問題を避けるため、マ
クロでの <Esc> はコマンドを実行します。もし <Esc> で Vi のようにコマンドを実行
したい場合は次のように修正できます。
":cmap ^V<Esc> ^V<CR>"
一般:
'ttimeout' オプションは 'timeout' オプションに似ていますが、カーソルかファンク
ションキーに対してのみ働きます。'timeoutlen' オプションは待つ時間をミリ秒単位
で指定することができます。'esckeys' オプションがセットされていない場合、<Esc>
キーで始まるカーソルとファンクションキーは挿入モードでは解釈されません。
端末文字列がそれぞれオプションとしてあります。termcap がサポートされていなかっ
たり独自の文字列に変更したい場合に利用することができます。
'fileformat' オプションは <EOL> を選択して設定するのに使います: "dos"
<CR><NL>, "unix" <NL>, "mac" <CR>。
'fileformats' オプションが空でない場合、Vim は <EOL> のタイプを自動的に判断し
ようとします。'fileformat' オプションはそれに従ってセットされます。
ジョブコントロールを持たないシステム(古い Unix システムと Unix 以外のシステム)
ではCTRL-Z、":stop"、":suspend" コマンドは新しいシェルを起動します。
出力のための対話的なウィンドウなしで Vim が Amiga 上で起動された場合、ウィンド
ウが開かれます(そうして :sh コマンドは動作します)。|-d| 引数で編集する装置を指定
することができます(例: "-d con:20/20/600/150")。
'columns' と 'lines' オプションはディスプレイの幅と高さを指定するのに使うこと
ができます。
ファイルの最初と最後の数行はオプションをセットするために読み込まれます。
'modelines' オプションがどれだけの数の行を読み込もうとするかを決めることができ
ます(初期値は5です)。モードラインでどんな Ex コマンドも実行できる(重大なセキュ
リティ問題です)バージョンの Vi がありますがそれとは違うということに注意してく
ださい。 |trojan-horse|
'insertmode' オプションがセットされていると(例えば .exrc で) Vim は挿入モード
で起動します。<Esc> キーを押すと元に戻ります。
アンドゥの情報はメモリに保持されます。使用可能なメモリの量でアンドゥの回数とア
ンドゥ可能なサイズが制限されます。このことは Amiga ではほとんど問題にならない
ですし、Unix と Win32 では大体において決して問題になることはないです。
'backup' か 'writebackup' オプションがセットされていると: ファイルを上書きする
前にバックアップファイル(.bak)が作られます。"backup" オプションがセットされて
いるとバックアップファイルは残されたままになります。
Vim は変更されたファイルの一部分やメモリに入りきらないものを保持するためにファ
イルの最後が ".swp" であるファイルを作成します。このファイルはクラッシュした編
集セッションを "vim -r file" として復元するのに使われます。'updatecount' オプ
ションを 0 にするか Vim を "-n" オプションをつけて起動するとスワップファイルを
使うのをやめさせることができます。.swp ファイルをどこか別の場所に作成させたい
場合は 'directory' オプションを設定してください。
Vim は8.3形式のファイルシステムでも正しく動作することができます。また Amiga 上
での汚い DOS もしくは 雑種の DOS ファイルシステムでも使うことができますし、8.3
形式のファイルシステムを搭載したどんな Unix でも動作します。|'shortname'| もご
覧下さい。
エラーメッセージは少なくとも1秒は表示されます(Vi ではエラーメッセージは上書き
されます)
|hit-enter| プロンプトが出た場合でもどんなキーでも打つことができます。<CR>、
<NL>、<Space> 以外の文字はコマンド(の最初)として解釈されます。{Vi: ":" コマン
ドだけが解釈されます}
番号付きレジスタと名前なしレジスタの内容はファイルが変更されたときに覚えておか
れます。
"No lines in buffer" メッセージはマッピングが拒否された理由で表示される、エラー
メッセージではなく普通のメッセージです。
Amiga の AUX: デバイスをサポートしています。
==============================================================================
6. サポートされているViの機能 *vi-features*
VimはほとんどすべてのViコマンドを大半は同じやり方でサポートしています。それ
は、'compatible' オプションが設定されていて、'cpoptions' にすべてのフラグが含
まれている場合です。 'compatible' をリセットし、'cpoptions' からフラグを削除す
ることによる影響は、特定のコマンドのヘルプで確認できます。
ヘルプファイルは、VimにはあるがViにはない機能を {not in Vi} でマークするために
使用していました。しかし、これらの備考はヘルプファイルを煩雑にしていたので、私
たちは今それを反対の方法でやっています: 以下はViが既にサポートしているものの一
覧です。これ以外のものはVimによって追加されました。
以下のExコマンドはViでサポートされています: ~
`:abbreviate` 短縮入力を登録する
`:append` テキストを追加する
`:args` 引数リストを表示
`:cd` ディレクトリの移動
`:change` 変更リストを表示する
`:chdir` ディレクトリの移動
`:copy` 行のコピー
`:delete` 行を削除
`:edit` ファイルの編集
`:exit` `:xit` と同じ
`:file` カレントファイルの名前を設定または表示
`:global` パターンにマッチした行でコマンドを実行する
`:insert` テキストを挿入
`:join` 行の結合。Vi: join! はない
`:k` マークを設定
`:list` 行を表示
`:map` マップの設定または表示
`:mark` マークを設定
`:move` 行を移動する
`:Next` 引数リストの1つ前のファイルを編集 {Vi: count はない}
`:next` 引数リストの次のファイルを開く {Vi: count はない}
`:number` 行番号を表示
`:open` openモードを開始(Vim では未実装)
`:pop` タグスタックの1つ古いエントリへジャンプ(一部のバージョンでのみ)
`:preserve` すべてのテキストをスワップファイルに書き出す {Vi: 終了するかも
しれない}
`:previous` `:Next`と同じ {Vi: 一部のバージョンでのみ}
`:print` 行単位で印刷する
`:put` テキストにレジスタの内容を挿入
`:quit` Vi を終了
`:read` テキストにファイルを挿入
`:recover` スワップファイルからファイルを復元 {Vi: 別の方法で回復し、回復
するものがあればメールを送信する}
`:rewind` 引数リストの先頭のファイルを開く。++opt はない
`:set` オプションを設定する。でも、`:set inv{option}`, `:set option&`,
`:set all&`, `:set option+=value`, `:set option^=value`
`:set option-=value` `:set option<` はない
`:shell` シェルを実行する
`:source` Vi or Ex コマンドをファイルから読み込む
`:stop` エディタをサスペンドするかシェルにエスケープする
`:substitute` テキストの検索と置換。Vi: '&', 'i', 's', 'r' または 'I' フラグ,
確認プロンプトは 'y' と 'n' のみサポート, ハイライトなし
`:suspend` ":stop" と同じ
`:t` ":copy" と同じ
`:tag` タグへジャンプする
`:unabbreviate` 短縮入力を削除
`:undo` 最後の変更を取り消す {Vi: 1レベルのみ}
`:unmap` マップを削除
`:vglobal` パターンにマッチしない行でコマンドを実行する
`:version` バージョン番号その他の情報を表示
`:visual` ":edit" と同じ、ただし "Ex" モードから抜ける
`:wq` ファイルに保存して Vi を終了する
`:write` ファイルに保存
`:xit` バッファが変更されていたら保存し、Vi を終了する
`:yank` 行をレジスタへヤンク
`:z` いくつかの行を表示 {Vi のすべてのバージョンにはない}
`:!` 行をフィルタにかける、または、外部コマンドを実行する
`:"` コメント
`:#` ":number" と同じ
`:*` レジスタの内容を実行する
`:&` 最後に実行した ":substitute" を繰り返す
`:<` 'shiftwidth' 1つ分だけ行を左へシフト
`:=` カーソルのある行の行番号を表示
`:>` 'shiftwidth' 1つ分だけ行を右へシフト
`:@` レジスタの内容を実行。しかし、`:@` はない。`:@@` は一部のバー
ジョンでのみ
これらのコマンドに共通するのは、Viが `:edit` やファイルを開く他のコマンドの
++opt 引数をサポートしていないことです。
以下のノーマルモードコマンドはViでサポートされています: ~
note: 説明文中のWORD、N、Nmoveなどの意味については、|normal-index| の先頭を参
照してください。
|CTRL-B| N 画面後方にスクロールする
|CTRL-C| 現在の(検索)コマンドを中断する
|CTRL-D| N 行(デフォルト: 画面の半分の行数)下にスクロールする。Vimは
'scroll' 画面行をスクロールし、Viはファイル行をスクロールする。
行が折り返されると違いが出る。
|CTRL-E| N 行上にスクロールする (N 行余分)
|CTRL-F| N 画面前方にスクロールする
|CTRL-G| カレントファイル名と位置を表示する
|<BS>| "h" と同じ
|CTRL-H| "h" と同じ
|<NL>| "j" と同じ
|CTRL-J| "j" と同じ
|CTRL-L| 画面を再描画する
|<CR>| カーソルを N 行下の最初の文字へ移動する
|CTRL-M| <CR> と同じ
|CTRL-N| "j" と同じ
|CTRL-P| "k" と同じ
|CTRL-R| 一部のViバージョン: CTRL-L と同じ
|CTRL-T| タグリストの N 個古いタグにジャンプする
|CTRL-U| N 行上へスクロールする (デフォルト: 画面の半分の行数) {Vi は
ファイル行を使っていたが、Vimは 'scroll' 画面の行をスクロール
する。行が折り返されると違いが出る}
|CTRL-Y| N 行下へスクロールする
|CTRL-Z| プログラムを中断する(または新しいシェルを起動する)
|CTRL-]| カーソル下の識別子で :ta する {Vi: カーソルの後の識別子}
|CTRL-^| 代替ファイルを編集する {Vi: count はない}
|<Space>| "l" と同じ
|!| {filter} コマンドで Nmove テキストをフィルタ処理する
|!!| {filter} コマンドで N 行をフィルタ処理する
" 次の削除、ヤンク、貼り付けにレジスタ {a-zA-Z0-9.%#:-"} を使う
(大文字は追記する) ({.%#:} は貼り付けでのみ動作する)
|$| カーソルを N 番目の次の行の行末へ移動する
|%| 現在の行の次の (波/角) 括弧を検索し、そのマッチに移動するか、
マッチするコメント括弧に移動するか、またはマッチするプリプロ
セッサディレクティブに移動する (Vi: countは未サポート)
|&| 最後の :s を繰り返す
|'| マークにジャンプする (Vi: 小文字のマークのみ)
|(| カーソルを N 文後方に移動する
|)| カーソルを N 文前方に移動する
|+| <CR> と同じ
|,| 最後の f、t、F または T を反対方向に N 回繰り返す
|-| カーソルを N 行上の最初の文字へ移動する
|.| 置き換えられた最後の変更を N 回繰り返す
|/| {pattern} の N 番目の出現箇所を前方に検索する
|0| カーソルを行の最初の文字へ移動する
|:| Exコマンドの入力を開始する
|;| 最後の f、t、F または T を N 回繰り返す
|<| Nmove 行を 'shiftwidth' 1つ分左にシフトする
|<<| N 行を 'shiftwidth' 1つ分左にシフトする
|=| "indent" で Nmove 行をフィルタリングする
|==| "indent" で N 行をフィルタリングする
|>| Nmove 行を 'shiftwidth' 1つ分右にシフトする
|>>| N 行を 'shiftwidth' 1つ分右にシフトする
|?| {pattern} の N 番目の出現箇所を後方に検索する
|@| レジスタ {a-z} の内容を N 回実行する
{Vi: 名前付きレジスタのみ}
|@@| 前の @{a-z} を N 回繰り返す
|A| 行末の後にテキストを N 回追加する
|B| カーソルを N WORD 後方へ移動する
|C| カーソル位置から行末まで変更する
|D| カーソルの下の文字を行の終わりまで、さらに N-1 行まで削除する
[レジスタxへ]。"d$" と同義
|E| カーソルを前方の N WORD の終わりに移動する
|F| カーソルを左に N 番目に現れる {char} に移動する
|G| カーソルを N 行目に移動する。デフォルトは最終行
|H| カーソルを画面上から N 行目に移動する
|I| 行の最初の文字の前にテキストを N 回挿入する
|J| N 行を連結する。デフォルトは 2
|L| カーソルを画面下から N 行目に移動する
|M| カーソルを画面の中央の行に移動する
|N| 最後の '/' か '?' を反対方向に N 回繰り返す
|O| カーソルの上に改行してテキストを挿入し、N回繰り返す
{Vi: 空白の [count] 画面行}
|P| カーソル前にテキストを N 回貼り付ける [レジスタ x から]
{Vi: count はない}
|Q| "Ex" モードへ切り替える
|R| 置換モードに入る: 既存の文字を上書きする。入力したテキストを
N-1 回繰り返す
|S| N 行を [レジスタ x へ入れ] 削除し、挿入を開始する。"cc" と同義
|T| カーソルを左に N 番目に現れる {char} の後ろまで移動する
|U| 1行のすべての最新の変更を元に戻す
{Vi: 最後に変更された行から移動していない間}
|W| カーソルを N WORD 前方に移動する