formatoptionsの件,一応確認した過程メモ
$HOME/.vim/after/ftpluginは,システムのftpluginを丸々読み替えるのではなく,
上書きするかどうかの確認過程.
システムのc.vimには,わたしが分かる範囲で試せるオプションがなかったのでvim.vimを使用しました.
システムのvim.vimには次の2つの設定があります.
setlocal fo-=t fo+=croql (snip) if &tw == 0 setlocal tw=78 endif
これを使って,
- formatoptionsはafterで上書きされる
- textwidthはこれを引き継ぐ
かどうかを調べます.上記のようになれば確認されたことになります.
まず,初期状態の確認です.
$HOME/.vim/after/ftplugin/vim.vimは空のファイル(というか無い).
この状態で("vim"の付かないファイル名として)fooを編集したときの
- verbose setlocal fo?と
- verbose setlocal tw?の結果は,
formatoptions=tcq Last set from ~/.vimrc
textwidth=0 Last set from ~/.vimrc
となり,foo.vimでは,
formatoptions=croql Last set from /usr/share/vim/vim72_gui/ftplugin/vim.vim
textwidth=78 Last set from /usr/share/vim/vim72_gui/ftplugin/vim.vim
となりました.
では,$HOME/.vim/after/ftplugin/vim.vimに
setlocal fo-=ro
と書いてみることにします.
同じくfoo,foo.vimそれぞれについて各オプションを確認してみます.
まず,foo.
formatoptions=tcq Last set from ~/.vimrc
textwidth=0 Last set from ~/.vimrc
となり,foo.vimでは,
formatoptions=cql Last set from ~/.vim/after/ftplugin/vim.vim
textwidth=78 Last set from /usr/share/vim/vim72_gui/ftplugin/vim.vim
となりました.
確かに$HOME/.vim/after/ftplugin/vim.vimに書いたオプションのみが上書きされることが確認できました.
しかし,*.cでは$HOME/.vimrcよりシステムのftplugin/c.vimの方が強い.
一般ユーザが,オプションの値をどうしても変えたい場合には,
~/.vim/after/ftplugin/c.vimに設定を書かないとなりません.
どんなファイルタイプでも適用されるような設定はどこに書けばよいのでしょう.
.vimrcには書けないということになってしまった.
今回のようにformatoptionsにrとoが入っているのが,Cに関わらずわたしは好きではないので,
そのような設定ファイルに出会う度にafterにファイルを作らなければなりません...
# 今まで,.vimrcに書けばfoからroが外れたように感じましたが,
# vim72をカスタムしてインストールしてから,挙動が変わった気がするので
# コンパイルまちがったかなあ...
↑
:help startupに初期化時のロードされる順番が書いてあった.
.vimrcより$VIMRUNTIME/ftpluginが後に読み込まれる現在の状態が正しいらしい.