FreeBSD-5.3 の vim の文字化け

とりあえず子供たちの熱は下がり、息子も幼稚園に行く事が出来た。
良かった良かった。
子供を寝かしつける時、一緒に寝てしまった。
起きたらもう0時を過ぎていた....。
今日はサーバー環境構築はお休み。
 
昨日新サーバーに vim をインストールした時、vim の日本語表示がおかしいことに気付いていた。
ということで、今日は vim の日本語対策をすることにした。
早速ネットで検索してみる。
さすが vim の日本語版を公開している大元 KaoriYa(香り屋) http://www.kaoriya.net/
しっかり情報が載っている。
 
【KaoriYa さんの[囲炉裏端]から抜粋】------------------------
FreeBSD 5.3-RELEASE のmblen()がそれ依存のものとは異なり、
内部状態を持つようになってしまった。直前のmblen()の呼び
出しに不完全なバイト配列を渡してしまうと、直後のmblen()
の呼び出しは正しい値を返さない。
そのため、mblen()に依存するCUI onlyコンパイルされたvimは、
マルチバイト文字すなわち日本語を正しく扱えなくなってしま
っている。
 
manページによるとmblen(NULL, n)という様に第1引数にNULLを
渡すことで内部状態の初期化できるとのことなので、とりあえ
vimについては、mblen()を呼ぶ直前に内部状態をリセットす
るコードを追加して対応した。

                                                                                                                      • -

 
portsvim のバージョンも管理したいので、下記の様に対応してみた。
editors/vim-lite について、ソースを展開してパッチまで当てておく。
 
 # cd /usr/ports/editors/vim-lite
 # make patch
 # /usr/bin/vi work/vim63/src/mbyte.c
 
ソースの653行目付近を編集
 
 mblen(NULL, 0); /* これを追加 */
 if (mblen(buf, (size_t)1) <= 0)
n = 2;
else
 
で、ビルドしてインストール
 
 # cd /usr/ports/editors/vim-lite/
 # make install
 # rehash
 
無事日本語表示が出来た。ルン♪
 

今日の作業

録画

H2・君といた日々

作業

H2・君といた日々 Zaurusエンコード