その行を超えてコマンドを使用してtmux
入力すると、前の行を再描画できません。現在行だけが消去され、書き込んだ内容は表示されません。最初の行だけを再描画します。
これは、キーが押されたときに最後のコマンドが現在の行に収まらないup場合にも発生します(最後の行のみが表示されます)。とupをもう一度押すと、downコマンドのすべての行が表示されます。
この問題の原因が何であるかはわかりませんが、迷惑です。私のプロンプトに何か関連がありますか?万が一の場合に備えて次のようになります。
export PS1="%{$fg[blue]%}%n%{$reset_color%}@%{$fg[green]%}%m %{$fg[yellow]%}%~ %{$reset_color%}% "
export PS2=$_>
($TERM is set to screen)
ところで、私はzshとOSX Termialを使用していますが、bashにも問題があります。
また(XQuartz)にはこの問題はないため、xterm
OSXのTerminal.appが原因であると推測されます。
- この問題に対する解決策を知っている人はいますか?
- 何とか強制的に再描画できますか?
見つけたばかりこの古いスレッドtmuxメーリングリストにあります。
(screen, screen-256colors, xterm, xterm-color, nsterm) の他の値を試してみましたが、$TERM
エラーは続きます。
それでは、他のターミナルエミュレータに切り替えてもできることは何もないようです。
答え1
これは他の人が見つけたTerminal.appのバグです。画面の改行処理エラーを修正する方法はありますか? (たぶんTerminal.appのみ)
bash + tmuxを使用して効果を再現し、画面に送信されるテキストをキャプチャし、tmuxが更新される前に画面の最後の行を除外するようにスクロール余白を設定して、改行が発生することを確認できます。その間、bashは最初の行に合った部分を書いて長い行を書き、追加する2つの文字が追加され、キャリッジリターンと2行目が続きます。
これら2つの追加文字は改行を強制する必要があります。しかし、Terminal.appはスクロールマージンを切り替え、カーソルをスクロール領域の最後の行に移動し、そこに長い行を書くことで混乱しているようです。包む代わりに、長い行の第2の部分が第1の部分の上に書かれた状態で元の位置に保持される。
そこにいる間はい改行をオフにします。ほとんどのアプリケーションではアクティブであると仮定します。トレースscript
では、tmuxとbashの両方を使用しません。どちらかが改行文字を操作しない限り、何も取得できません。たとえば、tmuxは仮説am
この機能は、(自動マージン)機能の端末記述も確認しません。関連フラグ(改行エラー)を確認しますxenl
が、端末の説明からそれを削除すると、状況はさらに悪化します。
したがって...このエラーが原因でTerminal.appを使用できない場合は、iTerm2が適切な代替手段です。
答え2
私はiterm2をダウンロードして使用しました。
これが私が知っているMacを使っているほとんどの開発者がすることです。
より快適な環境を感じることができると思います。
私はtmuxでiterm2を使用するのに最適です。