概要

編集

viは、ビル・ジョイによってexというラインエディタの改良版として作られました。ラインエディタのexに対して、viはスクリーン全体を使って編集が可能であり、様々な機能を持っていました。

現在では、純粋なviはほとんど使われておらず、代わりにviと同じ機能を持ち、さらに拡張されたviクローンが主流となっています。viクローンには、nvivimelvis、どがあり、各種Unix、Unix互換OS上の多くに標準搭載されています。

かつては、Xが動いていないUnixで用いられるエディタは、viかEmacsでした。これらは動作が異なっており、どちらが優れているかが論争の的となっていました。少なくとも初期のviと比較すれば、Emacsの機能は非常に豊富であり、起動の速度、移植性などの問題を除けば、Emacsの方が高機能でした。しかしながら、現在のviクローンは初期のviと比べてかなり機能が拡張されており、実用上では機能上の差異は感じられなくなっています。

その後、X Window System の普及でw:geditw: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:文書中の行番号を非表示にします。

viクローンにおける付加機能

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