Vi
概要[編集]
viとは、ビル・ジョイにより開発されたエディタで、当時あったexというエディタを改良する方向で作られた。exがラインエディタでしかなかったのに比較すると、viはスクリーン全体を使って編集が可能であり、様々な機能を持っていた。
ただし、現在では、この純粋なviはほとんど使われなくなり、その代わりにviと同じ機能を持ち、さらに拡張したviクローンと呼ばれるソフトウェアが主流である。viクローンには、vim、elvis、nviなどがあり、これらは、各種Unix、Unix互換OS上の多くに標準搭載されている。
伝統的にXが動いていないUnixで用いられるエディタは、viかw:Emacsであった。これらは動作がお互いに異なっており、普段どちらのエディタを利用するかが論争の的になった。少なくとも初期のviと比較すればEmacsの機能は非常に豊富であり、起動の速度、移植性などの問題を除けば、Emacsの方が高機能であった。しかし、現在のvimは初期のviと比べてかなり機能が拡張されており、実用上では機能上の差異は感じられない。
残念なことに、現在の家庭用コンピュータ上ではX上のエディタ(w:gedit、w: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コマンドは、コマンドモードの際に':'を入力すると移行でき、ここでコマンドを入力して、エンターを押すと、実行される。先頭に数字があるとその回数分実行される。
- :(数字)
- その文書の指定された行数に移動する。