vi(ヴィー)とは | 意味や読み方など丁寧でわかりやすい用語解説
vi(ヴィー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
ヴィアイ (ヴィアイ)
英語表記
vi (ヴィー)
用語解説
viは、UNIX系OSに標準搭載されているテキストエディタであり、システム管理者や開発者にとって必須とも言えるツールである。多くのLinuxディストリビューションやmacOSなど、ほとんどのUNIX互換環境で利用可能であり、どのような環境でも安定して動作するため、SSH接続を介したサーバーの遠隔操作や、GUI環境がないCUI(Character User Interface)環境での作業において特に重宝される。その歴史は古く、1970年代に開発されて以来、現在に至るまでその基本的な操作体系は変わっておらず、古くからUNIXの世界に親しんできたエンジニアたちにとっては、長年の相棒のような存在である。システムエンジニアを目指す者にとって、viの基本的な操作を習得することは、多様なシステム環境での作業に対応するための重要な一歩となる。
viの最大の特徴は、モードベースの操作体系を持つ点である。一般的なテキストエディタが「テキスト入力モード」のみで操作するのに対し、viは主に「コマンドモード(ノーマルモード)」「挿入モード」「Exモード(最終ラインモード)」の3つのモードを切り替えながら操作する。この独特の操作性が、初心者にとって最初のハードルとなることが多いが、一度慣れてしまえば、キーボードから手を離すことなく、非常に高速かつ効率的にテキストを編集できる強力なツールへと変わる。
まず、起動と終了について説明する。viを起動するには、シェル上でvi [ファイル名]と入力する。ファイル名が指定されない場合は、一時的な空のバッファが開かれる。既存のファイルを開く場合はその内容が表示され、存在しないファイルを指定した場合は新規ファイルが作成される。起動時は「コマンドモード」である。テキストの入力を行うには、コマンドモードから「挿入モード」へ移行する必要がある。挿入モードへ移行するには、i(カーソルの位置から挿入)、a(カーソルの次の位置から挿入)、o(現在の行の下に新しい行を作成して挿入)などのコマンドを使用する。挿入モードに入ると、通常のテキストエディタと同様に文字を入力できる。入力が完了したら、Escキーを押すことで挿入モードからコマンドモードに戻る。
コマンドモードでは、テキストの入力ではなく、カーソルの移動、文字の削除、コピー、貼り付けといった編集操作を行う。カーソル移動は、h(左)、j(下)、k(上)、l(右)といったキーで行う。また、wで単語の先頭へ、bで単語の末尾へ、$で現在の行の末尾へ、^で現在の行の先頭へ移動できる。特定の行へ移動したい場合は、行番号に続けてGを入力する。例えば、10行目に移動するには10Gと入力する。ファイルの先頭へはgg、ファイルの末尾へはG単独で移動する。テキストの削除は、xでカーソル位置の1文字を削除、dwで単語を削除、ddで現在の行を削除、Dでカーソル以降の行の残りを削除する。削除されたテキストは一時的にバッファに保存されるため、p(カーソルの後ろに貼り付け)またはP(カーソルの前に貼り付け)で貼り付けができる。特定のテキストをコピーする場合はyy(行全体をコピー)、yw(単語をコピー)を使用し、同様にpまたはPで貼り付ける。誤った操作をしてしまった場合は、uで一つ前の状態に戻す(アンドゥ)ことができる。
ファイルの保存や終了、検索、置換といった高度な操作を行う際には、「Exモード(最終ラインモード)」を使用する。これは、コマンドモードで:(コロン)を入力することで移行するモードで、画面下部にコロンと入力待ちのプロンプトが表示される。ファイルを保存するには:w、終了するには:qと入力し、Enterキーを押す。ファイルを保存して終了する場合は:wqまたは:xを使用する。変更を破棄して強制的に終了する場合は:q!と入力する。特定の文字列を検索するには:/パターン、前方を検索するには:?パターンと入力し、Enterキーを押す。検索後、次の候補へ移動するにはn、前の候補へ移動するにはNを使用する。ファイル内の特定の文字列を別の文字列に置換するには、:s/旧文字列/新文字列/gと入力する。gオプションは行内にある全ての出現箇所を置換することを意味し、ファイル全体を対象とする場合は:%s/旧文字列/新文字列/gとする。
viの利点は、その普遍性と効率性にある。UNIX系のシステムであればGUI環境がなくても必ずviが利用できるため、最低限のテキスト編集作業はどこでも可能である。また、キーボードから指を離さずにほとんどの操作が完結するため、習熟すれば高速に作業を進めることができる。リソース消費も非常に少なく、低速なネットワーク環境やリソースの限られた環境でも軽快に動作する。現代では、viの機能拡張版であるVim(Vi IMproved)が広く利用されており、シンタックスハイライト、複数ファイルのバッファ管理、カスタマイズ可能なキーバインディングなど、より高度な機能が提供されている。Vimは単なるテキストエディタにとどまらず、開発環境として利用するエンジニアも少なくない。
viの学習曲線は急峻であると言われるが、その操作体系は合理的に設計されており、一度その哲学を理解し、基本的なコマンドを習得すれば、エンジニアとしての作業効率を飛躍的に向上させる強力な武器となるだろう。システム開発やサーバー管理の現場で活躍するために、viの習得は避けて通れない重要なスキルの一つである。