画面がクリアされ、短いメッセージだけが残る動作は、xterm の通常画面と代替画面を切り替えるプログラムのように聞こえます。MobaXterm は、xterm からこの機能を実装する PuTTY を使用します。
の設定TERM
は、使用する端末の説明を termcap/terminfo/curses ライブラリーに伝えます。違いは次のとおりです。
- mosh プログラムの場合、そのライブラリはローカル マシンにあります。
- ssh を使用する場合、そのライブラリはリモート マシン上にあります。
それよりも複雑です: vim は実際にはそれを実行しているマシンで端末データベースを使用していますが、mosh はどのエスケープ シーケンスが端末に送信されるかについて最終的な決定権を持っています。そのため、mosh が、smcup
およびrmcup
terminfo 機能が "xterm" に代替画面への/からの切り替えを指示しないローカル端末の説明を見ているように聞こえます。
確認できるMobaXtermは手元にありませんが、確認できます。mosh は curses/ncurses プログラムです。したがって、MobaXterm にもinfocmp
プログラムがあると考えるのが妥当です。このinfocmp
プログラムを使用すると、端末データベースがこれらの値に対して何を持っているかを確認できます。
smcup=\E[?1049h,
rmcup=\E[?1049l,
また
smcup=\E[?47h,
rmcup=\E[2J\E[?47l,
後者はオリジナルの xterm シーケンス (1990 年代前半) で、前者は最新の xterm (1990 年代後半) です。興味深いことに、一部の「xterm」エミュレーターは新しいものを実装していません。詳細は xterm の FAQにあります vi の実行時に画面がクリアされないのはなぜですか?
あなたが持っているならinfocmp
、あなたはおそらく持っているでしょうtic
。ローカル端末データベースを変更するには、
infocmp
端末の説明を含むファイルを作成するために使用します
- ファイルを編集します(これら2つの行を追加するか、新しい値が機能しない場合は古い値を使用します)
tic
端末の説明を再コンパイルするために使用します
(MobaXterm が curses ユーティリティなしで mosh を提供する場合、MobaXterm でバグ レポートを提出する以外にできることはあまりありません)。
上記は 6 月 8 日に書かれたものです。私は昨夜 MobaXterm を見て、いくつかのコメントがあります。
- MobaXterm は自己完結型 (busybox を使用するアプリケーション) であるため、通常はあまり注意を払いません。
- xterm のやや古い端末の説明があります (特定できましたが、おそらく 5 ~ 8 年前のものです)。
- 代替画面切り替えはずっと古いものであり、やるべきことがあまりないことを指摘したように、私はそれ以上調査しませんでした.
- 必要に応じて、コンパイル済みの terminfo エントリを Linux からコピーできます (ただし、これは面倒です)。
Ubuntu の場合、gnome-terminal と xterm で vim を実行している 14.04 マシンを簡単に調べました。gnome
偶然にも、私は最近前者の端末の説明を見直していて、 (廃止された) またはvte
(推奨) のために書いたエントリが古い xterm smcup
/を使用していることに気付きましたrmcup
。Ubuntu 14.04 は古いため、gnome-terminal は新しい xtermsmcup
を正しく認識せず、 を使用して別の画面に切り替えませんでしたTERM=xterm
。しかし、それはTERM=vte
(またはTERM=gnome
)で動作しました。ncurses-term
パッケージがインストールされている場合、これらの説明が表示されます。