-->
./
<!-- フラ&#65533;ュが見れな&#65533;のためにここに何か書&#65533; --> フラ&#65533;ュがインス&#65533;&#65533;ルされて&#65533;&#65533;たいで&#65533;&#65533;&#65533;

2009年12月03日

viにおける文字コード自動判別と文字コードの違いによるファイルの管理

テキストエディタを比較
Vi
文字コードの自動判別機能自体は持っているが、RedHatやFedoraはデフォルトでは日本語の 文字コード判別が設定されていない。そのため、日本語ファイルを開くと次の画像のように化けてしまう。


 一昨日になりますが、大変参考にさせていただきました。これまで長い間、vimについてネットで調べ物をしたり、UNIX/Linux関係の書籍もかなりの数読んできましたが、このような情報を見たのは初めてでした。
 これまで文字コードの異なるファイルを開き編集する際はEmacsを使ってきましたが、コマンドラインにおいてちょっとしたファイルの編集にEmacsを起動するのは気が引けることもあり、多少起動に時間がかかる上、保存して終了させるのも多少面倒です。保存にはCtrl-x Ctrl-s、終了にはCtrl-c Ctrl-cでこの手間も、自分が横着すぎるのか馬鹿になりませんでした。(GUIだとメニューにアイコンなどがありますが、なぜか余り使いません。viの支持者にはEmacsのことを「指がうなるエディタ」と皮肉る人もいるようですが、ほとんどキーボードを使ってしまう習慣です。)
 viだと保存と終了を同時に、ZZ(コマンドモード)で済ますことが出来るからです。腰を入れて編集をするときはEmacsでも多少のことは苦にならないのですが、わずかな編集にEmacsを使うのは、やはり躊躇することがあります。

 nkfを使って、文字コードを変え、別ファイルとして保存することも多いですが、これもリダイレクトを使わず--overwriteオプションを使ったところで手間であり、文字コードの違いで別々のファイルを作ってしまうと、ぱっと見では、どちらの文字コードのファイルなのかもわかりません。

 おかげさまで、そんな煩わしさを一挙に解消することが出来ました。なぜにこれまでこのような方法を見かけることがなかったのか不思議といえば、不思議ですが、とにかくよかったです。
 EmacsとviはUNIXにおける宗教論争といわれるぐらいですから、自分のような両刀使いは、そもそも軟弱な邪道なのかもしれません。

 ~/.vimrcには次のように設定しました。前にどこからコピペしたのに手を加えています。先頭の”はコメントアウトになるみたいです。
set encoding=utf-8
set termencoding=utf-8
set fileencoding=utf-8
"set fileencodings=ucs-bom,euc-jp,cp932,iso-2022-jp
"set fileencodings+=,ucs-2le,ucs-2,utf-8
set fileencodings=euc-jp,sjis,iso-2022-jp

 ただ、残念なことにメールを別名保存したISO-2022-JPのファイルをviで開くと文字化けしていました。Emacsでは大丈夫でした。指定コードの並び順によっても違いが出てくるそうですが、直接ヘッダの混じったメールファイルを開くことは滅多にないので、Shift_JISが扱えればそれでいいです。

 このファイルはまずWindowsXPで作成保存しました。Crescent Eveというフリーソフトのエディタを使っていますが、これは文字コードの自動判別を行ってくれるので、ぱっと見では違いはわかりません。見た目はシンプルなエディタですが、シンプル軽量で、多機能ではないものの使い勝手のよい高機能があり、気に入っています。
xp000000
xp000000 posted by (C)hirono-hideki

 こちらがUbuntu9.10です。左側のウィンドウでファイルをviで開いています。VMware Playerの共有フォルダを使っているので、まったく同一のファイルを交互に編集しました。
 右側のウィンドウで、文字コードと改行コードの違いを確認しました。catコマンドに-eオプションをつけると改行コードの違いがわかります。日本語のマルチバイトは化けています。わかりやすくするため、コマンドラインからヒアドキュメントとリダイレクトを組み合わせて、新規ファイルを作成しました。
u9-shiftJIS-vim_20091203
u9-shiftJIS-vim_20091203 posted by (C)hirono-hideki


 再びWindowsXPの画面ですが、WindowsXPの標準エディタである「メモ帳(NotePad)」では、やはり不具合が起きています。改行になっていません。
xp000001
xp000001 posted by (C)hirono-hideki

Powered by ScribeFire.

posted by hirono at 04:24| Comment(0) | TrackBack(0) | Vim
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/33983646

この記事へのトラックバック