$home/vimfiles/ftplugin/ruby.vim の設定が反映されない

普段はインデント・tabキー押し、両方で幅 4のタブを挿入しているが、ruby の世界ではインデントはスペース 2つで表すのがスタンダードのようなので、$home/vimfiles/ftplugin/ruby.vim に設定を書く。

"インデント・タブ関連
setlocal shiftwidth=2 softtabstop=2

"tab to spaces
setlocal expandtab

今までに書いた *.rb ファイルを開いて、設定が反映されているか :set で確かめてみたところ、全てのオプションに変化がなかった。

スクリプト内に

echo 'foo'

を書き込むと実行されるので、スクリプトが読み込まれてないわけではないようだ。$home/vimfiles/after/ftplugin/ に当該スクリプトファイルを入れても結果は同じ。

原因は $home/_vimrc 内の以下の記述。

" folding 保存
set viewdir=$home/vimfiles/view
au BufWritePost * mkview
au BufReadPost  * loadview

この設定をする事によって、折りたたみの状態を保存する事ができるのだが、同時にカーソルの位置や:set, :setl で設定したオプションも保存されてしまう。結果、既存のファイルを開くと filetypeplugin の設定を上書きしてしまい、設定が反映されていないように見える。

解決策

  • 既存のファイルを開いたときは手打ちで :set filetype=ruby としてもう一度設定を読み込ませる。
  • $home/vimfiles/view/ 内のファイルを消去。

また同じ失敗を繰り返しそうなので、_vimrc を以下のように変更して、オプションの変更は保存しないようにした。不便なら元に戻す。

" folding 保存
set viewoptions=folds,cursor
set viewdir=$home/vimfiles/view
au BufWritePost * mkview
au BufReadPost  * loadview