Vim

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

1. 概要
-----

Vimはオランダ人のプログラマー、ブラム・ムールナーによってAmiga向けに開発された。のちにWindowsを含むさまざまな環境に移植され、特にUnix系オペレーティングシステム  ではEmacsと並んで広く使用されているテキストエディタとなっている。

Vimという名称は、オリジナルのviエディタに近づくことを目標として、開発当初Vi IMitationの略とされていた。しかし、やがてviを超えることを目指してVi IMprovedとされるようになり、今日ではオリジナルのviを大きく上回る機能を持つに至っている。

VimはGUIを必要とせずCUIでも動くため、Unix系OSに標準のエディタとして搭載されていることが多い。コンピュータの大容量化と高速化にともない、2000年以降のOSでは viに代わってより高機能な Vim、あるいはその機能劣化版が標準装備されるようになってきている。このため、コマンドライン上でviを実行すると代わりにVimが起動するディストリビューションが一般的となった。

Vimは基本的にCUIで動作するが、GUIで動くVimのことを特にGVimと呼び区別している。マウス操作など、X GUI  /Windows GUI  であることを生かしたGVimにしかない機能もある。

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

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

vi系  のキーボード操作法は、エディタをはじめ、各種ビューワや、ブラウザのプラグインにいたるまでその後のソフトウェアの操作方法に強い影響を与えていった。

Vimの大きな特徴として高いカスタマイズ性を挙げることができる。オリジナルのviがどんな環境でも設定なしですべての機能が利用できる万人向けのエディタだったのに対し、Vimでは設定ファイルを用いることでより個人の好みにあったエディタにカスタマイズすることができる。エディタの詳細設定は主に ~/.vimrcというファイルに書いておき、起動時にVimがそれを読み込むことで設定が反映される仕組みになっている。Vimは独自のスクリプト言語  を用いて自身の機能を拡張することができ、かなり幅広い機能強化を行うことが可能である。有志らによって書かれた有用なスクリプトはプラグインとして [1] 上や個人のブログ上で公開されている。~/.vimフォルダ以下にこれらのプラグインファイルを置くことで機能を拡張できる。

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

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

2. モード切替
--------

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

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

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

その他のモード

選択モード
文字選択モード
行選択モード
矩形選択モード
enモード
オペレータ待機モード
置換モード
仮想置換モード

挿入ノーマルモード
挿入ビジュアルモード
挿入セレクトモード

文字ビジュアルモード
行ビジュアルモード
矩形ビジュアルモードもっとも簡単な使い方の例としては、

コマンドラインモードでファイルを開き、
ノーマルモードでカーソルを移動させ、
挿入モードでテキストを入力し、
コマンドラインモードでファイルを保存する。

2.1. ノーマルモード
------------

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

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

2.1.1. 演算子未解決モード
----------------

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

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

2.2. ビジュアルモード
-------------

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

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

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

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

2.2.1. セレクトモード
--------------

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

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

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

2.2.2. 挿入ビジュアルモード
-----------------

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

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

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

2.2.3. 挿入セレクトモード
----------------

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

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

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

2.3. 挿入モード
----------

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

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

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

2.3.1. 挿入ノーマルモード
----------------

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

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

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

2.3.2. 置換モード
------------

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

2.4. コマンドラインモード
---------------

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

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

ノーマルモードから keypress、keypress、keypressを押すことで移行できる。



2.4.1. enモード
------------

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

毎回 :}}を押す必要がない。
コマンド実行後もenモードに留まる。
コマンドを実行するごとに画面が更新されない。
通常のコマンドライン編集機能が使えない。
マップと短縮入力が使えない。ノーマルモードから Q}}、g}} Q}} でenモードに移行できる。g}} Q}} の場合はコマンドライン編集や補完が使えるようになる。 enモードを抜けるときは :viを使う。

3. 起動と終了
--------

3.1. 起動方法
---------

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

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

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

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

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

3.2. 終了方法
---------

Vimを終了させたい時は、

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

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

4. 機能
-----

4.1. 概要
-------

前身であるviが機能を絞ったコンパクトな印象を一般に持たれているのと比べると、Vimはかなり巨大なアプリケーションである。 Vimはバージョンを重ねるごとに積極的に機能を追加する傾向があり、実装されている機能の種類、数は公開されているエディタの中でもトップクラスに多い。ただし設定によりviに近い操作性に戻すことも可能であり、いくつかのLinuxディストリビューションでは機能を絞ったvimをviとして配布しているものもある。

以下に示す機能の中には設定でオフにしたり、好みに合わせてカスタマイズ可能なものが多く、必ずしも説明と一致しない場合があることに注意。

4.2. テキスト編集機能
-------------

テキストエディタとして基本的な機能は揃っている。

多段階アンドゥとリドゥ
コピー＆ペースト
豊富なカーソル移動
豊富な選択方法
スペルチェック

4.2.1. オペレータと範囲指定
-----------------

オペレータとは、コピー、削除、変更、選択といった操作の意味を決定づけるキーである。ただし、このキー単独では操作は完結せず、ここに範囲を指定するコマンドが続くことで、単語の削除や、カッコ内の選択、パラグラフのコピーなどの多彩なアクションが可能になる。

範囲を指定するコマンドには、移動系のキーや、テキストオブジェクトがある。

Vimでは、その場で適切なオペレータと範囲指定コマンドの組み合わせを考え、実行していくことで編集を行っていく。

例えば、コマンドggVGは、分解すると「一番上に移動して行選択を一番下まで」となるので、「すべて選択」の意味になる。



4.2.2. マーク
----------

文章中の特定の位置にマークを付け、カーソルを移動する際の目印にすることができる。

ノーマルモード中にm}}+ を入力すると、現在のカーソル位置を記憶する。

ノーマルモード中に`}}+ を入力すると、先ほど記憶したカーソル位置にジャンプする。

4.2.3. レジスタ
-----------

レジスタとは、テキストの断片を一時保存しておく場所のことで、クリップボードとほぼ同じ概念だが、複数個のスペースが用意されている点が異なる。アルファベット一文字に1スペースが割り当てられており、ノーマルモード中に"}}+ を入力することでレジスタにアクセスできる。例えば"}} a}} y}} $}}でレジスタaにカーソルから文末までヤンクすることができ、"}} a}} p}} で貼り付けられる。

4.2.4. マクロ
----------

マクロとは、操作を記録して別の場所で同じ操作を繰り返し行うときに有用な機能である。

ノーマルモード中にq}}+ を入力すると記録状態になり、再びq}}を打ち込むまでの間のタイプしたキーが保存される。

ノーマルモード中に@}}+ を入力すると記録された操作を再生できる。

4.2.5. ジャンプ
-----------

Vimではカーソル位置が大きく動き、バッファ間でも頻繁に移動することが多い。そのため、カーソル位置の履歴を記憶している。

直前のカーソル位置に戻りたい場合ノーマルモードでCtrlを押す。逆に進みたい場合はCtrlを押す。

外部コマンドctagsでタグリストを予め作成しておけば、カーソル下の単語の意味や関数の定義を調べたい場合に、Ctrlを押すことで、その定義元にジャンプすることができる。これを特にタグジャンプと呼ぶ。

4.3. インデントとタブ
-------------

ファイルタイプごとに、適切な自動改行を行うことができる。Vimではデフォルトで40以上のプログラミング言語の自動改行に対応している。自動入力されるスペースの数は任意に決めることが可能で、後述するハイライト機能によって可視化することもできる。 また、タブ文字は:expandtabでスペースに一括変換することもできる。

4.4. 検索・置換・ソート
--------------

バッファ内の特定のテキストを検索および置換することができる。検索にマッチした単語はハイライトできる。 検索単語には正規表現を用いることができ、複雑なテキストにもマッチさせることができる。

ノーマルモード中に/}}または?}}を押すと、バッファ内の単語を検索できる。

ノーマルモード中に*}}または#}}を押すと、カーソル下の単語を検索できる。

コマンドモードで :s/OLD/NEW/ を入力することで OLDをNEWに置換することができる。

コマンドモードで :sort を入力することでテキストを行単位で並べ替えることができる。

4.5. 補完
-------

挿入モード中にCtrl, Ctrlを押すと、文中の単語をポップアップ表示、補完することができる。 コマンドモード中でも補完はでき、機能名がうろ覚えでもサジェストしてくれる。 プラグインを用いれば、コードスニペットや、時刻、関数名などの自由度の高い補完も可能になる。

4.6. ファイル管理
-----------

保存時に自動バックアップ
エディタが強制終了した場合でも、直前の場所から編集を再開できる。

4.7. ユーザーインターフェイス
-----------------

行番号やルーラーを表示
ステータスバーの表示内容変更
ビジュアルベル
カーソル行の強調
フォントの変更
アイコン付きツールバー
マウスの利用

4.8. 強調表示
---------

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

このシンタックスの定義ファイルは、正規表現を駆使することで必要に応じて拡張できる。 また、色分けのカラースキームも自由に変更することができ、自分の好みに応じて様々に使い分けることができる。

4.8.1. 折り畳み
-----------

プログラマ支援機能の一つで、長い段落・関数などは折りたたんで、コンパクトに表示したほうが俯瞰しやすくなる。 いくつかの折り畳み方法があり、自分で範囲を指定して折り畳むことも可能だが、自動で判別して折り畳ませることもできる。

4.9. マルチバッファ・ウインドウ分割・タブページ
--------------------------

一つのVimウインドウの中で、複数のテキストを同時並行で編集することができる。 ウインドウを上下左右、任意の個数に分割して使い分けることができる。 これを利用して、片側にファイルツリーを表示したり、シェルを表示したり、ヘルプを表示したりすることが可能になる。

4.9.1. 差分表示
-----------

ファイルの変更点を分かりやすく比較するために、ウインドウを左右に分割して差分表示を行う機能がある。 このとき変更点は色分け・折り畳みがなされ、左右画面ともに同時スクロールする。

4.9.2. Quickfix
---------------

統合開発環境と同様、ソースファイルを編集した後Vimから直接コンパイルできる。コンパイルエラーが発生したときには、Quickfixと呼ばれるもう一つのウィンドウが表示される。エラーメッセージに基づいて、直接他のウィンドウ内に表示されたソースファイルのエラーの出た箇所へジャンプすることができる。

4.10. キーマッピングの変更・コマンド定義
-----------------------

ノーマル・挿入・ビジュアル・コマンドモードのキーマッピングを自由に変更できる。 特に長くて記憶できないが有用なキーバインドを短く定義し直すのに使われる。 独自の処理を行うコマンドも定義することができ、役に立つものはプラグインとして公開されている。

4.11. ヘルプ
---------

Vimにはテキスト形式の膨大なドキュメントが存在する。:helpgrepか:helpコマンドを用いれば、ユーザはヘルプ全体の中から単語を探すことができる。このヘルプテキストはあちこちにタグ名が記載されており、Wikiのようにタグジャンプを駆使して分からない単語の説明に移動できる。

5. カスタマイズ
---------

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

en は、後述する独自のスクリプト言語を持っており、カスタマイズ処理は主にこの言語で記述する。http://www.vim.org/}} や個人のブログ上で、便利なスクリプトがプラグインとして公開されている。

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

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

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

細かい説明は[2]を参照。

5.1. Vim script
---------------

Vimには独自のスクリプト言語が備わっており、それを用いればマクロで対応するのが難しいような複雑な作業を自動化できる。Vimの設定ファイル類はすべてVim scriptであり、変更すれば挙動を細かくカスタマイズできる。通常はユーザーのホームディレクトリ以下の設定ファイル群でこれらの設定を上書きして利用する。Vimのコマンドモードとは、このVim scriptを一行実行しているにすぎない。:normalを使うことでノーマルモードのコマンドもVim script上で利用できる。

Vim scriptは、JavaScriptに近い言語仕様を採用しており、while文やif文などの一般的な制御構文から、リストやハッシュなどのデータ構造までをサポートしているが、オブジェクト指向言語のように厳密なクラスや継承の概念はない。しかしながら、モード概念と絡んでいることもあって文法が複雑であり、文法や挙動に一貫性が無い部分もある。このため、Vim scriptでバグの少ないプラグインを書くのは慣れが必要となる。また、Vim scriptは、PythonやLisp、Luaなどといった他のスクリプト言語と比較すると、パフォーマンスが悪いケースが多いが、これはスクリプトを行ごとに逐次実行していることによる。

コンパイル時に en に追加できる en や en や en などのインタフェースを使用すれば、Vim scriptの中でインラインに他言語を利用することもできる。ただし、Vimの機能にアクセスするためにはVim scriptの関数をevalするなどして間接的に呼び出すしかなく、完全な代替にはなっていない。

Vim scriptはVimのカスタマイズ性の中核を担っているが、上述した文法や性能の問題から弱点を認め、他言語への転換を図ることを目的の一つとしてNeovimがフォークしている。

5.2. Vim9 script
----------------

Vimバージョン9.0から新しくVim9 script言語が追加された。パフォーマンス向上を主な目標としており、スクリプトをコンパイルすることで10～100倍の実行速度向上が期待されている。また、文法がより一般的なプログラミング言語に近くなった。

旧来のVim scriptのサポートは継続される。

6. プラグイン
--------

プラグインのVim scriptは、~/.vim以下の適当な場所に配置することで動作する。Vim.orgでホストされているVimのプラグインは、もともと小さな機能をもったスクリプトが多かった。しかしながら、2000年代後半以降Vimには高性能で多機能なプラグインが急激に増加してきた。その背景には、コンピュータの高性能化や、Vim scriptのハックが進んだことなどが挙げられる。しかし、Vim.org からダウンロードしてきた第三者によるプラグインファイルは、自分で解凍して複数のディレクトリに配置しなければならなかった。このため、自分の書いた設定ファイルと、第三者の書いたプラグインとが混在し、プラグインが増加するにつれて管理が複雑化することが多かった。

6.1. プラグインの管理
-------------

6.1.1. Vimball による管理
--------------------

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

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

6.1.2. GitHub による管理
-------------------

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

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

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

これらのプラグイン管理用のプラグインが整備されたことにより、それ以前の管理方法に比較するとVimのプラグイン管理の環境は格段に向上した。

7. 歴史
-----

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



7.1. 移植された環境
------------

enエディタはもともとen上でしか動作しなかったが、enは enだけでなく、en、en、en、en、IBM en と OS/390、en、en、QNX、en、en、en、en、en、enなど、多数のプラットフォームに移植されてきた。

また、独立した移植版がenとiOSでも動作する。

8. Vimの派生エディタ
-------------

Viをモデルとした派生物にはnviやElvisがあり、中でも最も機能的に発展したのがVimである。そのVimをモデルとしたプロジェクトもいくつかあるが、Vimの機能群は巨大なため、全てを模倣するのは困難であることから、結局Viクローンと同程度の機能実装にとどまっている。逆にVimの機能を制限して操作の難易度を低くしたCreamという派生物もある。

8.1. Neovim
-----------

現在、派生物の中で最も精力的に開発されているプロジェクトはNeovim であり、Vimのリファクタリングプロジェクトであることから、基本的な部分はVimとほぼ変わらないものの、新機能の追加やもはや使われなくなった機能の削除などが行われている。GUIアーキテクチャの改善や、スクリプトの高速化、他アプリケーションへの埋め込みが容易になることが謳われている。

9. Vimと似た操作体系をもつアプリケーション
------------------------

ViおよびVimの操作体系は、数多くのソフトウェアに継承もしくはエミュレートされている。ここでは一部の例を挙げる。

他のテキストエディタにおいてもショートカットキーの薄いラッパーのような形でプラグイン化される例が多い。

Atom
Sublime Text
Emacs
Eclipse
Kate
Xcode
Visual Studio Code また、片指で移動ができることはPDF・画像ビューワーやブラウザと相性がよい。

Mozilla Firefox
Google Chrome
GmailやGoogle DriveなどGoogleが提供するWebサービスは，Vimに似たショートカット機能を持つ。
Vivaldi
Safari
W3m - テキストブラウザ
MuPDF - PDF閲覧
feh - 画像閲覧
bash, zsh, fish等のシェル

10. 脚注
------

10.1. 注釈
--------

10.2. 出典
--------

11. 参考文献
--------

Steve Oualline『Vi IMproved‐Vim完全バイブル』高橋則利訳、技術評論社、2004年5月、ISBN 4-7741-2018-9

12. 関連項目
--------

テキストエディタの一覧
VimConf

13. 外部リンク
---------

[4]
[5]
[6]
[7]