ターミナルでタブ区切りの値を表示する(タブは表示されません)

ターミナルでタブ区切りの値を表示する(タブは表示されません)

タブ区切り値ファイルがある場合、catそのファイルを指定すると、ファイルがすべて適切に整列されて表示されます。次に、マウスを使用して別のテキスト エディターにコピーして貼り付けようとすると、タブがスペースになってしまいます。

タブをスペースではなく文字通りタブとしてレンダリングするターミナル エミュレーターはありますか?

ここにテストがあります:

echo -e "first"$'\t'"second"$'\t'"third"$'\n'"1"$'\t'"2"$'\t'"3" > tsv.tsv
cat tsv.tsv

次に、GUI テキスト エディターにコピーして貼り付けてみます。

答え1

この場合、ウィジェットに基づくターミナル エミュレーターvte(例) は TAB を保持します。gnome-terminal

これは、TAB 文字が既存のコンテンツ上に進まない、最も単純な使用シナリオにのみ制限されることに注意してください。

ほとんどの端末エミュレータは、端末にとって TAB は印刷可能な文字ではなく、カーソルを再配置する制御シーケンスであるため、これをスペースに変換します。たとえば、既存の文字の上で TAB を押すと、それらの文字はそのまま残り、消去されません (スペースに置き換えられません)。

答え2

おそらく見つからないでしょう。私の経験では、ターミナル エミュレータがエミュレートしているターミナルでも、ディスプレイ上でタブがスペースとしてレンダリングされていました。もちろん、VT100 ではタブ ストップを設定できたので、画面上のタブが何であるかは厳密に定義されたものではありませんでした。実際の Digital Equipment Corporation VT100 でプリント スクリーンにエスケープ シーケンスを送信すると、タブがスペースとしてレンダリングされていたプリンターにスペースが送信されます。

代替の解決策として、タブ付きのソース ドキュメントを GUI エディターの別のセッションで開くことを検討してください。次に、必要なテキストを選択し、別のセッションで開いているターゲット ドキュメントに切り取って貼り付けます。たとえば、gvimタブ文字をクリップボードにコピーする方法がわかっています。

現時点では、特定の GUI エディターがこれをサポートしているかどうかは単なる推測の域を出ません。

関連情報