やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Vimで全角文字の表示幅を正しくセットする

 これで隣の字と重なることがなくなる。

問題

 vimで全角文字を使うと隣の字と重なってしまうことがある。

 以下のように表示したい。

対処

 ~/.vimrcで設定する。

設定

vim ~/.vimrc
set encoding=utf8
if exists('&ambw')
  set ambiwidth=double
endif

原因

 表示幅が足りないせい。文字コードとそれを表示するツールの問題である。

文字コード

 いわゆる半角(1バイト)文字と全角(2バイト)文字がある。SHIFT-JISのときはそれだけだったが、Unicodeは違う。

 Unicodeの仕様では表示幅はおなじく上記2種類である。ただ、曖昧幅というのがあって環境によって表示幅が変わるものもある。この曖昧幅にあたる字が全角幅で表示してほしいところ、半角幅で表示されてしまうから隣の字と重なってしまう。Unicode East Asian Width参照。

  • East Asian FullWidth(Wide)
  • East Asian Ambiguous(曖昧)
  • East Asian HalfWidth(Narrow)

ツール

 ツールによっては表示幅を設定できる。

 幸いVimは設定できた。

 残念ながらラズパイ標準ターミナルLXTerminalは設定できない。なので字が重なってしまう。

所感

 曖昧幅のやつはすべて全角で表示してくれよ。それかLANGの設定に応じて設定してくれよ。未だに文字すらまともに表示できないのはひどい。

対象環境

$ uname -a
Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux