Vim

set nocompatibleはもういらない


半ばおまじないと化したset nocompatible

.vimrcを書くときに、僕達初心者は色々なサイトを巡って「これが良さそうだな」とか「これはみんな書いてるから書いとこう」とか考えて、設定をちまちま書いていく。

そのなかで、この設定を書く人も多いだろう。


.vimrc

set nocompatible


このコマンドは、vi互換の動作を無効にするコマンドである。


vim-jp/issuesの中での言及

さて、この設定について、こんなissueがあった。

compatible について解説したほうが良いか? #471

それに関連する形で、このURLが張られている。(issue内URLはリンク切れのため同等記事掲載)

vim-jp » Hack #179: ‘cpoptions’, ‘compatible’について知る

また、vim-jpによる日本語マニュアルには、こう書いてある。


'compatible' 'cp' 'nocompatible' 'nocp'

'compatible' 'cp' 切替 (既定では オン、ファイル|vimrc|または|gvimrc|が発見されたらオフ)

グローバル

{Vi にはない}

VimをなるべくVi互換にするか、便利な機能を使えるようにするかを決定する。

これは、特別な種類のオプションである。このオプションの値が変更されると、それに伴って他のオプションも変更されるからだ。

*注意: このオプションを変更すると、予期しない効果が数多く現れる。キーマップの解釈は変わり、アンドゥも違った方法で行われる、等々。このオプションをファイル vimrc 内で設定するなら、一番先頭に置くこと。

既定ではオンなので、その他のオプションにはViの既定値が使われる。この既定値は、VimをViと全く同じように使うことを望み、オプション 'compatible'について知りもしない、または知りたいとも思わない人たちのためのものである。

Vimが立ち上がる間にファイル |vimrc| または |gvimrc| が見つかると、このオプションはオフにされ、その他のオプションで変更されていないものは、みなVimの既定値に設定される。要するに、Vimはファイル |vimrc| または|gvimrc| が存在するならVimの既定値を、存在しないならViの既定値を使うのだ ( Note: システム全体用のファイルvimrc や引数|-u|で指定されるファイルは関係ないことに注意)。|compatible-default| と |posix-compliance| も参照。


http://vim-jp.org/vimdoc-ja/options.html#'compatible'より

どうやら、.vimrcが存在するする時点でnocompatibleが成されているのと同じらしい。

ならば、自前の.vimrcがあるのなら、わざわざ先頭でset nocompatibleする必要はないということだ。


元記事

.vimrcのset nocompatibleのお話とごめんなさいな話