vimで文字コード自動判定
玄箱で使っているエディタ「vim」を使いやすくするため設定ファイル「.vimrc」を「ずんWiki - vim」を参考に作ってみました。
玄箱の設定ファイルを編集する分には日本語は出てこないので問題ないのですが、国産のLAMPアプリケーションには説明行に日本語が使われていたりします。今まで日本語コードが「euc」以外は文字化けして玄箱ではそのまま編集できなかったので、「nkf」でいったん「euc」に変換して編集後また元に戻したり、Macへ転送して「Jedit」で編集後戻したりと、ちょっと面倒なことをしていました。でもどうやら「vim」では設定で文字コードを自動判定してくれるということなので「ずんWiki - vim」に書かれているとおり
if &encoding !=# 'utf-8' set encoding=japan endif set fileencoding=japan if has('iconv') let s:enc_euc = 'euc-jp' let s:enc_jis = 'iso-2022-jp' " iconvがJISX0213に対応しているかをチェック if iconv("?x87?x64?x87?x6a", 'cp932', 'euc-jisx0213') ==# "?xad?xc5?xad?xcb" let s:enc_euc = 'euc-jisx0213' let s:enc_jis = 'iso-2022-jp-3' endif " fileencodingsを構築 if &encoding ==# 'utf-8' let s:fileencodings_default = &fileencodings let &fileencodings = s:enc_jis .','. s:enc_euc .',cp932' let &fileencodings = &fileencodings .','. s:fileencodings_default unlet s:fileencodings_default else let &fileencodings = &fileencodings .','. s:enc_jis set fileencodings+=utf-8,ucs-2le,ucs-2 if &encoding =~# '^euc-?%(jp?|jisx0213?)$' set fileencodings+=cp932 set fileencodings-=euc-jp set fileencodings-=euc-jisx0213 let &encoding = s:enc_euc else let &fileencodings = &fileencodings .','. s:enc_euc endif endif unlet s:enc_euc unlet s:enc_jis endif
という内容の「~/.vimrc」をつくりました。さらに
set fileformats=unix,mac,dos
という行も追加して改行コードの自動認識も。
試しにMacの「Jedit」で「Shift-JIS、改行dos」「Shift-JIS、改行Mac」「Shift-JIS、改行unix」「EUC、改行dos」「EUC、改行Mac」「EUC、改行unix」「UTF-8、改行dos」「UTF-8、改行Mac」「UTF-8、改行unix」な日本語ファイルを作って玄箱に転送。「vim」で順次正常開け、編集、保存が出来るかやってみました。
で、結果ですがすべてうまくいきました。今までほんと無駄なことをしていたと思います。無知は時間を浪費する。