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()を呼ぶ直前に内部状態をリセットす
るコードを追加して対応した。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ports で vim のバージョンも管理したいので、下記の様に対応してみた。
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
無事日本語表示が出来た。ルン♪
今日の動画鑑賞
ドラマ
みんな昔は子供だった
不機嫌なジーン(途中)