在終端機上查看製表符分隔的值(它不顯示選項卡)

在終端機上查看製表符分隔的值(它不顯示選項卡)

如果我有一個製表符分隔的值文件,並且我說出來cat,它會很好地為我呈現所有正確排列的文件。現在,如果我嘗試將貼上(使用滑鼠)複製到另一個文字編輯器。製表符變成空格了!

是否有終端模擬器將選項卡呈現為文字選項卡,而不是空格?

這是一個測試:

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

現在嘗試複製並貼上到 GUI 文字編輯器。

答案1

在這種情況下,基於vte小部件(例如gnome-terminal)的終端模擬器保留 TAB。

請注意,它僅限於最簡單的使用場景,即 TAB 字元不會超越現有內容。

大多數終端模擬器將其轉換為空格,因為對於終端來說 TAB 不是可列印字符,它是重新定位遊標的控制序列。例如,如果您按 TAB 鍵覆蓋現有字符,這些字符將保留在那裡並且不會被擦除(不會被空格替換)。

答案2

你可能找不到。根據我的經驗,即使是終端模擬器也會將渲染的標籤模擬到顯示的空間。當然,您可以在 VT100 上設定製表位,因此這並不是螢幕上製表符的硬性定義。如果您將轉義序列傳送至真實 Digital Equipment Corporation VT100 上的列印螢幕,它會將空格傳送至印表機,其中製表符已呈現為空格。

作為替代解決方案,請考慮在 GUI 編輯器的單獨會話中開啟選項卡式來源文件。然後選擇所需的文本,剪下並貼上到您在不同會話中開啟的目標文件中。例如,我知道gvim會將製表符複製到剪貼簿。

您的特定 GUI 編輯器是否支援它目前只是一個猜測。

相關內容