Vim の modeline で fileencoding を設定すべからず
Vim の modeline でそのファイルのエンコーディングを指定しようとしてはいけない。
Vim の modeline はファイルを読みこむ時ではなくファイルを読み込んだ後に有効になるので、ファイルに vim: fenc=utf-8
などと書いてあってもそれはファイルを読み込む際には考慮されない。つまりファイルを開く際の文字化け防止には使えない。むしろ、ファイルを開く際に文字化けしてしまった後に modeline でエンコーディングが再設定された後、そのままファイルを編集して保存してしまうと、文字化けした部分のデータが壊れてしまう。従って modeline で fileencoding (fenc) を設定してはいけない。
ちなみに、fileencoding オプションが各ファイルをディスクに読み書きする際のエンコーディングを指定するのに対し、encoding オプションは vim がファイルの編集中にプログラム内部で使用するエンコーディングを指定する。前者はファイルごとに異なるものを指定できるのに対し、後者は vim プログラム全体で共通の (グローバルな) 設定である。encoding は vimrc で起動時に一回設定するだけで、あとはいじる必要はない (もちろん modeline で設定してもいけない)。また fileencodings (fencs) オプションはファイルを開く際のエンコーディングの候補を指定する。自分は vimrc で set fileencodings=ucs-bom,utf-8,iso-2022-jp,sjis,cp932,euc-jp,cp20932
と設定している。普通の日本語環境ではこれでほとんど問題ないと思う。前に書いてあるエンコーディングの方が優先されるので値を並び替えたくなるかもしれないが、ucs-bom だけは必ず最初に置くこと。
| 固定リンク
コメント