Vim

Vim（ヴィム。「ヴィアイエム」という読み方は誤り）は、vi から派生し、発展した高機能なテキストエディタである。 Vimはオランダ人のプログラマー、ブラム・ムールナーによってAmiga向けに開発された。のちにWindowsを含むさまざまな環境に移植され、特にUnix系オペレーティングシステム (OS) ではEmacsと並んで広く使用されているテキストエディタとなっている。 Vimという名称は、オリジナルのviエディタに近づくことを目標として、開発当初Vi IMitation（viの模倣）の略とされていた。しかし、やがてviを超えることを目指してVi IMproved（viの改良）とされるようになり、今日ではオリジナルのviを大きく上回る機能を持つに至っている。 VimはGUIを必要とせずCUIでも動くため、Unix系OSに標準のエディタとして搭載されていることが多い。コンピュータの大容量化と高速化にともない、2000年以降のOSでは viに代わってより高機能な Vim、あるいはその機能劣化版が標準装備されるようになってきている。このため、コマンドライン上でviを実行すると代わりにVimが起動するディストリビューションが一般的となった。 Vimは基本的にCUIで動作するが、GUIで動くVimのことを特にGVim（gVim, gvim, ジーヴィム）と呼び区別している。マウス操作など、X GUI (Unix, Linux) /Windows GUI (Windows) であることを生かしたGVimにしかない機能もある。 viエディタと同様、キーボードのみで操作されることを前提としていたため、キーボードのみですべての操作が可能になっている。その基本的な操作方法はviと同じで、状況に応じてモードを使い分けることでテキストを編集していき、小さなコマンドの組み合わせをその場で作ることによって多種多様な機能を実現する。 他のエディタとは操作方法がまるで異なるため、一通りのテキスト編集作業ができるようになるまで慣れが必要となる。しかしながら、一旦慣れてしまえば軽快なテキスト編集ができるため、数多くのVim愛好家が存在する。Vimの他の機能と併せて、プログラムコードやシステム設定ファイルを編集するのに特化しているため、特にプログラマーやシステム管理者に利用者が多い。 vi系 (vi, Vim, nvi) のキーボード操作法は、エディタをはじめ、各種ビューワや、ブラウザのプラグインにいたるまでその後のソフトウェアの操作方法に強い影響を与えていった。 Vimの大きな特徴として高いカスタマイズ性を挙げることができる。オリジナルのviがどんな環境でも設定なしですべての機能が利用できる万人向けのエディタだったのに対し、Vimでは設定ファイルを用いることでより個人の好みにあったエディタにカスタマイズすることができる。 エディタの詳細設定は主に ~/.vimrc（Windows版では %USERPROFILE%\_vimrc）というファイルに書いておき、起動時にVimがそれを読み込むことで設定が反映される仕組みになっている。Vimは独自のスクリプト言語 (Vim script) を用いて自身の機能を拡張することができ、かなり幅広い機能強化を行うことが可能である。有志らによって書かれた有用なスクリプトはプラグインとして www.vim.org 上や個人のブログ上で公開されている。~/.vim（windows版では %USERPROFILE%\vimfiles）フォルダ以下にこれらのプラグインファイルを置くことで機能を拡張できる。 Vimは、多言語、多コーデックを扱うことができ、iconvで対応しているものならばたいてい利用できる。しかし日本語などのマルチバイト文字を書くには不便が多く、もっぱら英文編集での利用が一般的である。 ライセンス形態は、GPL互換のチャリティウェアとなっており、いわゆるフリーでオープンソースなソフトウェアとして配布されており、Vimを起動するとウガンダの子供たちへの援助を募るメッセージが表示される。 Vim は複数のモードを用いてテキストの編集を行う。この独特な機能は初学者を混乱させやすい。 あらゆるエディタは、テキストの挿入とエディタに与えるコマンド指示を区別するという意味でモードを持つと言えるが、他のほとんどのエディタはこのモードを全く異なる方法で実装している。Vim は vi と同様、モード毎にキー割り当ても切替わるという点において独自性を持つ。これによって、マウスやメニューを全く使わず、最低限のメタキーの使用だけで全ての編集機能を使えるようになっている。 Vim には6つの基本モードと5つの派生モードが存在する。しかしながら実質使用されるのは次の4つのモードであり、その他のモードは重要ではなく、特に意識されていない。 その他のモード 選択モード 文字選択モード 行選択モード 矩形選択モード Exモード オペレータ待機モード 置換モード 仮想置換モード (挿入モード) 挿入ノーマルモード 挿入ビジュアルモード 挿入セレクトモード (ビジュアルモード) 文字ビジュアルモード 行ビジュアルモード 矩形ビジュアルモード もっとも簡単な使い方の例としては、 コマンドラインモードでファイルを開き、 ノーマルモードでカーソルを移動させ、 挿入モードでテキストを入力し、（ESC キーで再度ノーマルモードに戻り） コマンドラインモードでファイルを保存する。 普通の編集コマンドを全て入力することができる。 カーソルの移動をしたり、いくつかのキーを押すことでショートカットのように編集することができる。 エディタの起動時にはこのモードで始まり、他のモードはこのモードから起動する。全ての操作の中心となる重要なモード。他のモード中に ESC か Ctrl+[、Ctrl+c を押すことでこのモードに移行できる。操作中にどのモードにいるのか分からなくなった場合は ESC を押すとノーマルモードに移行できる。 ノーマルモードの派生モード。「実行範囲の指示が必要なコマンド」を実行した場合にVimが指示を待っている状態。 例えば、ノーマルモードで dキーを押すとこのモードに入る。続けて d キーを押した場合は一行削除、wを押した場合は一単語削除、$（行末の意）を押した場合は行末までを削除、となる。d 5 d とキーボード操作すると、カーソル位置から5行分の削除となる。 テキストの部分選択を行うだけのモード。選択後に別途コマンドを与えることにより、選択領域のコピーや削除を始めとしたテキスト処理を行う事が出来る。 テキスト選択中にも移動コマンドなどを行う事ができ、選択範囲を素早く変更できる。移動コマンド以外のコマンドを使うと選択領域に対してそのコマンドが実行される。 ノーマルモードから下記の操作でこのモードに移行できる。その区別は、 このモードの時にはコマンドラインに「-- VISUAL --」と表示される。 ほとんどビジュアルモードと同じだが、印字可能文字が入力されると選択範囲を削除して挿入モードに入る。Windows の選択モードに似ている。 ノーマルモードから g h、g Hで移行できる。また、ビジュアルモード時に Ctrl+g で移行できる。 このモードの時はコマンドラインに「-- SELECT --」と表示される。 挿入モードでビジュアル選択を開始したときのモード。 例えば Ctrl+o v、Ctrl+o V、Ctrl+o Ctrl+v を実行するとこのモードに入る。 このモードの時にはコマンドラインに「-- (insert) VISUAL --」と表示される。 挿入モードでセレクトモードを開始したときのモード。 例えばマウスをドラッグしたり、⇧ Shift+→ を押したときこのモードに入る。 このモードの時にはコマンドラインに「-- (insert) SELECT --」と表示される。 このモードでは、タイプされたテキストがそのまま書き込まれる（Windows のメモ帳などでテキストを入力する場合と同じ）。ノーマルモードから i、I、a、A、o、O などをタイプすることで挿入モードに移行できる。 他にもこのモードに移行するためのコマンドがいくつかある。 このモード時にはコマンドラインに「-- INSERT --」と表示される。 挿入モード時に一度だけノーマルモードのコマンドを実行できる。挿入モード時に Ctrl+[（または ESC キー）を押すのが面倒なときに使用される。 挿入モード時に、 Ctrl+o で挿入ノーマルモードに入る。 このモードの時にはコマンドラインに「-- (insert) --」と表示される。 ノーマルモードからRでこのモードに移行する。文字をタイプするとその分文字が置換されていく。 抜けるには Ctrl+[ を押す。 ウインドウの下部に一行のテキストを入力できる。 コマンドや関数の実行、検索、置換処理など多様な処理を行うことができる。 ノーマルモードから :（コロン）、/（スラッシュ）、?（クエスチョンマーク）を押すことで移行できる。 コマンドラインモードの変種。コマンドラインモードとは次の点で異なる。 毎回 :（コロン）を押す必要がない。 コマンド実行後もExモードに留まる。 コマンドを実行するごとに画面が更新されない。 通常のコマンドライン編集機能が使えない。 マップと短縮入力が使えない。 ノーマルモードから Q、g Q でExモードに移行できる。g Q の場合はコマンドライン編集や補完が使えるようになる。 Exモードを抜けるときは :vi（または :visual）を使う。 コマンドライン上で、次のコマンドを実行する。 下のコマンドは Unix のコマンドラインで動作するが、Windows 版も基本的に同様のコマンドで起動できる。 詳しいコマンドラインオプションについて知りたいならば、次のいずれかのコマンドを実行する。 vim について初めて学ぶ者は次のコマンドを実行するとチュートリアルを起動できる。 以下に vim 関連のコマンドをまとめる。 実際には、vim コマンド以外はほぼ vim のオプションで代替できるので、環境によっては用意されていないこともある。 Vimを終了させたい時は、 中断したい時は、ノーマルモードで Ctrl+z を押す。gVim ではタスクバーに最小化されるが、端末版ではプロセスをバックグラウンドに移す。 また、ノーマルモード時に Z Q で保存せずに終了、ノーマルモード時に Z Z で保存して終了となる。 前身であるviが機能を絞ったコンパクトな印象を一般に持たれているのと比べると、Vimはかなり巨大なアプリケーションである。 Vimはバージョンを重ねるごとに積極的に機能を追加する傾向があり、実装されている機能の種類、数は公開されているエディタの中でもトップクラスに多い。ただし設定によりviに近い操作性に戻すことも可能であり、いくつかのLinuxディストリビューションでは機能を絞ったvimをviとして配布しているものもある。 以下に示す機能の中には設定でオフにしたり、好みに合わせてカスタマイズ可能なものが多く、必ずしも説明と一致しない場合があることに注意。 テキストエディタとして基本的な機能は揃っている。 多段階アンドゥ（元に戻す）とリドゥ（やり直す） コピー（ヤンク）＆ペースト 豊富なカーソル移動 豊富な選択方法（語選択・行選択・矩形選択・段落選択） スペルチェック オペレータとは、コピー（y: yank）、削除（d: delete）、変更（c: change）、選択（v: visual）といった操作の意味を決定づけるキーである。ただし、このキー単独では操作は完結せず、ここに範囲を指定するコマンドが続くことで、単語の削除や、カッコ内の選択、パラグラフのコピーなどの多彩なアクションが可能になる。 範囲を指定するコマンドには、移動系のキー（h j k l