viは UNIXの標準エディタです。
システム管理などの作業を行う場合には必須の存在でしょう。
viはそうしたプロフェッショナル向けの仕様であるため、
最初は多少とっつきにくいかもしれません。
しかし、いったん慣れるときわめて効率良く作業を進めることができます。
viを起動するにはコマンドラインから単に vi もしくは vi の後に編集したい
ファイル名を指定します。ファイル名は複数指定することも可能ですが、
通常は単独の場合が多いでしょう。
vi abc
vi の特徴は「編集モード」と「入力モード」という2つの状態を取るということです。
どちらのモードになっているかで、キーから入力された文字の意味の解釈が異なります。「編集モード」ではそれぞれの文字に割り振られた「コマンド」として解釈され、
「入力モード」の場合には、文字のデータそのものと解釈されます。
この点が通常のテキストエディタやワープロと大きく異なります。
一番まごつく点かもしれません。
しかし、この仕組みのおかげで、viではカーソル移動キーなどの
助けがいっさいいりません。
DELキーや BSキーすら利用しません。
その一方で、「行のコピー」、「文書内の検索」など
しばしば利用される機能をほんのわずかなキー入力で実行することが可能です。
viが起動された時点では「編集モード」です。したがって、
すぐには文字が入力できません。"a","i" などのコマンドをいったん呼びだして、
「入力モード」に移ります。
たとえば "abc" とデータを打ち込みたいとしたら、
"aabc" もしくは "iabc" の順にキーを押すことになります。
逆に「入力モード」から「編集モード」に移りたい時は、ESCキーを押します。
文書を保存して終了するためには、必ず「編集モード」に戻ります。
そこで ZZ と大文字の Zを2つ続けると保存終了となります。
| キー | 意味 |
|---|---|
| a | カーソルの後に入力開始 |
| i | カーソルの前に入力開始 |
| A | 行の末尾に入力開始 |
| I | 行の先頭に入力開始 |
| o | 次に新しい行を作り入力開始 |
| O | 前に新しい行を作り入力開始 |
編集モードの状態では、テキスト内のカーソルの移動を
キーの操作で行うことができます。この移動コマンドは実に豊富なのですが、
ここではとりあえず最初に覚えるべき基本的なもののみ示しておきます。
| キー | 意味 |
|---|---|
| h | 左に1文字移動 |
| l | 右に1文字移動 |
| j | 下に1行移動 |
| k | 上に1行移動 |
| スペース | 右に1文字移動 |
| Enter | 下に1行移動 |
| w | 次の単語の先頭に移動 |
| b | 前の単語の先頭に移動 |
| 0 | 行の先頭に移動 |
| $ | 行の末尾に移動 |
もう1つ理解しておくべき概念が「バッファ」です。
バッファはテキスト本文とは別に一時的にデータを格納しておく場所です。
vi のバッファは目には見えませんが非常に重要な活躍をします。
viは複数のバッファを持つことができますが、
最も頻繁に利用されるのはコピー&ペーストもしくはカット&ペーストに
用いられるバッファです。
viの削除(x もしくは d 関連のコマンド)でカットされた内容は、
自動的にこのバッファに記憶されます。
コピー(y 関連のコマンド)によってテキストから削除せずにバッファに
記憶させることもできます。
バッファの内容は p もしくは P コマンドによってテキスト内に挿入されます。
pはカーソルの後もしくは行単位の場合は次の行に内容を追加します。
Pはカーソルの前もしくは行単位の場合は前の行に内容を追加します。
| キー | 意味 |
|---|---|
| x | カーソルの位置の1文字削除(DELの操作) |
| X | カーソルの前の1文字削除(BSの操作) |
| dd | 行の削除 |
| yy | 行のコピー |
| d + 移動コマンド | 移動先まで削除 |
| y + 移動コマンド | 移動先までコピー |
| p | バッファの内容を挿入(カーソルの後) |
| P | バッファの内容を挿入(カーソルの前) |
| u | 変更内容を元に戻す |
| U | 行の内容を最初の状態に戻す |
d および y は移動コマンドと組み合わせて対象となる範囲を指定することも
可能です。
また、x,dd,yy の前に数字を付けると、削除の対象の文字数もしくは行数を
指定したことになります。
5x はカーソルの位置から5文字を一度に削除します。
6yy はカーソルのある行を含め6行の内容をバッファにコピーします。