Vimにおける文字コード・改行コードの設定まとめ
gvim/vimとかCygwinとか日本語とかいろいろ環境が変わると文字化けしたりしなかったりでいらいらする。なので,文字コードと改行コードの設定をまとめた。下の方の3行の設定を書けばおそらくどの環境でも左右されずに日本語を表示できると思う。
1.13 文字コード・改行コード
1.13.1 文字コード
encoding,
enc
Vim内部で使われる文字エンコーディングを設定する。
fileencoding,
fenc
カレントバッファのファイルの文字エンコーディングを設定する。
fileencodingとencodingが異なるとき,書き出しのときに変換が行われる。fencの値で書き出すようになる?
fileencodings,
fencs
fencが空のときにはここの値から設定される。既存のファイルを編集するときに考慮する文字エンコーディングのリストを設定する。この値の先頭から順番に文字コードを使おうとし,エラーが出ると次の文字コードを試す。うまくいけば,その値をfencの値にする。全部失敗すれば,fencは空になり,そのときはencodingの値が使われる。
termencoding,
tenc
ターミナルで使われるエンコーディング名。空のときはencodingの値が使われる。
日本語に使われる値
utf-8
iso-2022-jp
euc-jp
sjis
cp932
1.13.2 改行コード
fileformat,
ff
ファイルを読み込んだ入,書き込んだりするときに使う<EOL>(改行コード)を設定する。
dos:
<CR><NL>
unix:
<NL>
mac:
<CR>
fileformats,
ffs
想定する改行(<EOL>)の種類を指定する。fencsと同様に先頭から順番に確認して設定される。複数列挙するときはコンマ,で区切る。
上記を考慮すると,以下のように設定しておくとどの環境でも問題ないと思われる。
“Charset,
Line ending
set
encoding=utf-8
set
fileencodings=utf-8,iso-2022-jp,euc-jp,sjis,cp932
set
fileformats=unix,dos,mac
1.13.3 Cygwinでの文字化け対策
1.13.3.1 gvimのメニューの文字化け
.vimrcを編集していたら,gvimのメニューが文字化けしてしまった。以下のサイトの情報で解決した。
参考:vimの文字化けについて
– fudist
https://sites.google.com/site/fudist/Home/vim-nihongo-ban/mojibake
ファイルエンコーディングを誤認識する場合
なお公式で配布されているWindowsの
gvimのメニューが化けるのはiconvがないからで、それ以外は
vimrc(.vimrc)内で
filetype
plugin on の後に内部エンコーディングを変更するよう設定してしまった場合が多いようです。
上の方に文字コードの設定を書けば解決。
1.13.3.2 Cygwinのvimの日本語の文字化け
gvimではきちんと表示されるのに,Cygwinのvimでだけ日本語が文字化けするファイルがあった。以下のサイトを参考にした。
参考:vimによる日本語文字コード自動判別と文字コード変換
[AFFRIT
Portal] http://itcweb.cc.affrc.go.jp/affrit/faq/tips/vim-enc
fencs=cp932を設定するとうまくいった。複数形なので注意。
:set
encoding=utf-8
:set
fileencodings=iso-2022-jp,euc-jp,sjis,utf-8,cp932
:set
fileformats=unix,dos,mac