文字コードや改行コードを素早く変更する

Vim Advent Calender 2011 44日目の記事です。私はまだVim初心者なので簡単なことをご紹介したいと思います。今回のテーマは文字コード/改行コードです。

まず基本設定から。

文字コード設定
Vimで文字コードを変更するには以下のようにします。

:set fileencoding=utf-8
:set fenc=cp932

この設定を使用すると現在のバッファの文字コードを指定した文字コードとみなします。この状態で保存すると指定した文字コードで保存が可能になります。
ファイルを開く際に文字コードを指定したい場合以下のようにします。

:e ++encoding=utf-8 filename
:e ++enc=cp932 filename

改行コード設定
次に改行コードです。改行コードを変更するには以下のようにします。

:set fileformat=unix
:set ff=mac

この設定も文字コードのときと同様に現在のバッファの改行コードを変更します。
ファイルを開く際に改行コードを指定したい場合以下のようにします。

:e ++fileformat=unix filename
:e ++ff=mac filename

KeyMappingに登録しておく
単純に開き直したい時や文字コード/改行コードを変更して保存したい場合、上記の上げたようなコマンド打つのは疲れます。そこでKeyMappingに登録しておきましょう。

nnoremap <silent> ,eu :set fenc=utf-8<CR>
nnoremap <silent> ,ee :set fenc=euc-jp<CR>
nnoremap <silent> ,es :set fenc=cp932<CR>

nnoremap <silent> ,eru :e ++enc=utf-8 %<CR>
nnoremap <silent> ,ere :e ++enc=euc-jp %<CR>
nnoremap <silent> ,ers :e ++enc=cp932 %<CR>

nnoremap <silent> ,en :set ff=unix<CR>
nnoremap <silent> ,em :set ff=mac<CR>
nnoremap <silent> ,ed :set ff=dos<CR>

nnoremap <silent> ,ern :e ++ff=unix %<CR>
nnoremap <silent> ,erm :e ++ff=mac %<CR>
nnoremap <silent> ,erd :e ++ff=dos %<CR>

前に付けたeはEdit, 真ん中のrはReのつもりです。
他人のソースを編集したり、文字コード/改行コードを指定して保存したい場合に素早く変更が出来てとても便利になりましたね。

おわりに
そもそも自動で判別するようにしておけばあまり問題は起きないのですが、私の環境では時々誤った文字コードで読み込むことがあったので書かせて頂きました。そういう場合はmodelineを使ったりしています。以下に参考になるリンクを貼っておきますので是非読んでください。