web-dev-qa-db-ja.com

不要な変更行がある端末から長い1行のテキストをコピーする

locate ... | lessは、長いパスを出力します。これは、実際には1行ですが、端末では複数行として表示されます。

マウスでテキストを選択してヒットすることにより、ターミナルからパスをコピーします Ctrl+Shift+C。テキストファイルに貼り付けると、ターミナルに表示されるのとまったく同じ方法で、テキストに不要な変更行が表示されます。

しかし、私は時々、不要な行変更を導入することなく、locate ... | lessによって出力された長いパスをコピーできる場合があることを覚えており、できない場合もあります。何か違うことをしたのかわかりません。

それで、問題が発生しないことを確認する方法を知りたいですか?ありがとう!

私のOS:Ubuntu 12.04。

私の端末:Gnome Terminal 3.4.1.1

14
Tim

端末に表示されているもの(画面に収まるもののみ)をコピーする代わりに、実際のテキストをコピーします。 Xクリップボードとの間でデータをコピーするには、外部ユーティリティ xsel または xclip (ほとんど同じ機能を備えています。この回答ではxselを使用します)のいずれかを使用します。クリップボードにコピーするには、目的のコンテンツを標準入力に渡します。クリップボードから貼り付けると、コンテンツは標準出力に書き込まれます。

少ない場合は、|コマンドを使用して、一連の行をコマンドにパイプ処理します。操作する最初の行までスクロールし、mmと入力してマークを設定し、最後の行までスクロールし、|mxsel -bと入力して押します。 Enter。 2つのマークが事前定義されています。ファイルの先頭の^、ファイルの末尾の$。したがって、ファイル全体をコピーするには、<|$xsel -bを使用します。 1行をコピーするには、mm|mxsel -bを使用し、 Enter

-bオプションを削除して、クリップボードではなくプライマリセレクションにコピーします。

これの実際の動作は次のとおりです。

lessにいて、非常に長い行を含むファイルがある場合、長い行を下にスクロールして上にスクロールすると、テキスト全体をコピーするときに複数行になります。その後、分割された行を端末の下部にスクロールダウンして、もう一度上にスクロールすると、改行が再び削除されます。

視覚化のため:

enter image description here

3
bobbel

lessでは、折り返された複数行のテキストを選択してコピーすると、1行として表示されます。

押すと PgUp 次に同じテキストをコピーします。複数行として表示されます。

PgDn 大丈夫です、矢は大丈夫です。だが PgUp テキストを分割します。

2
niknah

コピー出力の行余分な改行なし(改行)テキストが直接出力の場合、端末に出力できます。
端末は、実際の回線の終端がどこにあるかを追跡できます。

しかし、行がlessまたは同様のpagerプログラムによって出力された場合、端末は改行がどこにあるかを認識しません。ページャーは端末を文字の全画面として使用し、端末に「これらの文字をそこに置く」ことと、スクロールなどの操作を指示します。しかし、ターミナルの場合、改行が意図されている場所を確認する方法はありません。

2
Volker Siegel

コピーと貼り付けが目的の場合は、catまたはlessの代わりにmoreを使用すると、ターミナルは表示されているのではなく、実際にそれをキャプチャします。

0
Amos