モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

ConEmuでMSYS2のbash上でvagrant sshした時に画面が崩れる件

ターミナルとしてConEmuを使っていて、そこからMSYS2のbashzshbash.exe --login のようにして呼び出して使っていました。
で、そこからvagrantを動かしているのですが、vagrant sshして入った先のemacsが画面が崩れて使えない、みたいなことが起きていました。


で調べてみるとConEmu+MSYS2のbashzshで入る設定でTERMを確認すると

TERM=xterm-256color

になっており、これだと崩れてしまうことがわかりました。


ただ、ConEmu+Powershell等の環境から呼び出すと大丈夫であったため、確認すると

TERM=cygwin

となっており、TERMを「cygwin」等に指定にすれば良いということがわかりました。


そこでConEmu+MSYS2 bashを立ち上げた後

export TERM=cygwin

としてやってからemacs動かせば問題がないことを確認しました。


ただ、普通にスタートメニューからMSYS2のターミナルを開くとTERMが「xterm-256color」でも問題なく動くため、ConEmu+MSYS2の場合だと問題が起きるようです。


でそれについてさらに調べていると、


ConEmuからMSYS2のシェルを起動したときに256色対応させる - 水を見ると釣りがしたくなる
http://e8l.hatenablog.com/entry/2016/03/24/161206

MSYS2のシェルからansi color codeを上手にConEmuの方へ引き渡すコネクタプログラムを噛ませる必要がある


ConEmu | cygwin/msys terminal connector
https://conemu.github.io/en/CygwinMsysConnector.html

set MSYSTEM=MINGW64 & c:\tools\msys64\usr\bin\bash.exe --login -i

Change it to:

set MSYSTEM=MINGW64 & conemu-msys2-64.exe


ということで、コネクタプログラム経由にしないとxterm-256colorでの表示はうまくいかないそうです。

試してみると確かにこれでうまく動いてくれました。

ただ、そうするとzshではなくbashになってしまうのですよね。これはなにか方法あるのかな?


また、ConEmuのヘルプに起動時にTERMの指定が出来る記述

chcp 1251 & set TERM=MSYS & cmd

があったため、これでTERMの指定をcygwinにしてzshを動かせそうに思ったのですが、自分が試して見た限りではこれは動きませんでした。


で、この問題について色々と探しているときに、shellは「Nyagos」が良いというのをちょこちょこ見かけました。


Windowsのターミナル環境にCmderを使う 〜Nyagosとmsys2を添えて〜 - 長文書くところ
http://zenito9970.hatenablog.com/entry/2015/06/19/163701


このエントリではCmder+Nyagos+MSYS2ですが、自分の場合はConEmu+Nyagos+MSYS2で使ってみました。

こちらのコメントにもあるようにChocolateyでインストールできるので簡単に入ります。

確かにNyagos良い感じで、TERMもcygwinになるためそのままvagrant sshしても表示が崩れる問題は起きませんでした。


というわけでまとめると

  • ConEmu + MSYS2 bash + vagrant ssh で崩れるのは TERM が「xterm-256color」になってるため
  • MSYS2 bashvagrant中でTERMを「cygwin」などにすれば崩れなくなる
  • でもシェルをNyagosにしちゃったほうが快適

という感じでした。


(関連)

Windows用ターミナルアプリConEmuのフォント設定 - モーグルとカバとパウダーの日記
http://d.hatena.ne.jp/stealthinu/20130527/p1