在终端上查看制表符分隔值(不显示制表符)

在终端上查看制表符分隔值(不显示制表符)

如果我有一个制表符分隔值文件,并且我说了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 编辑器是否支持它目前还只是一个猜测的问题。

相关内容