まとめ ブログ ダウンロード 掲示板 メール

れぶろぐ

< 2006-09-13 (水) 2006-09-20 (水) > 最新


2006-09-15 (金)

vim の文字コード自動認識

玄箱のデフォルトのロケールを UTF-8 に設定して使っているが、 文字コードが EUC のファイルを vim で編集しようとすると、 文字化けすることに気が付いた。 あれ? vim って文字コードの自動認識はしてくれないのか?

調べてみたところ、 ずんWiki の vim のページ に、 文字コード自動認識のための設定が載っていた。 ただ、ちょっと大げさすぎる気がする。 常用するわけではないので、もう少しシンプルな設定で済ませたい。

vim の文字コード設定 のページを読むと、 基本的には、fileencodings に候補の文字コードをずらずら並べればいいようだが、 どの文字コードをどの順番で記述すべきなのかがよく分からない。 ただし、以下のルールは守ったほうが良さそうだ。

  • encoding に指定した文字コードは、fileencodings 中に指定しない
  • euc-jp は cp932 よりも先に記述する

ということで、設定をしてみた。 vim の設定は、普通は ~/.vimrc に設定するらしいが、 これは全ユーザに共通の設定にしたいので、 /etc/vim/vimrc.local に以下の設定を追加した。

set encoding=utf-8
set fileencodings=ucs-bom,iso-2022-jp,euc-jp,cp932
set fileformats=unix,dos,mac
set ambiwidth=double

この設定をした後、EUC で書かれたファイルを読み込んでみたところ、 とりあえず文字化けせずに編集できるようになった。

(追記) fileformats と ambiwidth の設定を追加した (2006/11/18)。


(2009/04/08 追記)

上記のリンク先に、

'fencs' の途中で 'enc' と同じものが登場すると以降の変換試行が行われない

と書かれていますが、少なくとも最近の Vim ではそのような制限はないようです。 上の設定だと、UTF-8 のファイルを SJIS と誤判定することがあったので、 こちらの設定のように、fileencodings に utf-8 も加えた方が良さそうです。

Tags: Debian | このエントリを含む del.icio.us | このエントリを含むはてなブックマーク | このエントリを含む livedoor クリップ | Permalink
本日のリンク元

編集