formatoptionsがうまく設定されない...?
ファイル名が*.cであると,croqlになる.
それ以外だとtcqになる.
だけど,ファイル名がc.vimだと,croqlになる.
ファイル名がそれ以外のc.fooや,c.tmpだと,tcqになる.
ちなみに,formatoptionsのデフォルト値は"tcq".
$VIMRUNTIME/ftplugin/c.vimには次のようにある.
" Set 'formatoptions' to break comment lines but not other lines, " and insert the comment leader when hitting <CR> or using "o". setlocal fo-=t fo+=croql
# $VIMRUNTIMEは/usr/share/vim/current
つまりこれは,*.cではじまるファイルに対しては
$VIMRUNTIME/ftplugin/c.vimの設定がロードされるということだろう.
これはファイルタイププラグインそのままだから,理解できる.
しかしこれは,$HOME/.vimrcに
set formatoptions-=r set formatoptions-=o
と書いておいても同じ.
$HOME/.vim/ftplugin/c.vim(後の/home/XXX/.vim内のファイルに該当する)に
setl formatoptions-=ro
とか
setl formatoptions& formatoptions-=ro
と書いても同じ.
つまり$HOME/.vimrcで変更できないようだ.
echo &runtimepathは
/home/XXX/.vim,/usr/share/vim/current/vimfiles,/usr/share/vim/current,/usr/share/vim/current/vimfiles/after,/home/XXX/.vim/after
# XXXはわたしのユーザ名
となっている.
/home/XXX/.vimが入っているので,ftpluginの下の*.vimファイルは読み込まれるはず.
読み込まれる順番はどうなっているのだろう.
もしかしたら,/home/XXX/.vimが最初にあるのは問題かもしれない.
試しに最後に表示されている/home/XXX/.vim/after/ftplugin/c.vimを作り,このファイルに
setl formatoptions-=ro
と書いてみた.
すると,*.cでset &formatoptionsがcqlになった.
ということは,
多分&runtimepathは最初の見つかったものからロードされるのではなくて,
全部検索され,最後に見つかった設定になる.
ことになる.
つまり,上記の例で言うと
の順番で最後の設定が有効になることになる.
そして,$HOME/.vimrcに書かれた設定は,システムvimrcよりは後に有効にされるが,
/usr/share/vim/currentよりは前に位置する.
したがって,
$HOME/.vimrcの設定はシステムvimrcシステムのftpluginより弱いことになる.
これは...違和感を感じる.
ちなみに:versionは次の通り.
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
user exrc file: "$HOME/.exrc"
system gvimrc file: "$VIM/gvimrc"
user gvimrc file: "$HOME/.gvimrc"
system menu file: "$VIMRUNTIME/menu.vim"
fall-back for $VIM: "/etc"
f-b for $VIMRUNTIME: "/usr/share/vim/current"
また,この問題に悩まされるのか;
*1:id:pneumaster:20081202とid:pneumaster:20081213