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を解釈して忘れているのかと関係があると確信しています。