Vi

出典: フリー教科書『ウィキブックス(Wikibooks)』
移動: 案内検索

情報技術> Vi


概要[編集]

viとは、ビル・ジョイにより開発されたエディタで、当時あったexというエディタを改良する方向で作られた。exがラインエディタでしかなかったのに比較すると、viはスクリーン全体を使って編集が可能であり、様々な機能を持っていた。

ただし、現在では、この純粋なviはほとんど使われなくなり、その代わりにviと同じ機能を持ち、さらに拡張したviクローンと呼ばれるソフトウェアが主流である。viクローンには、vimelvisnviなどがあり、これらは、各種Unix、Unix互換OS上の多くに標準搭載されている。

伝統的にXが動いていないUnixで用いられるエディタは、viかw:Emacsであった。これらは動作がお互いに異なっており、普段どちらのエディタを利用するかが論争の的になった。少なくとも初期のviと比較すればEmacsの機能は非常に豊富であり、起動の速度、移植性などの問題を除けば、Emacsの方が高機能であった。しかし、現在のvimは初期のviと比べてかなり機能が拡張されており、(特に、アンドゥ機能が強化されたのがありがたい)実用上では機能上の差異は感じられない。

残念なことに、現在の家庭用コンピュータ上ではX上のエディタ(w:geditw:keditなど)を利用することが普通になっており、viやEmacsの重要性は薄れつつある。しかし、OSS開発ツールとしては、これらのエディタが提供する機能は依然として有力である。

viにおけるモード[編集]

viは、通常のエディタと違って、複数のモードを持ち、これらを切り替えて編集を行う。

コマンドモード
打鍵によってコマンドを実行し、キーの移動、テキストのコピー、ペースト、削除などを行うモード。
入力モード
打鍵したキーがそのままテキストに入力されるモード。

通常viを起動した直後はviはコマンドモードになっている。そのため、通常のエディタと同様入力したい文字列を入力しても、実際に文字列が入力されることはない。文字列の入力を行うには入力モードに移行する必要がある。

これらの切り替えは、いくつかのキーによって行うことができる。実際に入力モードに移行するコマンドはいくつかあるが、それらはどれも少しずつ動作が異なっている。慣れたViユーザはこれらを使い分け、より高速に編集を行うことができる。

最も基本的な切り替えには、iコマンドを使う。これは、カーソルの位置をそのままにしてコマンドモードから入力モードに移行する。Viで入力を始めるには、まずはこのコマンドを入力する必要がある。

入力モードからコマンドモードへの移行には、EscまたはCtrl + cを用いることが出来る。

ここまででモード間の移行について述べた。大雑把にいって文字入力以外の全ての操作(保存や読み込みを含む)は、コマンドモードを使って行うことになる。次の章ではコマンドモードにおけるViの動作について述べる。

コマンドモードにおけるコマンド[編集]

viには、viのコマンドと、exコマンドの二種類がある。vi用のコマンドは、コマンドモードで打鍵することによってその場で機能する。exコマンドは、':'を打鍵することで移行でき、その後の打鍵によって機能する。

viコマンド[編集]

viのコマンドは、通常キーひとつによって機能する。ただし、その前に数字を付けることによって、その回数分機能する。また、キーの後ろにその機能を適用する範囲を指定することによって、コピー、削除などを行うことが出来る。大文字と小文字は、区別され、それぞれ違う意味になる。

例えば、

5j

とすると、5行下がる。それから

dw

とすると、一単語分(w)削除(d)される。

o

とすると下に一行あけて入力モードに移行するが、

O

とすると、上に一行あけて入力モードに移行する。

以下、詳述する。

j
カーソルをひとつ下に下げる。
k

カーソルをひとつ上に上げる。

h
カーソルをひとつ左に移動させる。
l
カーソルをひとつ右に移動させる。
i
カーソルのある場所から入力モードに移行する。
I
カーソルのある行の先頭に移動してから入力モードに移行する。
a
カーソルのある場所のひとつ後ろに移動して入力モードに移行する。
A
カーソルのある行の最後尾に移動してから入力モードに移動する。

exコマンド[編集]

exコマンドは、コマンドモードの際に':'を入力すると移行でき、ここでコマンドを入力して、エンターを押すと、実行される。先頭に数字があるとその回数分実行される。

:(数字)
その文書の指定された行数に移動する。

viクローンにおける付加機能[編集]

このページ「Vi」は、書きかけです。加筆・訂正など、協力いただける皆様の編集を心からお待ちしております。また、ご意見などがありましたら、お気軽にノートへどうぞ。