1行より長いコマンドを入力したときにtmuxが「スクロール」しないのはなぜですか? (OSX端末。アプリ)

1行より長いコマンドを入力したときにtmuxが「スクロール」しないのはなぜですか? (OSX端末。アプリ)

その行を超えてコマンドを使用して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)にはこの問題はないため、xtermOSXの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が適切な代替手段です。

おすすめ記事