noliaquiの日記

2008-06-15

導入と Unicode 化の手順

07:32

KaoriYa さんの所で配布されている Vim7.1 を基準に書いています。オフィシャルでハイフされている Vim だともうちょっと沢山手順を踏まなきゃいけないんじゃないかと思います。まだ良く分かっていない部分が多いので的外れな事を書いているかも知れないです。なにか間違いに気付いた方がいたら、優しく教えて貰えると嬉しいです。

その1 内部文字コードUnicode にする

KaoriYa さんのところで配布されている Vim の設定は、データを Shift-JIS で保持するようになっています。もちろんファイルの読み込みの時に文字コードを判定して適切に処理してくれるのですが、例えば utf-8 なテキストを Vim で開いて保存した場合、以下のような流れでデータが変換されているらしいです:

  1. 読み込み時にデータを Shift-JIS に変換(この時点で Unicode に存在するけど Shift-JIS には存在しない文字が脱落)
  2. Shift-JISバッファを編集(このときに Unicode にしか存在しない文字を使うと、全部「?」で置換されてしまう)
  3. 保存する時に Shift-JIS なデータを再度 utf-8 に変換してファイルへ書き出し

つまり、KaoriYa さんのところで配布されている Vim は、デフォルトのままだと unicode 固有の文字を一切使えない状態らしいのです。そうなっている理由が KaoriYa さんの所に書いてあって、確かにデフォルトの設定としてはそちらの方が良いかなと思うのですが、自分は unicode のハートマークとかを使いたいので、内部でも unicode として扱って欲しいのです。なのでそのようにカスタマイズすべく、主に google 先生に質問をしつ調べてみて「一応上手くいった」というのが以下の手順です。

  • vimrc と gvimrc の両方に「encoding=utf-8」の記述を追加(この時点で内部 unicode 化は完了。ただしメニューの文字などがバケバケに)
  • メニューに使う設定を強制的に「ja-jp.utf-8.vim」に変更する

コレで少なくとも外見上は全く問題なくなりました。試しに Vim から unicode 固有の記号を使ったファイルを作成してみて、それを utf-8 で保存して他のソフトで読み込んでみましたが、問題はありませんでした。

ka-nachtka-nacht 2008/06/18 00:55 理解も手順もそれで合ってますよ。補足すると、
- Vim内部で取り扱う文字列のエンコーディングは'encoding'で決まる。
- 'encoding'はVimの実行中に変更できるが、既にVim内部にある文字列のエンコーディングは変換されずそのままになる。結果として'encoding'を変更すると変更前のエンコーディングの文字列を変更後のエンコーディングとして解釈しようとして文字化けする(メニューの文字が化ける原因はこれ)。
なおgvimrcはGUI版固有の設定を記述すべきファイルなので、'encoding'関連の設定は追加する必要はありません。

FrancescaFrancesca 2012/03/25 19:33 Now I feel stupid. That's celread it up for me

iawkpgbjciawkpgbjc 2012/03/27 18:35 RgmSIT <a href="http://esubbavbflmf.com/">esubbavbflmf</a>

leaitwupoleaitwupo 2012/03/27 22:27 4lFs8g , [url=http://chpbftbliyzn.com/]chpbftbliyzn[/url], [link=http://rztxkzcuxxao.com/]rztxkzcuxxao[/link], http://jglczbvlhnbh.com/

ゲスト



トラックバック - http://vim.g.hatena.ne.jp/noliaqui/20080615