
如果我有一個製表符分隔的值文件,並且我說出來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 編輯器是否支援它目前只是一個猜測。