vim資料一覧

vimだけでファイルの文字コードを変更する

2016/11/06更新

対応バージョン: 7.4

ファイルの文字コードを変更したい場合、iconvやnkf、lvなどのツールを使うことが多いと思うがこれらのツールが使えない(使いたくない)状況の時はvimエディタだけで文字コードの変更が可能である。

方法は簡単で、対象のファイルをvimで開いた上で以下のように文字コードの指定をした上で保存すればよい。

:set fileencoding=<文字コード>
あるいは
:set fenc=<文字コード> (fileencodingの短縮形)
文字コードをUTF-8に変更
:set fenc=utf-8
文字コードをEUC-JPに変更
:set fenc=euc-jp
文字コードをShift-JISに変更
:set fenc=shift_jis

vimがファイルを開いた際に文字化けする場合はvimが扱える文字コードのリストに対象ファイルの文字コードが含まれてないことが原因である。

vimが扱える文字コードはset fileencodings(短縮版はfencs)で確認できる。ファイルを開いた時にこのリストの先頭から文字コードがマッチングされていき、最初に変換できた文字コードがfencに設定される。

:set fencs
  fileencodings=utf-8,ucs2le,ucs-2,iso-2022-jp,euc-jp,sjis,cp932

上記の設定の場合、UTF-16のファイルを開くとUTF-16が対象文字コードに含まれていないので文字化けする。その場で文字化けを直したい場合は「:e ++enc=utf-16」と入力すればよいが、永続的にUTF-16のファイルを扱いたい場合は~/.vimrcに以下のように記述する。

set fileencodings=utf-8,utf-16,ucs2le,ucs-2,iso-2022-jp,euc-jp,sjis,cp932

尚、現在開いているファイルの文字コードを知りたい場合は「:set fenc」を設定値なしで指定する。

:set fenc
  fileencoding=utf-16