Vim
出典: フリー百科事典『ウィキペディア(Wikipedia)』
開発元: | Bram Moolenaar など |
---|---|
対応OS: | Amiga、BeOS、BSD、Linux、Mac OS、Mac OS X、Windows、MS-DOS、OpenVMS、OS/2、OS/390、UNIX など |
種別: | テキストエディタ |
ライセンス: | GPL 互換のチャリティウェア |
公式サイト: | http://www.vim.org/ |
Vim(ビム)は vi から派生したフリーでオープンソースなクロスプラットフォームのテキストエディタである。コード補完やビルド&エラージャンプなどプログラミング用途の機能が特に充実しており、Emacsと並んでプログラマやUNIX系OSのユーザに広く愛用されている。
目次 |
[編集] 歴史
Bram Moolenaar が1980年代の終わりに Amiga コンピュータを購入したとき、エディタを使おうとしたが、当時は Amiga 用の vi が存在しなかった。そこで vi のクローン Stevie を元にして Vim のバージョン1.0を開発した。最初の第一目標は vi の機能をまねることだったので、その頃はまだ Vim は Vi IMitation(模倣)の略とされていた。1991年に Vim のバージョン1.14がいわゆる「Fred Fish ディスク #591」という Amiga 用のフリーソフトウェア集に収録された。1992年にバージョン1.22が UNIX と MS-DOS に移植された。このときに Vim は Vi IMproved(改良)の略称とされるようになった。
その後、Vim には多くの改良が加えられた。その一里塚となったのは1994年のバージョン3.0で登場した複数の編集ウィンドウであった。それまでは同時に見ることができるファイルの数は一つに限られていた。1996年に登場したバージョン4.0で初めて GUI が利用できるようになった。1998年のバージョンで Vim に構文のハイライト機能が掲載された。2001年にはバージョン6.0で折り畳み、プラグイン、多言語サポート、垂直分割ウィンドウが導入された。2005年10月にリリースされたバージョン6.4では新機能は追加されなかったものの、多くのバグが修正された。2006年5月のバージョン7.0ではスペルチェック機能の追加やタブのサポートが行われた。
[編集] 学習曲線
Vim には急な学習曲線があり、始めは遅いものの一度ユーザが基本をつかむと、ユーザは速く上達し、学習効率が上がる。簡単に習得できるように、初心者用の Vim のチュートリアルが用意されている。このチュートリアルは UNIX のコマンドラインで "vimtutor" と入力するか、Windows のデスクトップで Vim のチューターアイコンをクリックすることで起動できる。Vim で ":help user-manual" と入力することで読めるユーザマニュアルもあり、マニュアルでは Vim の基本的な機能やより高度な機能が詳しく記述されている。
[編集] モード
viから派生した Vim は複数のモードを持ち、この独特な機能は初心者を混乱させやすい。あらゆるエディタは挿入とコマンド入力と区別するという意味でモードを持つが、他のほとんどのエディタはこのモードを全く異なる方法で実装している。Vim は vi と同様、モードの出入りでキーボード全体を切替えるという意味で独特である。これによって、やろうと思えばマウスやメニューを全く使わず、最低限のメタキーの使用だけで全ての編集機能を使えるようになっている。
Vim には六つの基本モードと基本モードの五つの変種がある。
[編集] 通常
通常モードではカーソルの動きやテキストの削除などのエディタのすべてのコマンドを入力できる。デフォルトで Vim はこのモードで起動する。これは多くの新規ユーザが予想することと逆である。
Vim の強力な編集能力は膨大な通常モードのコマンドによってもたらされている。コマンドの多くは入力を完了する操作が必要である。例えば、通常モードのコマンド "dd" はカーソルのある行を削除するが、"d" の後にはもう一つの "d" の代わりに "j" のような移動コマンドを入力して現在の行と次の行を削除することが出来る。 コマンドには数を指定することもでき、"2dd" では "dd" が二度繰り返され、"dj" と同じ効果が得られる。一度ユーザがさまざまな移動 / ジャンプコマンドやその他の通常モードの編集コマンドを覚え、それらのコマンドの組み合わせ方を習得すれば、「モード」のないエディタよりもずっと効率的に編集できるようになる。
通常モードから挿入モードへ入る方法はたくさんあるが、もっとも一般的な方法は "a"(追加)か "i"(挿入)を入力することである。
[編集] ビジュアル
このモードは通常モードに良く似ている。しかし、移動コマンドはテキストのハイライトされた部分を広げる。非移動コマンドが使われたときには、ハイライトされた領域にだけ適用される。Vim の「テキストオブジェクト」もこのモードで移動コマンドとして使うことができる。
[編集] 選択
このモードは Windows の選択モードにやや似ている。マウスやカーソルキーでテキストをハイライトすることができるが、文字を入力するとハイライトされた領域は削除された後に、入力した文字が挿入されて Vim は挿入モードに入る。
[編集] 挿入
このモードでは、キーを押すとほとんどの場合バッファへテキストが挿入される。この振舞はほとんどの新規ユーザがテキストエディタに対して予想するものである。
エスケープキー (ESC) を押すことで挿入モードから通常モードに戻ることが出来る。
[編集] コマンドライン
コマンドラインモードでは、コマンド(":" キー)や検索("/" や "?" キー)やフィルターコマンド("!" キー)として解釈される一行を入力できる。
[編集] ex
これはコマンドラインモードに似ているが、"visual" と入力してこのモードを抜けるまで複数のコマンドを入力できる。
[編集] eVim
eVim は「モード」のないエディタのように振る舞う特別な GUI モードで、Vim は挿入モードで起動して、挿入モードから変わらない。ユーザはメニューやマウスや矢印キーなどのキーボードのコントロールキーを使うことになる。このモードはコマンドラインで "evim" と入力したり (UNIX)、evim アイコンをクリックする (Windows) ことで有効になる。
[編集] カスタマイズ
Vim の特長に徹底的にカスタマイズできるということがある。例えば、基本的なインタフェースは多くのオプションによって変えられるようになっている(":help options")。更にマクロと呼ばれる自分用のキーマップを定義することができ、これによって作業を自動化したり、内部関数やユーザ定義関数を呼び出すことができる(":help map.txt")。
Vim では多くのプラグインが利用でき、機能を拡張したり新しい機能を追加できる。この複雑なスクリプトは通常 Vim の内部スクリプト言語によって書かれている(":help vim-script-intro")が、コンパイル時に Vim に追加できる Perl や Python や Ruby などのインターフェースを使用して実装することができる。
[編集] 機能
[編集] 概要
vi というとコンパクトでありながら豊富なテキスト操作手段をもつエディタという印象が一般に持たれている。Vim はさらに雑多ともいえるほどのコマンドを追加している。しかし、オムニ補完や構文強調、リアルタイムスペルチェックなど処理が重い機能も次々と導入されており、もはやコンパクトという印象は当てはまらない。
- 設定によりオリジナルの vi とほぼ互換の操作を実現
- マルチバッファ
- 任意個数ウィンドウ分割(縦、横)
- リストや辞書を備えた独自のスクリプト言語を実装している
- スクリプト中から Perl, Ruby, Python, Tcl, MzScheme を呼び出せる
- 登録略語補完(アブリビエイション)
- 動的単語補完
- 多段階アンドゥ
- 400以上の文法に対応したハイライティング
- C/C++, Java, Ruby, Python など40以上の言語に対応したオートインデント
- ctags を利用したタグジャンプ
- クラッシュしても、ほぼ直前のファイルを復元可能
- カーソル位置や開いているバッファ状態の保存・復元(セッション機能)
- 2つのファイルの差分を色分けし、同期スクロールして表示する diff モード
- リモートファイル編集
- migemo検索
- オムニ補完(インテリセンスと同等の機能)
[編集] ヘルプ機能
Vim にはテキスト形式の膨大なドキュメントが存在する。また、Vim では問題の解決法を見付けるためのさまざまな機能が提供されている。構文のハイライトや Vim 独自のヘルプの文法によって、キーワードはさまざまな色で強調表示される。キーボードショートカットでウェブブラウザのようにキーワード間を行き来することができる。更に GUI 版ではマウスを使っても移動することができる。ユーザが楽に解決法を探すための機能は他にもあり、そのうち主なものは ':helpgrep' コマンドである。これを用いれば、ユーザはヘルプ全体の中から単語を探すことができ、':cwindow' でもう一つのウィンドウ内にヒットしたものが表示され、それによってヘルプ内の一致する箇所へ移動することができる。Vim のヘルプ機能でヒットリスト内から更に単語を探すこともできる。
[編集] プログラマ支援
Vim はプログラマによって開発されたプログラマのためのエディタである。Vim にはプログラマの仕事を楽にするための機能が備わっている。統合開発環境と同様、ソースファイルを編集した後 Vim から直接コンパイルできる。コンパイルエラーが発生したときには、もう一つのウィンドウが表示される。エラーメッセージに基づいて、直接他のウィンドウ内に表示されたソースファイルのエラーの出た箇所へジャンプすることができる。構文のハイライトやテキストの折り畳みもプログラマにとって役立つ機能として挙げられる(':help quickfix'参照)。
[編集] ファイルの差分
しばしば行われる作業に異なるバージョンのファイルの比較がある。Vim には二つのバージョンのファイルを二つのウィンドウに並べて、差分をさまざまな色で表示する機能がある。変更された行や挿入された行は色を付けて強調され、変更のない範囲は折り畳まれて表示される。図では変更された行は赤で、挿入された行は青色で表示されている。折り畳まれた箇所は灰色になっている。UNIX では vimdiff コマンドでもこの機能を利用できる。
[編集] スクリプト言語
Vim には独自のスクリプト言語が備わっており、それを用いればマクロで対応するのが難しいような複雑な作業を自動化できる。Vim のスクリプトは -s オプションを付けて起動したり、いわゆるプラグインディレクトリ内に入れたりすれば読み込まれる。':source' コマンドでもスクリプトが読み込まれ実行される。Vim スクリプトの例に Vim の設定ファイルがあり、UNIX や Linux では .vimrc、Windows では _vimrc というファイル名になっていることが多い。このファイルは起動時に自動的に実行される。Vim のスクリプト言語ではコマンドラインのコマンドが全て利用でき、':normal' コマンドで通常モードの全てのコマンドも使うことができる。この言語では数と文字列の二つのデータ型が用意されている。ブール値は数で実現され、0は偽でそれ以外の数は真と評価される。また、重要な比較演算子や基本的な算術演算子もある。制御構造も用意され、if文や while文が使える。さらにユーザが自前の関数を定義でき、100を超える定義済み関数を利用できる。作成したスクリプトはデバッグモードでテストすることができる。
[編集] 弱点
- 巨大なファイルを読み込むのが遅い
- ファイルサイズが小さくても、1行が長いと処理が非常に遅くなる
- 独自のスクリプト言語の仕様が繁雑。自動実行系、ウィンドウ管理系のコマンドが貧弱
- C-1 など、マッピングできないキーが存在する(キャラクタ端末アプリケーションであるための制限)
[編集] 外部リンク
- vim.org (総本山)
- KaoriYa (日本語対応 Windows 版 Vim の配布)
- Vim FAQ 日本語版
- Vim 日本語ドキュメント
- vim users guide
- spanish passion (設定方法、チュートリアル等)
- VimWiki