vi (ヴィーアイ) とは
viは、
Emacsと並び
UNIX環境で非常に人気のある
テキストエディタです。
ビル・ジョイによって開発され、その名前は「visual editor」または「visual interface」に由来するとされています。現在、多くの
Unix系OSに搭載されているviは、実際には上位互換のVimやnviであることが一般的です。これは、viコマンドを実行すると、内部的にVimやnviが起動するよう設定されているためです。
誕生の背景
viは、
Berkeley Software Distribution (BSD) の創始者である
ビル・ジョイが、最初のBSDをリリースする際に使用していた
Pascalコンパイラの開発を効率化するために作成されました。当初は
Pascalの
ソースコードに付属しており、単体のソフトウェアとしてはあまり知られていませんでした。この初期段階では、viは行単位で編集を行うラインエディタ「ex」として機能しており、現在のようなスクリーンエディタではありませんでした。
その後、
カリフォルニア大学バークレー校にLear Siegler ADM-3A端末が導入されたことを機に、
ビル・ジョイ自身が大幅な改良を加え、現在のviが誕生しました。
vi の特徴
viは他の
テキストエディタとは異なるいくつかの特徴を持っています。
- - マウスを使わない: viが開発された当時、マウスは存在していましたが、まだ一般的ではありませんでした。
- - カーソルキーを使わない: 開発に使用されたADM-3A端末には、専用のカーソルキーがありませんでした。
- - 命令を覚える必要がある: 画面上に命令が表示されないため、ユーザーはコマンドを覚える必要があります。
これらの特徴は一見欠点のように思えるかもしれませんが、使いこなすことで高速なカーソル移動や編集操作が可能になり、作業効率が向上します。また、マウスやカーソルキーに依存しないため、これらのデバイスが利用できない環境でも使用できます(ただし、Vimのようなviクローンには、GUIやカーソルキーをサポートするものも存在します)。
vi の設計思想
viは、ラインエディタ「ex」を祖先としており、その多くの特徴を受け継いでいます。ラインエディタでは、編集対象の行を抽出、編集、更新するというサイクルで作業を行います。これは、現在の主流であるスクリーンエディタのように、内容の閲覧と編集が一体化しているわけではありません。exでは、特定のパターンに一致する行の置換や、外部コマンドによるフィルタリングなどの機能が充実しており、プログラム
インタプリタのような役割も果たしていました。
viは、exを拡張したもので、閲覧・抽出部分をフルスクリーンに対応させ、独自の移動コマンド体系を導入しました。そのため、分類上はスクリーンエディタに属しますが、その設計思想はビューワーを伴うラインエディタに近いと言えます。このため、特にWYSIWYG(What You See Is What You Get)に慣れたユーザーには、viの独特な操作体系は戸惑いを与えることがあります。最も特徴的なのは、初期状態ではキー入力がテキスト入力ではなく、編集コマンドとして解釈される点です。そのため、viは「モードを持つエディタ」と呼ばれることがあります。
viが開発された1976年当時、
ビル・ジョイは300baudから1200baudの低速モデムを使用していました。そのため、viはこのような環境下での利用を想定して設計されています。
exコマンド
viはexのスーパーセットであるため、exの編集機能はすべてviで使用できます。これらのコマンドは「exコマンド」と呼ばれ、コマンドモードで「:」に続けて入力します。「:」の代わりに「Q」と入力すると、exモードに入り、exコマンドが利用できます。例えば、ファイルを保存する「:w」や、エディタを終了する「:q」などがexコマンドに該当します。これらは編集の
メタレベルに関わる操作や、特定の行番号や正規表現に一致する行に対する編集、マクロ機能などを提供します。また、厳密には「i」や「a」などのインサートモードに移行するコマンドもexコマンドの略記とみなされます。
その他の特徴
viはコンパクトで負荷が小さいため、テキストファイルの一部を編集したり、低速なネットワーク環境で作業するのに適しています。また、その軽量さから、最小限の
UNIX環境にも含まれていることが多く、スマートフォン、無線LANルータ、液晶テレビなど、
Linuxをコアシステムとして採用している多くのハードウェアにviまたはvi互換のエディタが搭載されています。
vi互換エディタ
現在、PC-
UNIX環境ではオリジナルのviが使われることは少なく、その機能を模倣したvi互換エディタ(クローン)が広く利用されています。多くのディストリビューションでは、viのシンボリックリンクが互換エディタに接続されています。これらの互換エディタはオープンソースプロジェクトによって開発されていることが多く、macOSやAndroidといった
LinuxベースのOSはもちろん、
MS-DOSやWindowsといった他のプラットフォームでも実行可能なものが存在します。
主なvi互換エディタ:
- - 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標準によって標準化されています。
参考文献
- - Linda Lamb、Arnold Robbins『入門 vi 第6版』福崎俊博訳、オライリー・ジャパン、2002年5月、ISBN 4-87311-083-1
- - Arnold Robbins『viデスクトップリファレンス』日本ルーセント・テクノロジー株式会社訳、オライリー・ジャパン、1999年6月、ISBN 4-900900-94-X