🐍
vimのterminalでtqdmの出力がおかしくなる件
困ったこと
○とかをいい感じに表示させるために、 vimの設定でset ambiwidth=double
をしていると、
vimのterminalで、Pythonのプログレスバー表示のtqdmの出力が、ずれてしまう。
解決方法
setcellwidths を利用して、tqdmで出力している文字の幅を1に変える。
なお、setcellwidths
を利用するには、vimのバージョンが、8.2.1537 以降 (8.2.1535 ?) である必要がある。
具体的には、.vimrc に以下を記述する。
call setcellwidths([[0x2588, 0x258f, 1]])
補足
tqdmのソースを読むと、
UTF = u" " + u''.join(map(_unich, range(0x258F, 0x2587, -1)))
というところで、空白から塗りつぶしの文字を指定しているようです。
Pythonでのrangeで降順で0x2587は含まない一方で、vimのsetcellwidthsは昇順で端を含むので、値がちょっとだけ違います。
Discussion