galaxy-sixth-sensey - Arch LinuxでEast Asian Ambiguous charが幅1で表示されることについて
2018/04/11
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に問題がある場合に役に立ちそうなもの 👇


この記事はこちらから修正リクエストを送ることができます。
Arch LinuxでEast Asian Ambiguous charが幅1で表示されることについて - github
ゴミ箱ボタンの左にある、鉛筆ボタンを押してね!