東アジアの文字幅が悲惨すぎる件について
たまには、ホッテントリーメーカーでタイトルを付けてみる。
この前から気になっていた件をmixiで聞いてみたら早速解決!
- 問題点:vim で LANG=ja_JP.utf8 で編集すると、一部の記号でカーソル移動がおかしい(2文字幅なのに1文字幅と見なされるようだ)
- 解決方法:set ambiwidth=double (デフォルト値はsingle)
- 根本原因:Unicodeというと、CJK-Unificationがよくやり玉に挙げられるが、実は西欧系の文字ともunifyされており(まあ当然だわな)、矢印↑ とか ギリシャ文字β とかはunification対象で、文字幅が Ambiguous(文脈依存) という扱いになっている。アルファベットのA はFULLWIDTH LATIN CAPITAL Aなので、FULLWIDTH扱いで大丈夫。参考:wikipedia:東アジアの文字幅
- 根本対策:とりあえず、/etc/vimrcを修正した(Fedora9)。ja以外の東アジア系言語でも同様にした物が標準のvimrcであれば問題ないのだが。
if v:lang =~ "utf8$" || v:lang =~ "UTF-8$" set fileencodings=ucs-bom,utf-8,latin1 + if v:lang =~ "^ja" + set ambiwidth=double + endif endif
- 補足:あと、X上の端末で使っている人はその設定とか、screen使っている人はその設定とかいるらしいが、Xもscreenも使ってないので関係なし。