半ばおまじないと化したset nocompatible
.vimrc
を書くときに、僕達初心者は色々なサイトを巡って「これが良さそうだな」とか「これはみんな書いてるから書いとこう」とか考えて、設定をちまちま書いていく。
そのなかで、この設定を書く人も多いだろう。
setnocompatible
このコマンドは、vi互換の動作を無効にするコマンドである。
vim-jp/issuesの中での言及
さて、この設定について、こんなissueがあった。
compatible について解説したほうが良いか? #471
それに関連する形で、このURLが張られている。(issue内URLはリンク切れのため同等記事掲載)
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
する必要はないということだ。