vi(ヴィーアイ)は、Emacsと共にUNIX環境で人気があるテキストエディタ。ビル・ジョイによって開発された。名の由来はVIsual editorの略。
BSDの創始者であるビル・ジョイが、最初のBSDを公開するにあたり開発していた、Pascalコンパイラを快適に作成するために開発されたのが始まりであり、当初はそのPascalのソースコードに同封され、その奥底に埋もれていたため、単体のソフトウェアとしての提供は認知されていなかった。この段階ではexと呼ばれるラインエディタであり、まだ現在のようなヴィジュアルエディタではなかった。
後にカリフォルニア大学バークレイ校にadm3a端末が導入されたのを機に、ビル・ジョイ自身により更なる改良を加えられたものが、現在のviと呼ばれるエディタである。
ほかにも有名なEMACSやらgeditなどいろいろなエディタがあるのですが、もしコンピュータ業界に就職したいという人がいるとしたら
だんぜんviです!!なぜならUNIX/LINUXに入っているもっとも確率が高いエディタはviです!!
もしEMACSやgeditなどに慣れてしまって仕事でUNIX/LINUXで作業するときにこれらのエディタが入ってないことは、ほとんどです。
お客さんのマシンだと気軽にインストールなどできないので、作業にこまってしまいます。
ですので、viを習得して損はないと思います。
趣味でやられている人はなんでもよいです。お好きなエディタを使いください。
ちなみにopenSUSEではvimというviを高機能にしたものがインストールされています。viでの使用方法は全般的に使えるので、紹介しておきます
Linux/Unixマシンで作業をする際、設定ファイルを変更する際にviを使用するのだが、ユニークな操作なため、
はじめて使用するひとにとっては困惑してしまう。そこでviの操作を記述します。
キーボートのiを押すとインサートモードで文字入力ができる。
そして、文字入力が終われば、Escキーでインサートモードを終了する。
移動は基本的にj(下),k(上),l(右),h(左)である。
保存する場合は:w
保存しないで終了:q
強制終了は:q!
である。
以下にviのコマンドモード早見表を記述しておきます。
| 0 | 行の先頭に移動 |
| a | 挿入モードにはいる(カーソルの後) |
| A | 挿入モードにはいる(行末に移動) |
| b | 前の単語に戻る |
| B | 前の単語に戻る(空白のみを区切りと解釈) |
| ^b | 前のページにスクロール |
| c | 次に続く移動コマンドの場所まで変更 |
| C | c$と同じ |
| d | 次に続く移動コマンドの場所まで削除 |
| D | d$と同じ |
| ^d | 画面を半分スクロール |
| e | 単語の最後の文字に移動 |
| E | 単語の最後の文字に移動(空白のみを区切りと解釈) |
| f | 行の中で指定された文字を末尾方向に探索 |
| F | 行の中で指定された文字を末尾方向に探索 |
| ^f | 行の中で指定された文字を先頭方向に探索 |
| G | 指定された行番号の行へジャンプ |
| ^g | カーソルのある行の行番号を表示 |
| h | 左に1文字移動 |
| H | 画面の一番上の行に移動 |
| i | 挿入モードにはいる(カーソルの前) |
| I | 挿入モードにはいる(行の先頭に移動) |
| j | 挿入モードにはいる(行の先頭に移動) |
| J | カーソルのある行と次の行を連結 |
| k | 上の行に移動 |
| l | 右に1文字移動 |
| L | 画面の一番下の行に移動 |
| m | 行にマークを付ける |
| M | 画面の中央の行に移動 |
| n | 前に行われた検索を繰り返す |
| N | 前に行われた検索を、反対方向に繰り返す |
| o | 挿入モードにはいる(カーソルの下に新しい行を作る) |
| O | 挿入モードにはいる(カーソルの上に新しい行を作る) |
| p | バッファの内容をカーソルの後(下の行)に挿入 |
| P | バッファの内容をカーソルの前(上の行)に挿入 |
| r | 1文字置き換え |
| R | カーソルの場所から上書き訂正 |
| ^r | 画面の表示の乱れを直す(端末によっては^l) |
| s | 1文字を別の文字列に置き換える |
| S | 1行を別のテキストに置き換える ccと同じ |
| t | 行の中で指定された文字を末尾方向に探索し、その前に移動 |
| T | 行の中で指定された文字を先頭方向に探索し、その後に移動 |
| ^t | タブの分だけ移動 |
| u | テキストの変更を取り消す |
| U | カーソルのある行の変更を取り消す |
| w | 次の単語の先頭に移動 |
| W | 次の単語の先頭に移動(空白のみを区切りと解釈) |
| ^w | カーソルのある場所の文字を削除 |
| x | カーソルのある場所の文字を削除 |
| X | カーソルのある場所の前の文字を削除 |
| y | 次に続く移動コマンドの場所までバッファに記憶 |
| Y | yyと同じ |
| ZZ | セーブ終了 |
| ^z | 編集を一時的に中止し、バックグラウンドジョブにする |
| ! | 編集中のファイルにUNIXコマンドを適用 |
| ” | この後にバッファの番号または名前を指定 |
| $ | 行の末尾に移動 |
| % | 対応する括弧に移動 |
| & | exコマンドを繰り返す |
| − | 前の行の先頭に移動 |
| + | 次の行の先頭に移動 |
| / | 文字列の検索(テキストの下に向かって) |
| ? | 文字列の検索(テキストの上に向かって |
| . | 直前のテキスト変更を繰り返す |
| >及び< | テキストをタブ分だけ右(左)シフト |
| _ | 行の最初の空白でない文字に移動(0と微妙に違います) |
| : | exモードになる |
| ddp | 行の交換 |
| xp | 文字の交換 |
| y$ | カーソルから行の最後までをバッファに記憶 |
| cw | 単語1個の修正 |
| n. | 特定の文字列を次々探索し、同じ修正を繰り返す |
| 1G | ファイルの先頭に移動 |
| dG | カーソルより後を全部消去する |
| :q! | 強制終了 |
| : r! | コマンド結果読み込む |
よく用いられる環境設定
se nu ……… 行番号を付ける
se ai ……… オート・インデント機能
se sm ……… 括弧の対応を確認(showmatch機能)
se ws ……… 検索をファイルの終わりで打ち切らず先頭に戻って繰り返す
(ラップ・スキャンを行う。初期状態として設定されている)
se report=? …… ?行以上の変更があった時にメッセージを出す。
se mesg …… talkなどのメッセージを受け付ける
se showmode …… 挿入モードであることを表示