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 誕生のきっかけは、ブラム・ムーリナー[1]が1980年代の終わりにAmigaコンピュータを購入したことによる。彼はエディタとしてviを使おうとしたが、当時Amiga用のviは存在しなかった。そこでviのクローンStevieスティービーを元にしてVimのバージョン1.0を開発した。最初の第一目標はviの機能をまねることだったので、その頃のVimVi IMitationviの模造品)の略とされていた。1991年にVimのバージョン1.14がいわゆる「Fred Fish ディスク #591」というAmiga用のフリーウェア集に収録され、公開されることとなった。

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

移植された環境[編集]

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

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

その他[編集]

誕生から25年近く経ち、機能追加を重ねることで、Vimはソースコードが30万行を超える巨大で煩雑なアプリケーションになった。 この巨大化したコードを刷新して、現代的なアーキテクチャに作り変えようとNeovimプロジェクトが2014年2月にフォークした。 プラグインの互換性を保ちながら、より自由度の高い機能を提供できるようにすること、内部構造をスリム化しメンテナンスしやすくすることが目的として挙げられている。 このプロジェクトはbountysource.comで3万ドル強の出資金を集めることに成功している[18]

モード切替[編集]

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

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

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

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

その他のモード

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

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

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

ノーマルモード[編集]

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

キーボード操作 コマンド表現 機能
j j 下にカーソル移動
k k 上にカーソル移動
h h 左にカーソル移動
lエル l 右にカーソル移動
d w dw 単語を削除
y y yy 一行コピー
Ctrl+f 1ページ下にスクロール

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

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

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

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

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

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

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

ノーマルモードから下記の操作でこのモードに移行できる。その区別は、

キーボード操作 コマンド表現 機能
v v 文字単位のビジュアルモードに移行
V V 行単位のビジュアルモードに移行
Ctrl+v 矩形選択ビジュアルモードに移行
g v gv 前回選択した範囲をもう一度選択

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

セレクトモード[編集]

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

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

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

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

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

例えば Ctrl+o vCtrl+o VCtrl+o Ctrl+v を実行するとこのモードに入る。

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

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

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

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

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

挿入モード[編集]

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

キーボード操作 コマンド表現 機能
i i カーソル位置の前から挿入モードを開始する。
Iアイ I 行の先頭から挿入モードを開始する。
a a カーソル位置の後から挿入モードを開始する。
A A 行末から挿入モードを開始する。
o o カーソルの下に空行を挿入し、その先頭から挿入モードを開始する
O O カーソルの上に空行を挿入し、その先頭から挿入モードを開始する

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

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

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

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

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

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

置換モード[編集]

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

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

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

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

ノーマルモードから :コロン/スラッシュ?クエスチョンマークを押すことで移行できる。

キーボード操作 機能
: コロンに続けてコマンドを打ち込み、 Enter キーで実行する。補完機能あり。ヘルプテキストには「:sort」などとコロンで始まるテキストで書いてある。
/ 前方検索を行う。続けて検索したい文字列のパターンを正規表現で入力し、 Enter キーで検索を開始する。インクリメンタルサーチ可。
? 後方検索を行う。続けて検索したい文字列のパターンを正規表現で入力し、 Enter キーで検索を開始する。インクリメンタルサーチ可。
! 外部コマンドでフィルタ処理する。続けて実行するコマンド文字列を入力し、 Enter キーでコマンド実行を開始する。
Exモード[編集]

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

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

ノーマルモードから Qg QExモードに移行できる。g Q の場合はコマンドライン編集や補完が使えるようになる。 Exモードを抜けるときは :vi(または :visual)を使う。

起動と終了[編集]

起動方法[編集]

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

コマンド 概要
vim [options] [file ..] ファイルを編集する
vim -g [options] [file ..] ファイルを編集する
gvim [options] [file ..] ファイルを編集する

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

コマンド 概要
man vim vimのマニュアルを読む
vim --help vimのヘルプを出力

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

コマンド 概要
vimtutor [-g] [言語]
  • -g オプションで gvim 起動。
  • 言語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 Enter :q バッファを一つ閉じる。:quit と同じ。他に開いているウインドウがあればアプリケーション自体は閉じない。
: q a Enter :qa 開いているバッファを全て閉じる。:qall:quitall と同じ。

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

: w q Enter :wq 現在のバッファを保存して閉じる。
: x Enter :x :wq とほぼ同だが、書き込みが行われるのは変更点がある時だけである。
: w q a Enter :wqa 全てのバッファを保存して閉じる。
: x a Enter :xa :wqa とほぼ同じだが、書き込みが行われるのは変更点がある時だけである。

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

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

カスタマイズ[編集]

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

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

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

set コマンドでオプションを設定する。 オプションの名前に no を付けるとその否定になる。

コマンド 意味
set nocompatible vi と互換モードにしない
set number 行番号を表示する
set autoindent smartindent プログラミング用に自動インデントする
set expandtab タブ文字をスペース文字に変換する
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でホストされているVimのプラグインは、もともと小さな機能をもったスクリプトが多かった。しかしながら、2000年代後半以降Vimには高性能で多機能なプラグインが急激に増加してきた。その背景には、コンピュータの高性能化や、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 の機能:行数、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. ^ : Bram Moolenaar
  2. ^ ST editor for VI enthusiasts の頭文字から命名
  3. ^ a b トンプソン, ティム (2000年3月26日). “Stevie”. 2010年12月27日閲覧。
  4. ^ ティム・トンプソン (1987年6月28日). “A mini-vi for the ST”. comp.sys.atari.st. (ウェブリンク). 2010年12月27日閲覧。 
  5. ^ トニー・アンドリュース (1988年6月6日). “v15i037: Stevie, an "aspiring" VI clone for Unix, OS/2, Amiga”. comp.sources.unix. (ウェブリンク). 2010年12月27日閲覧。 
  6. ^ : Vi IMitation
  7. ^ a b c d e f Moolenaar, Bram (2002年1月15日). “Vim, an open-source text editor”. 2005年10月24日閲覧。
  8. ^ Textfiles.com
  9. ^ Official Vim Manual, Version 4 summary” (2004年3月12日). 2008年8月6日閲覧。
  10. ^ Official Vim Manual, Version 5 summary” (2004年1月17日). 2008年8月6日閲覧。
  11. ^ Official Vim Manual, Version 6 summary” (2004年3月12日). 2008年8月6日閲覧。
  12. ^ Official Vim Manual, Version 7 summary” (2006年5月10日). 2008年8月6日閲覧。
  13. ^ groups.google.com
  14. ^ :help sys-file-list
    Vim Online: Downloads”. 2007年1月7日閲覧。
  15. ^ Mac OS X Manual Page For vim(1)”. 2010年1月12日閲覧。
  16. ^ Vim Touch”. 2012年8月31日閲覧。
  17. ^ App Store - Vim”. Apple Inc.. 2012年2月5日閲覧。
  18. ^ Neovim: vim's rebirth for the 21st century”. 2014年5月31日閲覧。
  19. ^ delete の意
  20. ^ word の意
  21. ^ ヴィムアールシー、Windows版では _vimrc
  22. ^ Windows版では vimfiles

関連項目[編集]

参考文献[編集]

外部リンク[編集]