如何防止 GNU screen 将制表符扩展为空格?

如何防止 GNU screen 将制表符扩展为空格?

使用普通的 bash 提示符echo -e 'hello\tworld'会产生真正的制表符。然而,在 GNU screen 中运行相同的命令会在两个单词之间添加空格。

我已经在 Ubuntu 10.04 上测试过此操作,该操作系统的 Screen 版本为 4.00.03jw4 (FAU) 2-May-06,在 RHEL 5.5 上测试过此操作,该操作系统的 Screen 版本为 4.00.03 (FAU) 23-Oct-06

有没有办法让屏幕输出制表符而不是将其转换为空格?

答案1

不,没有办法,除非编写代码。请查看“BUGS:”下的手册页

  • 屏幕不使用硬件标签。

对我来说,硬件是软件“gnome-terminal”。

答案2

这个简单的实验,在 GNU Screen 中,向我展示了“\t”正在输出一个 TAB 字符(笔记:您的 echo 命令缺少“-e”标志):

skx@birthday:~$ echo -e "Hello\tWorld" | od -c
0000000   H   e   l   l   o  \t   W   o   r   l   d  \n
0000014

现在我重复该命令并将输出保存到文件,验证是否仍然存在 TAB 字符:

skx@birthday:~$ echo -e "Hello\tWorld" > x
skx@birthday:~$ od -c < x
0000000   H   e   l   l   o  \t   W   o   r   l   d  \n
0000014

如果我 cat 该文件,然后通过鼠标复制并粘贴到 emacs 中,TAB 就会丢失。因此,似乎父级 gnome-terminal 做了一些奇怪的事情,或者在粘贴到我的新窗口时选项卡被转换了。无论哪种情况,我怀疑 GNU Screen 不是罪魁祸首。

相关内容