Vim

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
Vim
Vimlogo.svg
Vim-(logiciel)-console.png
ターミナル上で実行中のvim
開発元 Bram Moolenaar など
最新版 7.4 / 2013年8月10日
対応OS クロスプラットフォーム、一般的にはUNIXLinuxWindowsなど
種別 テキストエディタ
ライセンス GPL 互換のチャリティウェア
公式サイト http://www.vim.org/
テンプレートを表示

Vimヴィムまたはヴィアイエム)は、vi から派生し、発展した高機能なテキストエディタである。

概要[編集]

Vimはオランダ人のプログラマーBram Moolenaarによって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, ジーヴィム)と呼び区別している。マウス操作など、GUIであることを生かしたGVimにしかない機能もある。

viエディタと同様、キーボードのみで操作されることを前提としていたため、キーボードのみですべての操作が可能になっている。その基本的な操作方法はviと同じで、状況に応じてモードを使い分けることでテキストを編集していき、小さなコマンドの組み合わせをその場で作ることによって多種多様な機能を実現する。

Windows系エディタ(メモ帳など)などの他のエディタとは操作方法がまるで異なるため、一通りのテキスト編集作業ができるようになるまで慣れが必要となる。しかしながら、一旦慣れてしまえばメモ帳などとは比較にならないほどのテキスト編集速度を得ることができるため、数多くのVim愛好家が存在する。Vimの他の機能と併せて、プログラムコードやシステム設定ファイルを編集するのに特化しているため、特にプログラマーやシステム管理者に利用者が多い。

viと同じく、Vimの特殊なキーボード操作は、慣れると一種の快感さえも得られるようになり[独自研究?]、(他のソフトウェア上で、指が勝手にhjklを叩いている、文字を打った後に Ctrl-[ を押してしまう等の)中毒症状すら起こす者もいた[要出典]。このためかvi系 (vi, Vim, nvi) のキーボード操作法は、エディタをはじめ、各種ビューワや、ブラウザのプラグインにいたるまでその後のソフトウェアの操作方法に強い影響を与えていった。特にMozilla FirefoxのアドオンであるVimperatorは有名である[要出典]

Vim の分割スクリーン

Vimの大きな特徴として高いカスタマイズ性を挙げることができる。オリジナルのviがどんな環境でも設定なしですべての機能が利用できる万人向けのエディタだったのに対し、Vimでは設定ファイルを用いることでより個人の好みにあったエディタにカスタマイズすることができる。

エディタの詳細設定は主に ~/.vimrc(Windows版では %USERPROFILE%\_vimrc)というファイルに書いておき、起動時にVimがそれを読み込むことで設定が反映される仕組みになっている。Vimは独自のスクリプト言語 (Vim script) を用いて自身の機能を拡張することができ、かなり幅広い機能強化を行うことが可能である。有志らによって書かれた有用なスクリプトはプラグインとして www.vim.org 上や個人のブログ上で公開されている。~/.vim(windows版では %USERPROFILE%\vimfiles)フォルダ以下にこれらのプラグインファイルを置くことで機能を拡張できる。

Vimは、多言語、多コーデックを扱うことができ、iconvで対応しているものならばたいてい利用できる。しかし日本語などのマルチバイト文字を書くには不便が多く、もっぱら英文編集での利用が一般的である。

ライセンス形態は、GPL互換のチャリティウェアとなっており、いわゆるフリーでオープンソースなソフトウェアとして配布されており、Vimを起動するとウガンダの子供たちへの援助を募るメッセージが表示される。

歴史[編集]

Vim 誕生のきっかけは、Bram Moolenaarが1980年代の終わりにAmigaコンピュータを購入したことによる。彼はエディタとしてviを使おうとしたが、当時Amiga用のviは存在しなかった。そこでviのクローンStevieを元にしてVimのバージョン1.0を開発した。最初の第一目標はviの機能をまねることだったので、その頃のVimViIMitation(viの模倣)の略とされていた。1991年にVimのバージョン1.14がいわゆる「Fred Fish ディスク #591」というAmiga用のフリーウェア集に収録され、公開されることとなった。

日時 バージョン 変更点
1987/07 N/A Tim ThompsonがAtari ST向けにviクローンStevie(ST editor for VI enthusiasts の頭文字から命名)をリリースした。ソースコードはUsenet[1][2]に投稿された。
1988/06 N/A Tony AndrewsがStevieを改良し, UNIXOS/2に移植し、バージョン3.10としてUsenet[1][3]に投稿した。
1988 1.0 Bram MoolenaarがStevieを元にしてAmiga OS向けにVim (Vi IMitation) を開発した。ただし非公開。
1991/11/02 1.14[4] VimがAmigaのFred Fish disk #591[5]に収録された。
1992 1.22[4] UNIXとMS-DOSに移植された。
1993/11/14 2.0 このバージョンからVimはVi IMprovedの略称とされた。
1994/08/12 3.0[4] Windowsをサポート。複数バッファ機能。
1996/05/29 4.0[4][6] GUI版の公開
1998/02/19 5.0[4][7] シンタックスハイライトとスクリプト言語(ユーザ定義関数、コマンド)のサポート
1998/04/06 5.1 バグ修正と様々な改良
1998/04/27 5.2 長期サポート、ファイルブラウザ、ダイアログ、ポップアップメニュー、セレクトモード、ユーザ定義関数、ユーザ定義コマンド、Tclのサポートなど
1998/08/31 5.3 バグ修正
1999/07/25 5.4 簡単なファイル暗号化、様々な改良
1999/09/19 5.5 バグ修正と様々な改良
2000/01/16 5.6 新しいシンタックスファイル。バグ修正など。
2000/06/24 5.7 同上
2001/05/31 5.8 同上
2001/09/26 6.0[4][8] 折りたたみ、プラグイン、多言語サポート、垂直分割ウインドウなど。
2002/03/24 6.1 バグ修正
2003/06/01 6.2 GTK2、アラビア語のサポート、バグ修正など
2004/06/07 6.3 マーク機能、翻訳、バグ修正など
2005/10/15 6.4 外部スクリプト言語インタフェースの追加 (Perl, Python, Ruby)、多数のバグ修正など
2006/05/07 7.0 [9] スペルチェック、自動補完、タブページ、ハイライト機能の強化、Undo機能の改良など
2007/03/12 7.1 シンタックスファイルの追加、ランタイムファイル、バグ修正など
2008/08/09 7.2 [10] Vimスクリプトでの浮動小数点のサポート、スクリーン描画のコードのリファクタング、シンタックスファイルの追加、など
2010/08/15 7.3 スクリプト言語LuaとPython3をサポート。 Blowfish暗号化, 制限なしundo/redo
2013/08/10 7.4 新しい高速な正規表現エンジン

移植された環境[編集]

viエディタはもともとUNIX上でしか動作しなかったが、VimはAmigaOS(公開時のプラットフォーム)だけでなく、Atari MiNTBeOSDOSWindowsIBM OS/2OS/390MorphOSOpenVMSQNXRISC OSUNIXLinuxBSDMac OS[11]Mac OS X[12]など、多数のプラットフォームに移植されてきた。

また、独立した移植版がAndroid[13]iOS[14]でも動作する。

モード切替[編集]

Vimは複数のモードを用いてテキストの編集を行う。この独特な機能は初学者を混乱させやすい。

あらゆるエディタは、テキストの挿入とエディタに与えるコマンド指示を区別するという意味でモードを持つと言えるが、他のほとんどのエディタはこのモードを全く異なる方法で実装している。Vimはviと同様、モード毎にキー割り当ても切替わるという点において独自性を持つ。これによって、マウスやメニューを全く使わず、最低限のメタキーの使用だけで全ての編集機能を使えるようになっている。

Vimには6つの基本モードと5つの派生モードが存在する。しかしながら実質使用されるのは次の4つのモードであり、その他のモードは重要ではなく、とくに意識されていない。

ノーマルモード カーソル移動やテキストの削除、コピー、ペーストなどの簡単な指示を行う。
ビジュアルモード テキストを選択するだけのモード。
挿入モード 実際にテキストを入力するモード。
コマンドラインモード ファイルを開いたり、検索・置換などの様々な指示を行う。

その他のモード

  • セレクトモード
  • Exモード
  • 演算子未解決モード
  • 置換モード
  • 挿入ノーマルモード
  • 挿入ビジュアルモード
  • 挿入セレクトモード

もっとも簡単な使い方の例としては、

  1. コマンドラインモードでファイルを開き、
  2. ノーマルモードでカーソルを移動させ、
  3. 挿入モードでテキストを入力し、(ESCキーで再度ノーマルモードに戻り)
  4. コマンドラインモードでファイルを保存する。

ノーマルモード[編集]

普通の編集コマンドを全て入力することができる。 カーソルの移動をしたり、いくつかのキーを押すことでショートカットのように編集することができる。

j        :=> 下にカーソル移動
k        :=> 上にカーソル移動
h        :=> 左にカーソル移動
l        :=> 右にカーソル移動
dw       :=> 単語を削除
yy       :=> 一行コピー
Ctrl-f  :=> 1ページ下にスクロール

エディタの起動時にはこのモードで始まり、他のモードはこのモードから起動する。全ての操作の中心となる重要なモード。他のモード中にESCか Ctrl-[ 、Ctrl-c を押すことでこのモードに移行できる。操作中にどのモードにいるのか分からなくなった場合はESCを押すとノーマルモードに移行できる。

演算子未解決モード[編集]

ノーマルモードの派生モード。「実行範囲の指示が必要なコマンド」を実行した場合にVimが指示を待っている状態。

例えば、ノーマルモードでd(deleteの意)を押すとこのモードに入る。続けてdを押した場合は一行削除、w(wordの意)を押した場合は一単語削除、$(行末の意)を押した場合は行末までを削除、となる。d5dと入力すれば、カーソル位置から5行分の削除となる。

ビジュアルモード[編集]

テキストの部分選択を行うだけのモード。選択後に別途コマンドを与えることにより、選択領域のコピーや削除を始めとしたテキスト処理を行う事が出来る。

テキスト選択中にも移動コマンドなどを行う事ができ、選択範囲を素早く変更できる。移動コマンド以外のコマンドを使うと選択領域に対してそのコマンドが実行される。

ノーマルモードからv、V、Ctrl-v、gvでこのモードに移行できる。その区別は、

v        :=> 文字単位のビジュアルモードに移行
V        :=> 行単位のビジュアルモードに移行
Ctrl-v   :=> 矩形選択ビジュアルモードに移行
gv       :=> 前回選択した範囲をもう一度選択

このモードの時にはコマンドラインに"-- VISUAL --"と表示される。

セレクトモード[編集]

ほとんどビジュアルモードと同じだが、印字可能文字が入力されると選択範囲を削除して挿入モードに入る。Windowsの選択モードに似ている。

ノーマルモードからgh、gHで移行できる。また、ビジュアルモード時に Ctrl-g で移行できる。

このモードの時はコマンドラインに "-- SELECT --" と表示される。

挿入ビジュアルモード[編集]

挿入モードでビジュアル選択を開始したときのモード。

例えば Ctrl-o v, Ctrl-o V, Ctrl-o Ctrl-v を実行するとこのモードに入る。

このモードの時にはコマンドラインに "-- (insert) VISUAL --" と表示される。

挿入セレクトモード[編集]

挿入モードでセレクトモードを開始したときのモード。

例えばマウスをドラッグしたり、Shift-rightを押したときこのモードに入る。

このモードの時にはコマンドラインに "-- (insert) SELECT --" と表示される。

挿入モード[編集]

このモードでは、タイプされたテキストがそのまま書き込まれる(Windowsのメモ帳などでテキストを入力する場合と同じ)。ノーマルモードからi、I、a、A、o、Oなどをタイプすることで挿入モードに移行できる。

i       :=> カーソル位置の前から挿入 (insert) モードを開始する。
I       :=> 行の先頭から挿入モードを開始する。
a       :=> カーソル位置の後 (append) から挿入モードを開始する。
A       :=> 行末から挿入モードを開始する。
o       :=> カーソルの下に空行を挿入し、その先頭から挿入モードを開始する
O       :=> カーソルの上に空行を挿入し、その先頭から挿入モードを開始する

他にもこのモードに移行するためのコマンドがいくつかある。

このモード時にはコマンドラインに "-- INSERT --" と表示される。

挿入ノーマルモード[編集]

挿入モード時に一度だけノーマルモードのコマンドを実行できる。挿入モード時に Ctrl-[ (ESC) を押すのが面倒なときに使用される。

挿入モード時に、Ctrl-o で挿入ノーマルモードに入る。

このモードの時にはコマンドラインに "-- (insert) --" と表示される。

置換モード[編集]

ノーマルモードからRでこのモードに移行する。文字をタイプするとその分文字が置換されていく。 抜けるには Ctrl-[ を押す。

コマンドラインモード[編集]

ウインドウの下部に一行のテキストを入力できる。

コマンドや関数の実行、検索、置換処理など多様な処理を行うことができる。

ノーマルモードから :(コロン)、/(スラッシュ)、?(はてな)を押すことで移行できる。

:       :=> コロンに続けてコマンドを打ち込み、Enterで実行する。補完機能あり。
/       :=> 前方検索を行う。正規表現が利用できる。インクリメンタルサーチ可。
?       :=> 後方検索を行う。正規表現が利用できる。インクリメンタルサーチ可。
!, !!   :=> 外部コマンドでフィルタ処理する。

ヘルプテキストには:sortなどとコロンで始まるテキストで書いてある。

Exモード[編集]

コマンドラインモードの変種。コマンドラインモードとは次の点で異なる。

  • 毎回 :(コロン)を押す必要がない。
  • コマンド実行後もExモードに留まる。
  • コマンドを実行するごとに画面が更新されない。
  • 通常のコマンドライン編集機能が使えない。
  • マップと短縮入力が使えない。

ノーマルモードからQ、gQでExモードに移行できる。gQの場合はコマンドライン編集や補完が使えるようになる。 Exモードを抜けるときは :vi[sual] を使う。

起動と終了[編集]

起動方法[編集]

コマンドライン上で、次のコマンドを実行する。 下のコマンドはUNIXのコマンドラインで動作するが、Windows版も基本的に同様のコマンドで起動できる。

$ vim [options] [file ..]     # fileを編集する
$ vim -g [options] [file ..]  # gvimでfileを編集する
$ gvim [options] [file ..]    # gvimでfileを編集する

詳しいコマンドラインオプションについて知りたいならば、次のいずれかのコマンドを実行する。

$ man vim     # vimのマニュアルを読む
$ vim --help  # vimのヘルプを出力

vimについて初めて学ぶ者は次のコマンドを実行するとチュートリアルを起動できる。

$ vimtutor [-g] [language]  # -gオプションでgvim起動。languageにjaを入れると日本語でチュートリアルを始められる。

以下にvim関連のコマンドをまとめる。

vim
通常起動。デフォルト。
ex
Exモードで起動。ノーマルモードに戻るには ":vi" を実行。 -eオプションを付けた場合と同じ。
view
読み取り専用(リードオンリー)モードで起動。-Rオプションを付けた場合と同じ。
gvim, gview
GUIバージョン。-gオプションを付けた場合と同じ。
evim, eview
GUIバージョンのイージー(簡単)モードで起動。-yオプションを付けた場合と同じ。
rvim, rview, rgvim, rgview
制限版。-Zオプションを付けた場合と同じ。
vimtutor
チュートリアルを起動。

実際には、vimコマンド以外はほぼvimのオプションで代替できるので、環境によっては用意されていないこともある。

終了方法[編集]

Vimを終了させたい時は、

:q        # バッファを一つ閉じる。:quitと同じ。他に開いているウインドウがあればアプリケーション自体は閉じない。
:qa       # 開いているバッファを全て閉じる。:qall :quitallと同じ。

保存して終了させたい時は、

:wq       # 現在のバッファを保存して閉じる。
:x        # :wqとほぼ同じ。:wqと違い、変更点があるときのみ書き込む。
:wqa      # 全てのバッファを保存して閉じる。
:xa       # :wqaとほぼ同じ。:wqaと違い、変更点があるときのみ書き込む。

中断したい時は、ノーマルモードで Ctrl-Z を押す。gVimではタスクバーに最小化されるが、端末版ではプロセスをバックグラウンドに移す。

また、ノーマルモード時にZQで保存せずに終了、ノーマルモード時にZZで保存して終了となる。

カスタマイズ[編集]

Vimはviとは異なり、個人の好みに合わせて徹底的にカスタマイズできる。vi は環境非依存で特に設定せずに使うのが一般的だが、プログラマ向けのvimは設定を多用して各個人向けに使いやすくするのが一般的である。その設定の範囲は基本的なインタフェースから、キーボードマクロまで幅広い。

Vim は、独自のスクリプト言語(vimスクリプト、":help vim-script-intro")を持っており、カスタマイズ処理は主にこの言語で記述する。www.vim.org や個人のブログ上で、便利なスクリプトがプラグインとして公開されている。Vimスクリプトは強力だが一方で、モードの概念を織り交ぜて書くことになるため、文法が複雑で分かりにくく見づらいという欠点を持つ。このため、プラグインを書くのはある程度慣れが必要となる。カスタマイズ用のスクリプトは、コンパイル時にVimに追加できるPerlPythonRubyなどのインタフェースを使用して記述することもできる。

Vimの初期設定は主に ~/.vimrc(ヴィムアールシー、Windows版では _vimrc)というテキストファイルで行い、~/.vim ディレクトリ配下(Windows版はvimfiles)に多数のプラグインスクリプトを配置することによって機能拡張を実現する。個人の設定は多種多様だがほとんどのユーザーは、~/.vimrc にはオプション (":help options") やキーマップの変更などを記述する。

setコマンドでオプションを設定する。 オプションの名前にnoを付けるとその否定になる。 また、"(ダブルクオーテーション)より右側はコメントになる。

set nocompatible                 " viと互換モードにしない
set number                       " 行番号を表示する
set autoindent smartindent       " プログラミング用に自動インデントする
set expandtab                    " タブ (\t) をスペースに変換する
set nobackup                     " バックアップをとらない。
syntax on                        " ハイライトシンタックス機能を有効にする
" キーマップの変更。
nnoremap ; :
vnoremap ; :
inoremap <C-a> <C-o>0
inoremap <C-e> <C-o>$


~/.vim以下はある程度用途ごとにディレクトリが分けられている。 ダウンロードしたプラグインは指定されたディレクトリに置くことで動作する。

細かい説明はVim-users.jp - Hack #34: Vimのディレクトリ構成を参照。

~/.vimrc
~/.vim/
    after/
    autoload/
    compiler/
    colors/
    doc/
    plugin/
    ftdetect/
    ftplugin/
    syntax/
    indent/
    macros/

プラグイン[編集]

プラグインのVimスクリプトは、上記の適当なディレクトリに配置することで動作する。

しかし、Vim.org からダウンロードしてきた第三者によるプラグインファイル(しばしば複数のファイルから成る)は、自分で解凍して複数のディレクトリに配置しなければならなかった。このため、自分の書いた設定ファイルと、第三者の書いたプラグインとが混在し、プラグインが増加するにつれて管理が複雑化することが多かった。

特に後者はバージョンもすべて自己責任で更新する必要があったため、プラグイン管理は決して快適なものではなかった[独自研究?]

プラグインの管理[編集]

Vimball による管理[編集]

プラグイン管理の負担を軽減するために、Vimがバージョン7になると、Vimball(ヴィムボール)と呼ばれる機能が搭載されるようになった。これはプラグインをVimballという形式に圧縮して単一のファイルでプラグインを提供しようとするものである。このVimballを使うことでプラグインのインストール・アンインストールを簡便に行う事ができ、プラグインのインストール面での負担が軽減された。Vimball形式で提供されているプラグインをインストールするには、Vim.org からダウンロードしてきたファイル(拡張子 .vba)を手持ちのVimエディタで開き、:so % を実行することで自動的に展開されて、インストールできる。このときインストールしたプラグイン情報も記録されるのでアンインストールもできる。

アンインストールするには、次のコマンドを打ち込むことでアンインストールできる。

:RmVimball [プラグインの名前]

その他の使用法については:h vimballで確認できる。

しかしながらVimball形式に対応したスクリプトが非常に少なかったことや、プラグインのバージョン管理まで面倒を見てくれなかったことから、プラグイン管理の負担が劇的に改善されることはなく、現在は主流の管理方法ではなくなってきており、Gitを用いた方法に移行しつつある。

GitHub による管理[編集]

2000年代後半になるとプラグインの管理方法は大きく変わりはじめた。それはGitHubの登場によって多数のプラグインが、分散型バージョン管理システムGitで管理されるようになってきたためである。GitHubが個人に無料でスペースを提供したため、自分の設定ファイル群である ~/.vim (dotvim, vimfiles) をGitHub上で管理する者が増加し、プラグイン管理もすべてGitで管理したいという需要が出てきた。

まず、pathogen(パソゲン、Tim Pope氏作)というプラグインが登場した。これは自分の~/.vim全体をGitで管理し、第三者プラグインはGitのsubmodule機能によって管理するようにした。これのプラグインの登場により、第三者プラグインと自分の書いたプラグインとを別々に管理できるようになったことで、Vimball形式の時の問題点はほとんど解決され、プラグイン管理の負担をかなり劇的に低減させることに成功した。さらにGitを使った利点として、自分で好きなようにフォークして変更できることも大きなメリットであった。

しかし、Gitによってプラグインの更新が楽になったとはいえ、その更新もインストールもプラグインごとに管理しなければならない点は変わらなかった。2010〜2011年になると、その部分を自動化し改良したVimスクリプトが登場した。それが、Vundle(バンドル、gmarik氏作)とNeobundle.vim(ネオバンドル、Shougo氏作)である。これらのスクリプトを用いることで使いたいプラグインの名前やレポジトリを列挙するだけで、コマンドひとつで一括インストール、一括更新が可能になった。これに呼応する形でVim.orgにアップロードされていたプラグインもその殆どがGitHub上に移植された。

これらのプラグイン管理用のプラグインが整備されたことにより、初期(数年前まで)の管理方法に比較するとVimのプラグイン管理の環境は格段に向上した。

代表的なプラグイン[編集]

Vim.orgでホストされているVimのプラグインは、もともと小さな機能をもったスクリプトが多かった。しかしながら、2000年代後半のここ数年でVimには高性能で多機能なプラグインが急激に増加してきた。その背景には、コンピュータの高性能化や、Vimスクリプトのハックが進んだことなどが挙げられる。特に、Shougo作による、Unite、Vimshell、Neocomplcacheなどはその代表例である[要出典]

下に、汎用的で代表的なプラグインを挙げる(順不同)

Align
テキストの整形
Unite
ファイル一覧、最近開いたファイル一覧、バッファ一覧、リファレンス表示など、様々なものを表示できる。自分で拡張したり、他のプラグインとの連携ができる。
Neocomplcache
Vimの補完機能を向上させる。拡張することでコードスニペットの補完ができる。
Vimshell
Vim内でシェルをエミュレートする。
Vimfiler
フル機能のファイラー
Emmet
HTMLの編集にZen Codingが使えるようになる。zencodingの後継プラグイン。
Eregex
Vimの分かりにくい正規表現を、Perlなどで使われる一般的な正規表現で書けるようにする。
Quickrun
現在開いているバッファのコードを、シェルに戻ることなく手軽に実行できる。
Vim-ref
Vimでperldocやpydocなどのリファレンスを手早く閲覧できる。
Surround
Vim 7から導入されたテキストオブジェクトを便利に扱うことができる。
NERD-Commenter
コードのコメントアウトを手軽に行える。
NERD-Tree
ディレクトリ構造をツリー表示する。gVimではマウス操作にも対応している。
Project
IDEのようにファイルの管理を強化する。
YankRing
レジスタ(クリップボード)に履歴の機能を追加する。
Matchit
「対応するカッコに飛ぶ」の機能を強化し、例えばRubyのendでも移動できるようにする。
Calendar
Vimにカレンダーを搭載。日記も書くことができる。
Buftabs
ステータスライン上にバッファの一覧を表示する。
Syntastic
ファイルを保存すると自動的に構文チェックなどを行い、エラーのある箇所を表示する。サポートするプログラミング言語も豊富。

機能[編集]

概要[編集]

Vim の機能:行数、Unicode、構文のハイライト、テキストの折り畳み
Vim7 における新機能:スペルチェックとドロップダウン付きの単語補完

viというとコンパクトでありながら豊富なテキスト操作手段をもつエディタという印象が一般に持たれている。いっぽうVimは多くのコマンドを追加しており、オムニ補完や構文強調、リアルタイムスペルチェックなどの機能も次々と導入されており、もはやviのもつコンパクトという性質は引き継いでいない。

  • 設定によりオリジナルのviとほぼ互換の操作を実現 (set compatible)
  • マルチバッファ
  • 任意個数ウィンドウ分割(縦、横)
  • リスト辞書を備えた独自のスクリプト言語を実装している
  • スクリプト中からPerlRubyPythonTclMzSchemeを呼び出せる
  • 登録略語補完(アブリビエイション)
  • 動的単語補完
  • 多段階アンドゥ
  • C / C++JavaRubyPythonなど40以上の言語に対応したオートインデント
  • ctagsを利用したタグジャンプ
  • クラッシュしても、ほぼ直前のファイルを復元可能
  • カーソル位置や開いているバッファ状態の保存・復元(セッション機能)
  • 2つのファイルの差分を色分けし、同期スクロールして表示するdiffモード
  • リモートファイル編集
  • オムニ補完(インテリセンスと同等の機能)

画面分割とタブ[編集]

VimはGNU screenと同じように画面分割して編集することができる。左右分割して2つのファイルを差分表示してみせたり、上下分割で上にヘルプ表示しながら編集を進めたりできる。ウインドウの移動には Ctrl-w w、 Ctrl-w j[khl] を用いる。

Vim 7からはタブ表示機能が加わり、さらに多くのファイルを同時編集可能になった。タブの移動にはgt 、gTを用いる。

この機能をさらに便利にするものとしてUniteやVimshell、quickrunなどのプラグインが開発されている。特にUniteはこれまでのバッファ管理プラグインを包括する多機能なプラグインとして注目を浴びている[誰によって?]

補完機能[編集]

Vimには補完機能が備わっており、挿入モード中 Ctrl-n 、Ctrl-p で文中の単語をポップアップ表示、補完することができる。コマンドモード中でも補完をさせることができる。近年ではneocomplcacheというプラグインを用いることで、ほぼ何でも補完対象にすることができるようになっている。

ハイライト[編集]

Vimは非常に多くのテキストファイル、ソースコードを色分けできる。デフォルトで400以上の文法を色分けすることが可能であり、この数は他のテキストエディタと比較して群を抜いている。特にViやVimを用いてUNIXの設定ファイルを編集するケースが多いことから/etc以下のかなりのファイルが色分け表示される。

また、正規表現を駆使することで必要に応じて拡張できる。その設定ファイルは一般的に~/.vim/syntax以下に収められる。さらに色分けのカラースキームも自由に変更でき、自分の好みに応じて様々に使い分けることができる。

ヘルプ機能[編集]

Vim のヘルプ: 検索方法 ':helpgrep evim'。下が見つかった場所で、上が選択した場所に対するヘルプテキスト

Vimにはテキスト形式の膨大なドキュメントが存在する。また、Vimでは問題の解決法を見付けるためのさまざまな機能が提供されている。構文のハイライトやVim独自のヘルプの文法によって、キーワードはさまざまな色で強調表示される。キーボードショートカットウェブブラウザのようにキーワード間を行き来することができる。更にGUI版ではマウスを使っても移動することができる。ユーザが楽に解決法を探すための機能は他にもあり、そのうち主なものは ':helpgrep' コマンドである。これを用いれば、ユーザはヘルプ全体の中から単語を探すことができ、':cwindow' でもう一つのウィンドウ内にヒットしたものが表示され、それによってヘルプ内の一致する箇所へ移動することができる。Vimのヘルプ機能でヒットリスト内から更に単語を探すこともできる。

プログラマ支援[編集]

Vimはプログラマによって開発されたプログラマのためのエディタである。Vimにはプログラマの仕事を楽にするための機能が備わっている。統合開発環境と同様、ソースファイルを編集した後Vimから直接コンパイルできる。コンパイルエラーが発生したときには、もう一つのウィンドウが表示される。エラーメッセージに基づいて、直接他のウィンドウ内に表示されたソースファイルのエラーの出た箇所へジャンプすることができる。構文のハイライトやテキストの折り畳みもプログラマにとって役立つ機能として挙げられる(':help quickfix'参照)。

ファイルの差分[編集]

Vim を使ったファイルの比較

しばしば行われる作業に異なるバージョンのファイルの比較がある。Vimには2つのバージョンのファイルを2つのウィンドウに並べて、差分をさまざまな色で表示する機能がある。変更された行や挿入された行は色を付けて強調され、変更のない範囲は折り畳まれて表示される。図では変更された行は赤で、挿入された行は青色で表示されている。折り畳まれた箇所は灰色になっている。UNIXではvimdiffコマンドでもこの機能を利用できる。

スクリプト言語[編集]

カレンダーのスクリプト(左)とそのソース(右)を表示したVim

Vimには独自のスクリプト言語が備わっており、それを用いればマクロで対応するのが難しいような複雑な作業を自動化できる。Vimのスクリプトは-sオプションを付けて起動したり、いわゆるプラグインディレクトリ内に入れたりすれば読み込まれる。':source' コマンドでもスクリプトが読み込まれ実行される。Vimスクリプトの例にVimの設定ファイルがあり、UNIXやLinuxでは .vimrc、Windows では_vimrcというファイル名になっていることが多い。このファイルは起動時に自動的に実行される。

Vimのスクリプト言語ではコマンドラインコマンドが全て利用でき、':normal' コマンドで通常モードの全てのコマンドも使うことができる。この言語では数と文字列の2つのデータ型が用意されている。ブール値は数で実現され、0は偽でそれ以外の数は真と評価される。また、重要な比較演算子や基本的な算術演算子もある。制御構造も用意され、if文while文が使える。さらにユーザが自前の関数を定義でき、100を超える定義済み関数を利用できる。作成したスクリプトはデバッグモードでテストすることができる。

弱点[編集]

  • 1行が長いと処理が非常に遅くなる
  • 独自のスクリプト言語の仕様が煩雑。自動実行系、ウィンドウ管理系のコマンドが貧弱
  • C-1 など、マッピングできないキーが存在する(キャラクタ端末アプリケーションであるための制限)

Vimと似た操作体系をもつアプリケーション[編集]

脚注[編集]

  1. ^ a b Thompson, Tim (2000年3月26日). “Stevie”. 2010年12月27日閲覧。
  2. ^ Tim Thompson (1987年6月28日). “A mini-vi for the ST”. comp.sys.atari.st. (ウェブリンク). 2010年12月27日閲覧。 
  3. ^ Tony Andrews (1988年6月6日). “v15i037: Stevie, an "aspiring" VI clone for Unix, OS/2, Amiga”. comp.sources.unix. (ウェブリンク). 2010年12月27日閲覧。 
  4. ^ a b c d e f Moolenaar, Bram (2002年1月15日). “Vim, an open-source text editor”. 2005年10月24日閲覧。
  5. ^ Textfiles.com
  6. ^ Official Vim Manual, Version 4 summary” (2004年3月12日). 2008年8月6日閲覧。
  7. ^ Official Vim Manual, Version 5 summary” (2004年1月17日). 2008年8月6日閲覧。
  8. ^ Official Vim Manual, Version 6 summary” (2004年3月12日). 2008年8月6日閲覧。
  9. ^ Official Vim Manual, Version 7 summary” (2006年5月10日). 2008年8月6日閲覧。
  10. ^ Groups.google.com
  11. ^ ":help sys-file-list"
    Vim Online: Downloads”. 2007年1月7日閲覧。
  12. ^ Mac OS X Manual Page For vim(1)”. 2010年1月12日閲覧。
  13. ^ Vim Touch”. 2012年8月31日閲覧。
  14. ^ App Store - Vim”. Apple Inc.. 2012年2月5日閲覧。

関連項目[編集]

参考文献[編集]

外部リンク[編集]