5

長い文字列 (つまり、端末ウィンドウの幅よりも多くの文字) を貼り付けると、端末は自動スクロールせず、それらを複数行に配置します。

代わりに、基本的に同じ行に折り返されます。つまり、現在の行の終わりまで印刷してから、同じ行の先頭から既存の文字の上に印刷を開始します...

これがスクリーンショットです。行頭の文字「789abc...」に注目してください。

ここに画像の説明を入力

私はターミナル2.3で10.8.3を使用しています。$TERM は xterm-256color です。

同僚はまったく同じマシンのセットアップを持っていて (ターミナルの色やおそらく他の設定は異なっていますが)、スクロールすることができます。

何か案は?

ありがとう!

4

1 に答える 1

6

PS1 プロンプト文字列の非印刷部分が適切にマークされていないようです。表示されない部分 (たとえば、色変更のエスケープ シーケンス) と、表示されない部分のみに でマークを付ける必要があります。\[ ... \]これにより、シェルは、それらが画面上のスペースを占有しないことを認識できるようになります (したがって、ラップする場所を認識できるようになります)。たとえば、私のプロンプト文字列は\[\e[0;32m\]\h\[\e[m\]:\W \[\e[0;34m\]\u\[\e[m\]$で、次のように解析されます。

  • \[\e[0;32m\]・色をグリーン系に変更(非印刷のため でラッピング\[ ... \]
  • \h- ホスト名 (印刷)
  • \[\e[m\]- 通常の印刷 (色なし) (非印刷のため、ラップされます)
  • :\W- 現在のディレクトリ (および区切り文字) (印刷)
  • \[\e[0;34m\]・青字に変更(無刷り)
  • \u- ホスト名 (印刷)
  • \[\e[m\]●ノーマルタイプ(非印字)
  • $- 実際のコマンドの前の最後の区切り文字
于 2013-05-23T05:32:39.833 に答える