Arch LinuxでEast Asian Ambiguous charが幅1で表示されることについて

 相当前から…僕のArch Linux上のTermite上のNeoVimで 「…」 という文字が幅1で表示されてしまう 問題に悩ませれている。 結局解決できなかったが……今後別の環境でまた同じシチュエーションになったときのために……まとめておく。

……

この記事中の各々のバージョン

NeoVim 0.2.2
Vim 8.0.1257
urxvt 9.22
Termite 13
tmux 2.6

East Asian Ambiguous charactersって?

 これ 👇

 幅2で表示されるべき文字だが、考慮されていない環境では幅1で表示されたりする。

結論

~~ urxvt * Vimを使うのがいいと思う。~~
(NeoVim宗教上の理由により、僕は無理だった)

~~ または何かしらの統合デスクトップ環境を使えば、うまく対処できるのかもしれない。~~ 僕は統合デスクトップ環境を使っていない。
(xmonadを使っている)

 fumiyas/wcwidth-cjk をインストールして、指示通り.zshenvあたりに

eval `/usr/local/bin/wcwidth-cjk --sh-init`

と書くと、urxvt上での問題は一切合切直った。 すごい!!

 以下の内容は僕にとってもはや無用になったが、残しておく。 誰かのためになれば幸い。

Vim上での問題以前

 前述の通りArch Linux * Termiteな環境ではEast…charはcatでもlessでもなんでもうまく表示されなかったが、 Vimだけは例外だった。 Vimの中ではTermiteの上であろうとurxvtの上であろうと幅2で表示される。

Vimではいずれの環境でもうまく表示された。 NeoVimではダメだった。

 これについてDark Vim Master報告者の方は 「terminalの問題っぽい。urxvtではうまく動いた」と報告しているが、 後述する僕のurxvt環境(Arch Linux * urxvt)では cat/lessでうまく動くものの NeoVimではうまく動かなかったので、 やはりNeoVimの問題ではないかと思う。

(もう力尽きたので、これについての調査は行っておらず…ごめん)

 なのでNeoVimからVimに乗り換えようと思ったものの、 僕はNeoVimに頼りっきりになっていて、無理だった…… NeoVimは最強、離れられない。

Termiteの問題

on-termite

 上の画像はTermite * NeoVimでの表示。

しかしながらcat/lessでもTermite上ではうまく表示されず、 TermiteではEastふんふんcharは必ず幅1で表示されるものと思われる。

 これについてはurxvtに以降することで対処した。

urxvt上でのcat/lessではEastふんふんは幅2で表示される。 (ただし絵文字はうまく表示できず、ぐぬぬ)

NeoVimの問題

on-urxvt

 しかしながら未だurxvt * NeoVim環境ではふんふんが幅2で表示されている(こんな感じ ☝)。

 この記事で「…」を多用して下記心地を試してみたものの、 ちょっとtypoが発生してしまいそうで怖い。

今はNeoVimのfやFなどを駆使してなんとかがんばっている……。

その他の環境でEast Asian Ambiguous character widthに問題がある場合

 その他の環境でEast Asian Ambiguous character widthに問題がある場合に役に立ちそうなもの 👇 。

筆者プロフィール

my-latest-logo

aiya000(あいや)

せつラボ 〜圏論の基本〜」 「せつラボ2~雲と天使と関手圏~」 「矢澤にこ先輩といっしょに代数!」を書いています!

強い静的型付けとテストを用いて、バグを防ぐのが好き。Haskell・TypeScript。