Vim(ヴィム)は、viエディタから派生し、多機能に進化した
テキストエディタです。プログラマーのブラム・ムールナー氏によって開発され、当初はviの模倣を目指していましたが、後にviを凌駕する機能を持つようになりました。
概要
Vimは、CUI(キャラクターユーザーインターフェース)環境での動作を基本としていますが、GUI版(G
Vim)も存在します。特に
Unix系OSでは、
Emacsと並んで広く利用される
テキストエディタです。
Vimの名称は、当初「
Vi IMitation(viの模倣)」の略でしたが、viを超える機能を目指し「
Vi IMproved(viの改良)」と呼ばれるようになりました。現在では、オリジナルのviを大きく上回る機能を持っています。
VimはCUIで動作するため、
Unix系OSに標準のエディタとして搭載されることが多く、2000年以降のOSでは、viの代わりに高機能な
Vimやその機能削減版が標準装備されるようになりました。そのため、コマンドラインでviを実行すると、代わりに
Vimが起動するディストリビューションが一般的です。
GUI版の
VimはG
Vim(ジーヴィム)と呼ばれ、マウス操作など、GUI環境ならではの機能も利用できます。
viと同様に、キーボードのみで操作することを前提としているため、キーボードだけで全ての操作が可能です。
Vimの操作は、モードを使い分け、小さなコマンドを組み合わせることで様々な機能を実現します。他のエディタとは操作方法が大きく異なるため、慣れるまで時間がかかりますが、慣れると軽快なテキスト編集が可能です。
Vimは、プログラムコードやシステム設定ファイルの編集に特化しており、プログラマーやシステム管理者によく利用されています。
vi系のキーボード操作は、エディタだけでなく、ビューワーやブラウザの
プラグインなど、様々なソフトウェアの操作方法に影響を与えました。
高いカスタマイズ性
Vimの大きな特徴の一つとして、高いカスタマイズ性が挙げられます。viが環境に依存せず、設定なしで全ての機能を利用できるのに対し、
Vimでは設定ファイルを使い、個人の好みに合わせたカスタマイズが可能です。
設定は、主に~/.vimrc(Windows版では%USERPROFILE%\_vimrc)に記述し、
Vim起動時に読み込まれます。
Vimは、独自の
スクリプト言語(
Vim script)を用いて機能を拡張でき、様々な
プラグインが公開されています。
Vimは、多言語、多コーデックに対応していますが、日本語などのマルチバイト文字の扱いに不便な点があるため、英文編集での利用が一般的です。
ライセンスは、GPL互換のチャリティウェアで、フリーでオープンソースなソフトウェアとして配布されています。
Vimを起動すると、
ウガンダの子供たちへの援助を募るメッセージが表示されます。
モード切替
Vimは、複数のモードを切り替えながらテキスト編集を行います。この独特な機能は、初心者には難しいと感じるかもしれません。他のエディタも、テキスト挿入とコマンド指示を区別するモードを持っていますが、
Vimはモードごとにキー割り当ても切り替わる点が独自です。これにより、マウスやメニューを使わず、キーボードだけで全ての編集が可能です。
Vimには6つの基本モードと5つの派生モードがありますが、実質的に使われるのは以下の4つです。
ノーマルモード:編集コマンドを入力するモード。カーソル移動や編集操作が可能です。エディタ起動時はこのモードで始まり、他のモードからESCキーで戻ることができます。
演算子未解決モード:ノーマルモードの派生モードで、削除やコピーなどの範囲指示を待つ状態です。例えば、ノーマルモードでdキーを押すとこのモードに入ります。
ビジュアルモード:テキストの選択を行うモードです。選択後、コピーや削除などの操作を実行できます。
挿入モード:テキストを入力するモードです。i、a、oなどのキーでノーマルモードから切り替えることができます。
その他のモード
選択モード:ビジュアルモードに似ていますが、印字可能な文字を入力すると、選択範囲が削除され、挿入モードになります。
Exモード:コマンドラインモードの変種で、コマンドを連続して実行できます。
起動と終了
Vimは、コマンドラインから`vim [ファイル名]`で起動します。詳しいオプションを知りたい場合は、`vim --help`で確認できます。
Vimを終了するには、ノーマルモードで`ZZ`(保存して終了)または`ZQ`(保存せずに終了)を使用します。中断したい場合は、`Ctrl+z`を押します。
機能
Vimは、
テキストエディタとしての基本的な機能を備えていますが、特に以下のような特徴があります。
多段階アンドゥ/リドゥ
コピー&ペースト
豊富なカーソル移動
豊富な選択方法
スペルチェック
オペレータと範囲指定:オペレータ(削除、コピーなど)と範囲指定を組み合わせることで、複雑な編集操作が可能です。
マーク:文章中の特定の位置にマークを付け、カーソル移動の目印にできます。
レジスタ:テキストの断片を一時的に保存する場所です。
マクロ:操作を記録し、繰り返し実行する機能です。
ジャンプ:カーソル位置の履歴を記憶し、前後の位置に移動できます。また、タグジャンプで関数の定義元に移動できます。
インデントとタブ:ファイルタイプごとに適切な自動インデントが可能です。タブ文字はスペースに変換できます。
検索・置換・ソート:正規表現を用いたテキスト検索や置換、ソートが可能です。
補完:挿入モードやコマンドモードで、単語やコマンドの補完が可能です。
ファイル管理:自動バックアップや編集中の状態を保存する機能があります。
ユーザーインターフェイス:行番号、ルーラー、ステータスバーなどの表示設定を変更できます。
強調表示(シンタックスハイライト):ソースコードやテキストファイルを見やすく色分けします。
折り畳み:長い段落や関数などを折り畳んで表示できます。
マルチバッファ・ウインドウ分割・タブページ:複数のテキストを同時に編集できます。また、ウィンドウを分割したり、タブページで切り替えたりできます。
差分表示:ファイルの変更点を比較表示できます。
Quickfix:コンパイルエラーが発生した際に、エラー箇所にジャンプできます。
キーマッピングの変更・コマンド定義:キーマッピングを自由に変更したり、独自のコマンドを定義できます。
ヘルプ:
Vimには膨大なドキュメントがあり、キーワード検索で必要な情報を探せます。
カスタマイズ
Vimは、viとは異なり、個人の好みに合わせて徹底的にカスタマイズできます。カスタマイズは、主に独自の
スクリプト言語(
Vim script)を用いて行います。設定ファイル(~/.vimrc)や
プラグインによって、インターフェースからキーボードマクロまで、幅広くカスタマイズできます。
Vim script
Vimには独自の
スクリプト言語(
Vim script)が備わっており、複雑な作業を自動化できます。
Vimの設定ファイルや
プラグインは、すべて
Vim scriptで記述されており、必要に応じて変更できます。
Vim scriptは
JavaScriptに似た言語仕様を採用していますが、文法や挙動に一貫性がない部分もあります。
Vim9 script
Vimバージョン9.0からは、新しい
Vim9 scriptが追加されました。これは、パフォーマンス向上を主な目的としており、スクリプトをコンパイルすることで、実行速度が大幅に向上します。
Vimの
プラグインは、~/.vim以下の特定のディレクトリに配置することで動作します。
プラグインには様々な機能があり、
Vimの機能を大幅に拡張することができます。
以前は、
プラグインの管理が煩雑でしたが、現在では
GitHubと
プラグイン管理ツールを利用することが一般的です。
Vimball:プラグインを単一のファイルに圧縮して提供する機能ですが、現在はあまり使われていません。
GitHub:
プラグインの多くが
GitHubで管理されており、
Gitを使って
プラグインを管理できます。pathogenのような
プラグインを使うことで、自分の設定ファイルと
プラグインを別々に管理できるようになりました。
Vundle:プラグインの名前やレポジトリを記述するだけで、プラグインのインストールや更新を自動化できます。
歴史
Vimは、ブラム・ムールナー氏がAmigaコンピュータを購入したことがきっかけで開発されました。当初は、viのクローンとして開発されましたが、その後、高機能なテキストエディタとして発展しました。
移植された環境
Vimは、AmigaOSだけでなく、様々なプラットフォームに移植されています。また、AndroidやiOSでも動作する移植版が存在します。
Vimの派生エディタ
Viをモデルとした派生物にはnviやElvisがありますが、最も発展したのがVimです。また、Vimをモデルとしたプロジェクトもいくつか存在しますが、Vimの機能を完全に模倣するのは困難です。逆に、Vimの機能を制限して操作を簡単にしたCreamという派生物もあります。
Neovim
Neovimは、Vimのリファクタリングプロジェクトであり、Vimとほぼ同じように使用できます。Neovimは、新機能の追加や不要な機能の削除、GUIアーキテクチャの改善、スクリプトの高速化など、様々な点でVimを改善しています。
Vimと似た操作体系を持つアプリケーション
ViおよびVimの操作体系は、他の多くのソフトウェアにも影響を与えています。
Atom
Sublime Text
Emacs
Eclipse
Kate
Xcode
JetBrains IDEs
Visual Studio Code
また、PDFや画像ビューワー、ブラウザなどでも、Vimライクな操作が可能なものがあります。
Mozilla Firefox
Google Chrome
Gmailや
Google Driveなどの
Googleのサービス
Vivaldi
Safari
W3m
MuPDF
feh
bashなどのシェル