tmux-powerlineでステータスバーが改行される

ソフトウェア開発を主にされているエンジニア(特に組み込みエンジニア)はキーボードとターミナルに並々ならぬ思いがあるものです。( ー`дー´)キリッ(※当社勝手調べ)

EWSとか個人用Linux環境がある方ならいざしらず、Windowsでの開発を余儀なくされている方も多いかと思います。いまさらコマンドラインでゴニョゴニョ…WindowsらしくPowerShellでフガフガ…なんてしたくないわけで、WindowsでもLinux使ってやると意気込み、Cygwinに挫折、MinGWに逃げてmsys2にアップグレード、ターミナルはnyaosからnyagos、Cmderとこれまた節操ない状態ではありますが、ここ最近ようやく落ち着ける環境が見つかりましたので、数回にわけてまとめておこうかと思います。

いきなり結論からです。本当は導入方法から記載した方が良いかとは思うのですが、今後のネタにしておきます。(導入記事とか書くの大変ですよね。有用な記事を掲載されている皆様に頭が上がりません)

現在の私のターミナル環境は以下の通り。

今回はいきなり最後のtmux-powerlineネタからです。

wsl-terminalでtmuxとtmux-powerlineを使った時に、ステータスラインが改行されてしまう事があります。

分かりにくいかもしれませんね。しかしこのまま使っていると以下のようにエライことに…。

(゜o゜;

巷での情報を調べてみるとiTerm2やTerminal.appなどMac OSの情報は出てきますがwsl-terminalの情報が見つかりませんでした。tmux-powerlineがステータスバーの区切り文字などで使用しているワイド文字の幅を誤認識している事が原因という事はわかるのですが肝心な解決法がなく、唯一見つかったのがこのワイド文字の不具合修正パッチでした。

tmux 2.3 以降において East Asian Ambiguous Character を全角文字の幅で表示する

ありがたや、ありがたや。tmuxをgithubからcloneしてパッチ当ててビルドした所、確かに問題解決しました。

だがしかし

なぜか同じWindows環境の別PCでは、パッチを当てなくても(aptでインストールしたtmuxでも)この問題が発生しなかったのです。そこで違いを調べてみるとwsl-terminalの設定で回避できる事が分かりました。

起きる時~

起きない時~

あぁ…なるほど。ロケールをCにする事でen扱いとなってワイド文字幅が逆にtmux-powerlineの意図通りに判定されるようになるのですね。確かにiTerm2とかの対処でも「ambiguous文字」の設定を変更すれば直るという記事が多数ありましたから。wsl-terminalの場合はロケールなのです。

ロケールをCにした時~

これで無事、パッケージのtmuxを使っても問題が起きなくなりました。

ちなみに、この方法でtigの履歴表示も正常になったことを付け加えておきます。

Author: kan
初めてプログラムらしきものを作ったのは幼稚園の時。それから約40年経ち、現在はデジタル回路設計から信号処理、機械学習まで幅広い経験を活かしてシステムアーキテクトとして活動中。超並列処理、デジタル回路とソフトウェアのバランス設計が得意分野。 Linux/Mac/Windows使い。 C/C++を主要言語として、Unity、Qtなどのフレームワーク興味あり。UI/UXデザイン、STL拡張など。 音声処理、画像処理、技術コンサルは仕事でも請け負います。 一般ソフトウェア開発プロセス、医療機器ソフトウェア開発プロセス作成も進行中。

2 thoughts on “tmux-powerlineでステータスバーが改行される

  1. すごい!神!
    助かりましたありがとうございます!Windowsって・・・つらいですね

    1. お役に立てたようで光栄です。
      Windows…つらいですが、避けて通るわけにはいきませんからねぇ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください