Solaris ユーザーズガイド (上級編)

vi の 2 種類のモード

vi には、入力モードとコマンドモードという 2 種類の操作モードがあります。入力モードは、ファイルにテキストを入力するために使います。コマンドモードは、 vi 特有の機能を実行するコマンドを入力するために使います。vi のデフォルトモードは、コマンドモードです。

vi ではユーザが現在どちらのモードにいるのか明示されないため、vi の初心者にとっては、コマンドモードと入力モードの区別がおそらく最大の混乱要因となります。ただし、早いうちから最低限の基本概念さえ覚えておけば、そのような混乱をしないですみます。

vi を使って最初にファイルを開くと、常にコマンドモードになります。ファイルにテキストを入力するには、vi の入力コマンドを 1 つ入力します。入力コマンドには、現在のカーソル位置にテキストを挿入する i (insert) 、現在のカーソル位置の後にテキストを追加する a (append) などがあります。これらの vi 入力コマンドについては、この章の後半で詳細に説明します。

vi のコマンドモードに戻る場合は、Esc キーを押します。現在どちらのモードにいるのか明らかでない場合は、Esc キーを押してコマンドモードにした上で作業を続けます。vi がすでにコマンドモードのときに Esc キーを押すと、警告音が鳴って画面がフラッシュしますが実害はありません。

入力モード

サンプルファイルの paint にテキストを入力するには、vi の「挿入 (insert)」コマンドである i を入力します。このコマンドにより、vi はコマンドモードから入力モードに切り替わります。

ここで数行の短いテキストを入力し、各行の終わりで Return キーを押してみてください。入力した文字はカーソルの左側に表示され、既存の文字は右側に押し出されます。入力途中ならば、Return キーを押す前に Back Space キーで後退して再入力することによって誤りを修正できます。vi におけるテキストの編集については、テキストの変更を参照してください。

paint にテキストを入力し終えたら、Esc キーを押してコマンドモードに戻ります。このとき、カーソルは入力した最後の文字に移動します。これで次の vi のコマンドを入力できる状態になります。

vi が予期しない動作をする場合は、「Caps Lock」モードになっていないか確認してください。このモードになっていると、入力した文字がすべて大文字になります。システムによっては、F1 キー (通常 Esc キーの隣り) が Caps Lock として機能するものがあります。そのため、Esc キーの代わりに F1 キーを押してしまうのはよくある誤りです。


注 –

余分なシステムメッセージを削除するためなどで、画面をクリア (再描画) するよう vi に指示しなければならない場合があります。画面をクリアするには、コマンドモードで Ctrl-L を押します。


コマンドモード

vi を使ってファイルを開くと、コマンドモードになります。このモードでは、広範囲にわたって機能を実行するさまざまなコマンドを入力できます。vi の大部分のコマンドは、1 文字か 2 文字と、任意に指定できる数値からなっています。通常、大文字のコマンドと小文字コマンドは関連した処理を行いますが、異なる機能を実行します。たとえば、小文字の a を押すとカーソルの右側にテキストを追加できますが、大文字の A を押すとその行の最後にテキストを追加できます。

vi のコマンドの大部分は、Return キーを押さなくても実行されます。ただし、コロン (:) で始まるコマンドは、最後に Return キーを押す必要があります。vi に関する説明では、コロンで始まるコマンドを 3 番目の独立したモード (最終行モード) として取り扱う場合もあります。これは、コマンドモードでコロンを入力すると、コロンとそのあとに入力した文字が状態表示行に表示されるためです。ただし、この章の説明では、vi の全コマンドはコマンドモードから起動されるものとします。

コロンで始まるコマンドは、ex のコマンドです。viex は、異なるインタフェースを持つテキスト編集プログラムです。vi が画面指向のインタフェースであるのに対し、ex は行指向のインタフェースです。ex のコマンドは vi 内部から利用できます。コロンを入力した場合は、実際には行指向の ex インタフェースに切り換えたことになります。この切り換えによって、vi を終了しなくても多数のファイルを操作するコマンドを実行できます。詳細については、この章で後述されている ex コマンドの使い方を参照してください。