Vimモード · 1 min read · Jan 21, 2026
Vimの互換モードと非互換モード
これまで、Vimを中心にしたチュートリアルでは、エディタのModeline機能や、プラグインを使用してVimの機能セットを拡張する方法について説明しました。しかし、皆さんもご存知の通り、Vimは多くの組み込み機能を提供しています。そこで、さらに話を進めるために、このチュートリアルでは、エディタを起動できるモードについて説明します。
ただし、その前に、このチュートリアルで言及されているすべての例、コマンド、および指示は、Ubuntu 14.04でテストされており、使用したVimのバージョンは7.4です。前述のVimモードを正しく理解するためには、エディタの初期化プロセスの重要な側面を理解する必要があります。
システムおよびローカルvimrc
問題の側面は、Vimが起動されると、システム全体のデフォルト初期化を実行するために、システムレベルの’vimrc’ファイルをエディタが検索することです。
このファイルは通常、$VIM/vimrcパスにありますが、そうでない場合は、Vim内で:versionコマンドを実行することで正確な場所を見つけることができます。例えば、私の場合、コマンドが生成した出力の関連する抜粋は以下の通りです:
...
...
...
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
2nd user vimrc file: "~/.vim/vimrc"
user exrc file: "$HOME/.exrc"
fall-back for $VIM: "/usr/share/vim"
...
...
...したがって、システム’vimrc’ファイルは確かに$VIM/vimrcにありますが、私のマシンでは$VIM環境変数が設定されていないことを確認しました。したがって、その場合は、上記の出力に示されているように、$VIMのフォールバック値があり、私の場合は/usr/share/vimです。このパスで’vimrc’を検索したところ、ファイルが存在することを確認しました。これが私のシステムvimrcであり、前述のように、Vimが起動されるときに読み込まれます。
このシステムvimrcが解析された後、エディタはユーザー固有(またはローカル)の’vimrc’ファイルを探します。ローカルvimrcの検索順序は、環境変数VIMINIT、$HOME/.vimrc、環境変数EXINIT、および’exrc’という名前のファイルです。通常、存在するのは$HOME/.vimrcまたは~/.vimrcであり、これがローカルvimrcとして扱われます。
どの互換性について話しているのか
Vimの互換モードと非互換モードについて話しているので、これらのモードがどのような互換性を有効または無効にするのかを知っておく価値があります。これについては、まずVimがV i IM provedの略であることを知っておくべきです。そして、フルネームが示すように、エディタはViエディタの改善版です。
改善版とは、Vimが提供する機能セットがViのそれよりも大きいことを意味します。2つのエディタの違いをよりよく理解するには、こちらを参照してください。
したがって、Vimの互換モードと非互換モードについて議論しているとき、私たちが話している互換性はVimのViとの互換性です。互換モードで実行されると、Vimのほとんどの拡張機能や改善が無効になります。ただし、このモードではVimが単にViをエミュレートするわけではなく、基本的にViエディタの動作方法にデフォルトオプションを設定します。
非互換モードは、言うまでもなく、VimがVi互換でなく動作し、ユーザーにすべての拡張機能/改善/機能を利用可能にします。
これらのモードを有効/無効にする方法は?
Vimで:help compatibleコマンドを実行してみてください。次の構文が表示されるはずです:
'compatible' 'cp' boolean (default on, off when a |vimrc| or |gvimrc|
file is found)説明によれば、互換モードはデフォルトでONですが、vimrcファイルが見つかるとOFFになります。しかし、どのvimrcについて話しているのでしょうか?答えはローカルvimrcです。:help compatibleコマンドが提供する詳細に深入りすると、次の行が見つかります。これにより、状況がより明確になります:
実際には、|vimrc|または|gvimrc|ファイルが存在する場合、VimはVimのデフォルトを使用し、それ以外の場合はViのデフォルトを使用します。 (*注:これはシステム全体のvimrcまたはgvimrcファイル、または|-u|引数で指定されたファイルには適用されません*).したがって、実際に何が起こるかというと、Vimが起動されると、最初にシステムvimrcファイルが解析されます。この時、互換モードはデフォルトでONです。次に、ユーザー(またはローカル)vimrcが見つかると、非互換モードがONになります。:help compatible-defaultコマンドは、次のように明確に示しています:
Vimが起動すると、'compatible'オプションはONです。これは、Vimが初期化を開始する際に使用されます。しかし、ユーザーvimrcファイルが見つかるか、現在のディレクトリにvimrcファイルが見つかるか、または"VIMINIT"環境変数が設定されると、'nocompatible'に設定されます。デフォルトの動作をオーバーライドし、エディタがシステムvimrcファイルを解析するときに非互換モードをONにしたい場合は、次のコマンドをそのファイルの最初に追加することで実行できます:
:set nocompatibleその他の便利な詳細
これらのモードに関するその他の便利な詳細は以下の通りです:
ただし、.vimrcファイルが見つかった瞬間に'compatible'を設定またはリセットすることには副作用があります:マッピングは遭遇した瞬間に解釈されます。これは、""のようなものを使用する際に違いを生じさせます。マッピングが'compatible'の特定の値に依存している場合は、マッピングを与える前にそれを設定またはリセットしてください。
上記の動作は、次の方法でオーバーライドできます:
- "-N"コマンドライン引数が指定された場合、'nocompatible'が使用されます。vimrcファイルが存在しない場合でも。
- "-C"コマンドライン引数が指定された場合、'compatible'が使用されます。vimrcファイルが存在する場合でも。
- "-u {vimrc}"引数が使用された場合、'compatible'が使用されます。
- 実行可能ファイルの名前が"ex"で終わる場合、これは"-C"引数が指定されたかのように機能します:'compatible'が使用されます。vimrcファイルが存在する場合でも。これは、Vimが"ex"として起動されたときに"ex"のように動作するようにするために行われました。 確かに、VimのVi互換モードをONにする必要がある状況に直面することは少ないかもしれませんが、それでもエディタの初期化プロセスについて無知であるべきではありません。結局のところ、この知識があなたの助けになるかもしれません。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。