f

アーカイブ

2014-06-04

Vimにおける文字コード・改行コードの設定まとめ


gvim/vimとかCygwinとか日本語とかいろいろ環境が変わると文字化けしたりしなかったりでいらいらする。なので,文字コードと改行コードの設定をまとめた。下の方の3行の設定を書けばおそらくどの環境でも左右されずに日本語を表示できると思う。

1.13 文字コード・改行コード

1.13.1 文字コード

encoding, enc
Vim内部で使われる文字エンコーディングを設定する。


fileencoding, fenc
カレントバッファのファイルの文字エンコーディングを設定する。
fileencodingencodingが異なるとき,書き出しのときに変換が行われる。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
ファイルエンコーディングを誤認識する場合
なお公式で配布されているWindowsgvimのメニューが化けるのはiconvがないからで、それ以外は vimrc(.vimrc)内で filetype plugin on の後に内部エンコーディングを変更するよう設定してしまった場合が多いようです。


上の方に文字コードの設定を書けば解決。


1.13.3.2 Cygwinvimの日本語の文字化け

gvimではきちんと表示されるのに,Cygwinvimでだけ日本語が文字化けするファイルがあった。以下のサイトを参考にした。
参考: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

0 件のコメント:

コメントを投稿