gvim を使っている場合、それは .vimrc ではなくて .gvimrc に書くべき設定かもしれない。ウィンドウや IM なんかの設定に関しては可能性が高い。
事のはじまり
MacVim の kaoriya さん版を利用しているんだけど input mode 移行時にいちいち IM が off にされてしまう。
これは由々しき事態だ、何とかしなければ。
:help コマンドと Google 検索で 'imdisableactivate' が悪さをしていることがわかったぞふはは。 .vimrc に set noimdisableactivate
を書けば一件落着だ。
と、意気揚々と変更して :source ~/.vimrc
してみたものの変わらない。
なぜだ。
おかしい。
鍵は Vim のスタートアップ時の挙動
.vimrc に書いているんだから適用されてないはずがない。適用後にどこかでさらに変更されているはずだ。
まず .vim/after の中身をチェック。該当なし。
となると system 設定ファイルが怪しいな。 :cd $VIM
して :vim /imdisableactivate/ **
まで一連の流れ。しばらく待つ。と、結果が 1 件。 gvimrc ? えっ ?
確か system の設定ファイルが読まれてから local の設定ファイルが読まれるはずだったから…、あれ、おかしい。
ここで :help start
まで打って補完させる。 startup て項目があった。 :help startup
。…順番違うじゃん。
GUI の設定ファイル読み込みはほぼ最後だった
ヘルプには設定ファイルが読み込まれる順番が書いてあった。上から順に実行されるってことは :help system-vimrc
、 :help .vimrc
、 :help init-gui
の順だな。
どうも以下の順番になるらしい。
- system .vimrc
- local .vimrc
- system .gvimrc
- local .gvimrc
そうか、 local .vimrc で設定した option を system .gvimrc が変更していたわけか。
じゃあ設定を .gvimrc に移して、よし動いた。
文字入力なのに GUI 関係あるの ?
でも文字入力なのに GUI だとかは関係ないはずだよなー、と思って調べていたら :help imdisable
に以下の一文を発見。
{only available when compiled with the |+xim|,
|+multi_byte_ime| or |global-ime| features, always
available in MacVim}
あー、 GUI 版は XIM 経由だから GUI 側の設定なのね。 CUI 版は terminal だとかからの入力で賄ってるわけか。
納得した。
というわけで
'guioptions' とか明らかに GUI まわりの設定や IM まわりの設定は .gvimrc に書かないと反映されない、ということがわかった。