Xベースの端末で改行を選択/貼り付け

Xベースの端末で改行を選択/貼り付け

Xベースの端末で改行を切り取り、貼り付ける安定した方法はありますか?つまり、ボタン3を選択して貼り付けると、テキストが行の末尾に到達し、折り返すと貼り付けがキャリッジリターンを取得して挿入します。私はむしろ:

if (endcolumn==non-space character) {
  assume wordwrap
}
else {
  insert carriage return after last non-space character
}

これは私を狂わせる。特に80列以上のコードを貼り付ける場合はさらにそうです。時には動作しますが、ほとんどの場合動作しません。

答え1

Unix端末は自動的に改行しません。これは端末内で実行されるアプリケーションの機能です。同じコマンドを受信すると、端末に次のものが表示されます。

|This is text formatted  |        |This is line 1.         |
|to 24 columns           |   or   |This is line 2.         |

可能であれば、アプリケーションにラップを行わないように指示します。このように、端末は行を折り返しますが、常に最後の列にあります。

|This is a single long li|
|ne of text.             |

3回クリックすると、This is a single long line of text最後に改行のみが表示されます(またはターミナルエミュレータによっては改行がまったく表示されません)。

貼り付けると、端末はユーザーがテキストを入力したかのようにそのテキストをアプリケーションに送信します。端末の幅に依存する動作(改行など)が観察されると、これは端末ではなくアプリケーションによって発生します。

答え2

私はこれが有用性に大きな影響を与えることに同意します。 3回クリックして改行した行をコピー/貼り付けできることが非常に重要だと思います。操作する方法は2つあります。 CRを挿入せずに3回クリック(クリックしてドラッグ)して、行の末尾を次のように見える行に選択します。または、表示される行を1つだけ選択するには3回クリックしますが、貼り付けるときにEnterキーはありません。

間違ったアプローチは、3回クリックして見える行のみを選択し、貼り付けるときに最後にCRがあると仮定することです。 xtermとgnome端末で間違った動作を見ました。 Mac端末アプリケーションとは異なるMac端末アプリケーションであるiTermで良い動作を見ました。

他の端末プログラムを試す以外に、悪い状況を良い状況に変える方法はありません。私はこれがターミナルプログラムが実際に見えるすべてのCRの位置を覚えているのか、それともCRを解釈して忘れているのかと関係があると確信しています。

関連情報