3.4 viエディタ

プログラミングのみでなく、多くのシステム管理タスクにも、相変わらずテキストエディタが使用されています。Unixでは、viは使いやすい編集機能を提供し、マウスサポート機能を持つ多数のエディタに比べて人間工学の面から優れたエディタとなっています。

3.4.1 動作モード

[Note]キーの表示

以下では、viでキーを押すだけで入力できるいくつかのコマンドについて確認してください。これらは、キーボードと同様、大文字で表示されます。キーを大文字で入力する必要がある場合は、Shiftキーを含む、キーの組み合わせを示すことによって、このことが明示的に示されています。

基本的にviは、次の3つの動作モードを使用します。それは挿入モード、コマンドモード、および拡張モードです。キーの機能は動作モードに応じて異なります。起動時には、通常、viはコマンドモードに設定されます。まず、モード間で切り替える方法について説明します。

コマンドモードから挿入モードへ

さまざまな方法があり、追加の場合はa、挿入の場合はi、現在行の下に新規行を挿入する場合はoを使用します。

挿入モードからコマンドモードへ

挿入モードを終了するには、Escを押します。 viは、挿入モードになっていると、終了できません。Escを押す習慣を付けることが大切です。

コマンドモードから拡張モードへ

viの拡張モードを有効にするには、コロン(:)を入力します。拡張(ex)モードは、単純なものから複雑なものまで各種タスクに使用できる行単位のエディタです。

拡張モードからコマンドモードへ

拡張モードでコマンドを実行した後、エディタは自動的にコマンドモードに戻ります。拡張モードでコマンドを実行しないことにした場合は、<—でコロンを削除します。エディタはコマンドモードに戻ります。

挿入モードから拡張モードに直接切り替えることはできません。 まず、コマンドモードに切り替える必要があります。

他のエディタと同様に、viにも独自の終了手順があります。挿入モードではviを終了できません。最初に、Escを押して挿入モードを終了します。その後は、次の 2つの選択肢があります。

  1. 変更内容を保存せずに終了: 変更内容を保存せずにエディタを終了するには、コマンドモードで : Q !と入力します。感嘆符(!)を付けると、viでは変更内容が無視されます。

  2. 変更内容を保存して終了: 変更内容を保存してエディタを終了するには、複数の方法があります。コマンドモードでは、Shift-Z-Shift-Zを使用します。拡張モードで変更内容をすべて保存してエディタを終了するには、 : W Qを入力します。拡張モードでは、wは「書き込み」、qは「終了」を表します。

3.4.2 操作中のvi

viを標準エディタとして使用できます。挿入モードで、テキストの入力と削除に<—Delキーを使用します。カーソル移動には矢印キーを使用します。

ただし、これらのコントロールキーを使用するとしばしば問題が発生します。 これは、特殊なキーコードを使用する端末タイプが多数存在するからです。これは、コマンドモードに影響します。Escを押して挿入モードからコマンドモードに切り替えます。コマンドモードでは、HJK、およびLを使用してカーソルを移動します。各キーの機能は、以下のとおりです。

H

左に1文字分移動します。

J

下に1行分移動します。

K

上に1行分移動します。

L

右に1文字分移動します。

コマンドモードでは、コマンドを使用してさまざまな操作を行うことができます。コマンドを2度以上実行するには、単に反復回数を入力してから実際のコマンドを入力します。たとえば、5 L と入力すると、カーソルは右に5文字分移動します。

表 3.1. 「viエディタの簡単なコマンド」では、いくつかの重要なコマンドが説明されています。これはごく簡単なものです。詳細なリストは、3.4.3項 「関連資料」のドキュメント内で利用できます。

表 3.1 viエディタの簡単なコマンド

Esc

コマンドモードに変更します。

I

挿入モードに変更します(文字は現在のカーソル位置に表示されます)。

A

挿入モードに変更します(文字は現在のカーソル位置の後に挿入されます)。

Shift-A

挿入モードに変更します(文字は行末に追加されます)。

Shift-R

置換モードに変更します(古いテキストを上書きします)。

R

カーソルの下の文字を置き換えます。

O

挿入モードに変更します(現在の行の後に新しい行が挿入されます)。

Shift-O

挿入モードに変更します(現在の行の前に新しい行が挿入されます)。

X

現在の文字を削除します。

D D

現在の行を削除します。

D W

現在の語の終わりまで削除します。

C W

挿入モードに変更します(現在の語の残りの文字が次に入力するエントリに上書きされます)。

U

最後のコマンドを取り消します。

Ctrl-R

取り消された変更を再実行します。

Shift-J

次の行を現在の行と連結します。

.

最後のコマンドを繰り返します。

3.4.3 関連資料

viは多様なコマンドをサポートしています。マクロ、ショートカット、名前付きバッファ、および他の多数の便利な機能を使用できます。各種オプションの詳細については、このマニュアルでは説明しません。SUSE Linuxには、viの改良版であるvim (vi improved)が付属しています。このアプリケーションについては、さまざまな情報源があります。

[Important]VIMライセンス

vimは、「無償ソフトウェア」です。 つまり、作者からはソフトウェアの代金を請求されませんが、資金援助による非営利プロジェクトの支援が奨励されます。このプロジェクトは、ウガンダの貧しい子供たちに対する援助を求めています。詳細については、http://iccf-holland.org/index.htmlhttp://www.vim.org/iccf/、および http://www.iccf.nl/ でオンライン情報を参照してください。