Vimには、モードラインという概念があります。
詳しくは、
:he modeline
とすれば、ヘルプが出てきますが、これをよく使うのは
ソースコードを記述するときや、ドキュメントを記述しているときです。
ソースを書いた後、他のVIMで見たときにそのときに使用していたオプションと
同じ設定を必ず適用して編集したいときがあります。(タブ数など)
そういう時は、文書の先頭あたりで以下のように記述します。
vim:set ts=4 sw=4 et ws is nowrap ft=java fenc=cp932 ff=dos:
この部分がモードラインです。これを書いておくと設定内容が違う
別々のVIMで見ても常に上で指定したオプションがそのドキュメントを
開いた際に上書き設定されます。
ちなみに、上記のモードラインは以下の設定を行います。
- タブは4(ts=4)(tabstop)
- シフト幅も4(sw=4)(shiftwidth)
- タブ文字はスペースに展開(et)(extendtab)
- 循環検索をON(ws)(wrapscan)
- インクリメンタルサーチをON(is)(incsearch)
- 一行が長い場合でも折り返さない(nowrap)
- ファイルタイプはjava(ft)(filetype)
- ファイルのエンコーディングはCP932(ShiftJIS) (fenc)(fileencoding)
- 改行コードはwindows形式(CRLF) (ff)(fileformat)
実際にソースにモードラインを記述する際は、そのままだと構文エラーに
なるので、その言語のコメントで囲みます。
[java]
// vim:set ts=4 sw=4 et ws is nowrap ft=java fenc=cp932 ff=dos: もしくは /* vim:set ts=4 sw=4 et ws is nowrap ft=java fenc=cp932 ff=dos: */
[html, xml]
<!-- vim:set ts=4 sw=4 et ws is nowrap ft=java fenc=cp932 ff=dos: -->
[perl, python, ruby]
# vim:set ts=4 sw=4 et ws is nowrap ft=java fenc=cp932 ff=dos:
また、モードラインはmodelineオプションが設定されている場合
効果を持ちます。たいていは、デフォルトでONになっているでしょう。
さらに、VIMはドキュメントがオープンされた際にmodelinesオプションで設定された
行数分モードラインを探しにいきます。デフォルトでは5などの値になっているはずです。