Vim
Vimの最新ニュースをまとめて検索!
| Vim | |
|---|---|
![]() |
|
| 開発元 | Bram Moolenaar など |
| 最新版 | 7.2 (Windows 2008年8月9日) |
| 対応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から派生したテキストエディタである。
Bram MoolenaarによってAmiga向けに開発されたが、その後さまざまな環境に移植され、特にUNIX系OSでは、Emacsと並んで広く使用されているテキストエディタとなっている(エディタ戦争参照)。
名称のVimは、viに近づくことを目標としていた開発当初はVi IMitation(模倣)の略とされていたが、やがてviを超えることを目指してVi IMproved(改良)とされるようになった。実際、現在のVimはオリジナルのviを大きく上回る機能を持つに至っている。
ライセンス形態は、GPL互換のチャリティウェアとなっており、いわゆるフリーでオープンソースなソフトウェアである。
目次 |
[編集] 歴史
Vim 誕生のきっかけは、Bram Moolenaar が1980年代の終わりに Amiga コンピュータを購入したことによる。彼はエディタとして vi を使おうとしたが、当時 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年のバージョンで構文のハイライト機能が掲載された。
2001年のバージョン6.0で折り畳み、プラグイン、多言語サポート、垂直分割ウィンドウが導入された。
2005年10月にリリースされたバージョン6.4では新機能は追加されなかったものの、多くのバグが修正された。
2006年5月のバージョン7.0ではスペルチェック機能の追加やタブのサポートが行われた。
[編集] 学習曲線
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) を押すことで挿入モードから通常モードに戻ることが出来る。
(エスケープキー以外にも、control + C やcntorol + [ でも可能。また、vimには一回だけ通常モードに戻るcntrol+ O というコマンドもある。詳細はvim help txtを参照)
[編集] コマンドライン
コマンドラインモードでは、コマンド(":" キー)や検索("/" や "?" キー)やフィルターコマンド("!" キー)として解釈される一行を入力できる。
[編集] 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 のもつコンパクトという性質は引き継いでいない。
- 設定によりオリジナルの vi とほぼ互換の操作を実現
- マルチバッファ
- 任意個数ウィンドウ分割(縦、横)
- リストや辞書を備えた独自のスクリプト言語を実装している
- スクリプト中から Perl, Ruby, Python, Tcl, MzScheme を呼び出せる
- 登録略語補完(アブリビエイション)
- 動的単語補完
- 多段階アンドゥ
- 400以上の文法に対応したハイライティング
- C/C++, Java, Ruby, Python など40以上の言語に対応したオートインデント
- ctags を利用したタグジャンプ
- クラッシュしても、ほぼ直前のファイルを復元可能
- カーソル位置や開いているバッファ状態の保存・復元(セッション機能)
- 2つのファイルの差分を色分けし、同期スクロールして表示する diff モード
- リモートファイル編集
- オムニ補完(インテリセンスと同等の機能)
[編集] ヘルプ機能
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 など、マッピングできないキーが存在する(キャラクタ端末アプリケーションであるための制限)
[編集] 関連項目
[編集] 参考文献
- Steve Oualline『Vi IMproved‐Vim完全バイブル』高橋則利訳、技術評論社、2004年5月、ISBN 4-7741-2018-9
[編集] 外部リンク
- vim.org (プロジェクトのウェブサイト)
- KaoriYa (日本語対応 Windows 版 Vim の配布)
- Vim 日本語ドキュメント
- spanish passion (設定方法、チュートリアル等)
- VimWiki
|
|||||








