Vi
概要
編集viは、ビル・ジョイによってexというラインエディタの改良版として作られました。ラインエディタのexに対して、viはスクリーン全体を使って編集が可能であり、様々な機能を持っていました。
現在では、純粋なviはほとんど使われておらず、代わりにviと同じ機能を持ち、さらに拡張されたviクローンが主流となっています。viクローンには、nvi、vim、elvis、どがあり、各種Unix、Unix互換OS上の多くに標準搭載されています。
かつては、Xが動いていないUnixで用いられるエディタは、viかEmacsでした。これらは動作が異なっており、どちらが優れているかが論争の的となっていました。少なくとも初期のviと比較すれば、Emacsの機能は非常に豊富であり、起動の速度、移植性などの問題を除けば、Emacsの方が高機能でした。しかしながら、現在のviクローンは初期のviと比べてかなり機能が拡張されており、実用上では機能上の差異は感じられなくなっています。
その後、X Window System の普及でw:geditやw:keditといったX上のエディタを利用することが一般的となっており、viやEmacsの重要性は薄れつつあります。
現在、Visual Studio Codeなど、viやEmacsの機能を凌駕する新しいエディタが登場しています。 さらに、多くのプラットフォームで利用でき、さまざまな言語をサポートしているため、多くの開発者が愛用するエディタとなっています。 しかし、viやviクローンは、OSS開発ツールとしては、特にUnixやUnixクローンでの開発作業に欠かせないツールとして、今でも多くのユーザーに親しまれています。
viにおけるモード
編集viは通常のエディタと異なり、複数のモードを切り替えて編集を行います。
まず、コマンドモードでは、キー操作によってテキストの移動、コピー、ペースト、削除などができます。一方、入力モードでは、打鍵したキーがそのままテキストに入力されます。
通常、viを起動するとコマンドモードになるため、文字列を入力する場合は入力モードに移行する必要があります。
これらのモード間の切り替えは、いくつかのキー操作で行うことができます。また、入力モードに移行する最も基本的なコマンドは「i」です。
一方、入力モードからコマンドモードに移行するには、EscキーまたはCtrl + cを使います。
viにおいて、文字入力以外の操作はすべてコマンドモードで行います。次の章では、Viにおけるコマンドモードの動作について詳しく説明します。
モードとコマンド
編集ここでは、Viのモードと最もよく使われるコマンドを紹介します。
- コマンドモード:Viを開いたときのデフォルトのモードです。このモードを使用して、ナビゲート、検索、コマンドを実行します。他のモードからコマンドモードに戻るには、Escキーを押します。
- 挿入モード:文書にテキストを挿入するためのモードです。iキーを押すと、挿入モードになります。
- ビジュアルモード:このモードでは、テキストを選択することができます。vを押してビジュアルモードに移行します。
- ナビゲーション
- h: カーソルを1文字分左に移動します。
- j: カーソルを1行下に移動します。
- k: カーソルを1行上に移動します。
- l: カーソルを1文字分右に移動します。
- 0: カーソルを行頭に移動します。
- $: カーソルを行末に移動します。
- G:カーソルを文書の末尾に移動する。
- gg: カーソルをドキュメントの先頭に移動します。
- Ctrl-f:カーソルを1ページ前に移動します。
- Ctrl-b:カーソルを1ページ後ろに移動します。
- w: カーソルを1語前に移動します。
- b: カーソルを1語後ろに移動します。
- /text}:文書中の{text}を検索します。
- n: 検索語の次の語句に移動する。
- N: 検索語の前の語句に移動する。
- 編集
- i:現在のカーソル位置でインサートモードに入る。
- a: 現在のカーソル位置の後に挿入モードを開始する。
- O: 現在の行の下にある新しい行に挿入モードを開始する。
- O: 現在の行の上にある新しい行に挿入モードを開始する。
- x: カーソルの下の文字を削除する。
- dd: 現在の行を削除する。
- yy: 現在の行をコピーする。
- p: 最近コピーまたは削除されたテキストを現在のカーソル位置の後に貼り付ける。
- u: 直前のコマンドを取り消す。
- Ctrl-r: 最後に取り消したコマンドをやり直します。
- w: ドキュメントを保存します。
- q:Viを終了します。
- q!:変更を保存せずにViを終了します。
- 高度な編集
- r:カーソル下の文字を入力された次の文字に置き換えます。
- S:カーソル下の文字を入力された次の文字に置き換え、挿入モードに入ります。
- J:現在の行と次の行を結合します。
- Ctrl-v: ビジュアルブロックモードに入り、長方形のテキストブロックを選択します。
- y: 選択されたテキストをコピーします。
- d: 選択されたテキストを削除します。
- c: 選択されたテキストを削除し、挿入モードに入ります。
- その他
- .: 直前のコマンドを繰り返す。
- ~:カーソルの下にある文字の大文字と小文字を変更する。
- %:カーソルを一致する括弧または括弧に移動します。
- :set nu: ドキュメントに行番号を表示します。
- :set nonu:文書中の行番号を非表示にします。