Vi

vi（ヴィーアイ）は、Emacsと共にUNIX環境で人気があるテキストエディタ。ビル・ジョイによって開発された。名の由来は「」ないし「」とされる。後発のUnix系OSに搭載されているviは、上位互換のVimやnviであることが多い（viコマンドでvimやnviが起動する）。

創始 
Berkeley Software Distribution (BSD) の創始者であるビル・ジョイが、最初のBSDを公開するにあたり開発していたPascalコンパイラを快適に作成するために開発したのが始まりである。当初はそのPascalのソースコードに同封され、その奥底に埋もれていたため、単体のソフトウェアとしての提供は認知されていなかった。この段階ではexと呼ばれるラインエディタであり、まだ現在のようなスクリーンエディタではなかった。

後にカリフォルニア大学バークレイ校にLear Siegler ADM-3A端末装置が導入されたのを機に、ビル・ジョイ自身により更なる改良を加えられたものが、現在のviと呼ばれるエディタである。

特徴

他のテキストエディタと異なる点 
マウスを使わない（viの開発当時、マウスは発明されていたが普及していなかった）
カーソルキーを使わない（開発端末であるADM-3Aには、専用のカーソルキーが設けられていなかった）
命令を覚える必要がある（画面上に命令表示領域が無い）

このような特徴は一見欠点にも見えるが、慣れにより素早いカーソルの移動や編集操作ができ、作業効率が上がるようになる。また、マウスカーソルやカーソルキーの使用を強制していないため、それらが利用できないハードウェア上でも利用することが出来る。（Vimのようなviクローンの中にはGUIやIBM-PCの一般化により、使用できるものも存在する。）

設計思想 
viはラインエディタのexを祖先に持ち、多くの特徴を受け継いでいる。

ラインエディタでは、目的の行を抽出、編集、更新というサイクルで編集を行う。現在主流のスクリーンエディタと異なり、内容の閲覧/編集はそれぞれ独立した機能であり、インタラクト（対話的）に動作しない。しかしそれだけでは利用が困難なので、exでは「特定のパターンにマッチする行内で内容を置換」「外部コマンドによるフィルタ」などのプログラムインタプリタ的な支援機能が充実している（sedは同様の背景をルールマッチ型にしたフィルタ記述インタプリタである）。

viはexのスーパーセットであり、閲覧・抽出に相当する部分をフルスクリーン/インタラクトに拡張して独立の移動コマンド体系を与えたものである。従って分類上はスクリーンエディタに含まれるが、設計思想はビュワーを伴うラインエディタに近い。

そのような背景から、特にWYSIWYGに慣れたユーザーに対して戸惑いを与えるユニークさが多い。有名なのは、初期状態で、打鍵した文字がテキストとして入力されるのではなく、編集コマンドとして解釈される点である。この理由で「viはモードを持つエディタ」と呼ばれる場合が多い。

viが開発された1976年時点で、ビル・ジョイは300baud～1200baudのモデムを使っていたため、そのような環境において利用されることを想定して設計されている。

exコマンド 
viはexのスーパーセットなので、exの編集機能はすべてviでも使用できる。これをexコマンドと呼び、コマンドモードで : に続いて入力されるものが当たる。:の代わりにQとタイプしても ex モードに入り、ex コマンドが利用できる。

例えばファイルを保存する :w やエディタを終了する :q など、編集のメタレベルに関わるもの、特定の行番号や正規表現にマッチする行アドレスに対して編集を行うもの、上記のマクロ機能などが含まれる。

（厳密にはiやaなどのインサートモードへ移行するコマンドもexコマンドの略記と見なされる）

その他の特徴 
viはコンパクトで負荷が小さいため、作業中にテキストファイルの一部を書き換えたり、通信速度の遅いネットワークの先にあるマシンで編集したりといった作業に向いている。
また、コンパクトで負荷が小さいという利点から、最低限のUNIX環境でも含まれている事が多く、スマートフォン、無線LANルータ、液晶テレビなど、コアシステムとしてLinuxを採用しているハードウェアの多くにviもしくはvi互換のエディタが搭載されている。

vi互換エディタ 
PC-UNIXにおいては現在はオリジナルのviが使われることはあまり一般的ではなく、模倣して作られたvi互換エディタ（クローン）の利用が一般的である。一般的なディストリビューションではviのシンボリックリンクがviの本来のパスに置かれ、互換エディタにリンクしている。また、オープンソースプロジェクトによる開発が多いため、UNIXの1つであるmacOS、AndroidなどのLinuxはもとより、本来互換性のない独自環境であるMS-DOSやWindowsといった他のプラットフォーム上で実行可能な互換エディタも存在する。

 nvi: nex/nviは、4.4BSDにおいてex/viの代替としてカリフォルニア大学バークレー校がオリジナルに配布した。BSDライセンスで提供され本家viの動作とのバグも含めた互換性がある。
 Vim: viを改善した、高度にさまざまな設定が可能なエディタ。多くのLinuxディストリビューションやmacOSに標準搭載されており、その場合のviコマンドはVimのviモードへのシンボリックリンクになっている。
 elvis: Steve Kirkendallにより書かれた強力なex/viクローン。
 WinVi: Windows用の軽量なviエディタ。(同名の海外作者版もあるが、それとは別の国産エディタ)
 POSIX標準: viはその原型であるexと共にPOSIXで標準化されている。

関連項目 
ビル・ジョイ
エディタ戦争
テキストエディタ
Vim
nvi

脚注

参考文献 
Linda Lamb、Arnold Robbins『入門 vi 第6版』福崎俊博訳、オライリー・ジャパン、2002年5月、ISBN 4-87311-083-1
Arnold Robbins『viデスクトップリファレンス』日本ルーセント・テクノロジー株式会社訳、オライリー・ジャパン、1999年6月、ISBN 4-900900-94-X

外部リンク 
 
 Vi Lovers Home Page
 viを使い倒そう（テキスト版）テキストエディタ vi の使い方の簡単な解説書

オープンソースソフトウェア
テキストエディタ
UNIXのソフトウェア
1976年のソフトウェア
ビル・ジョイ