当我在 中查看带有制表符的数据时less
,制表符会扩展为空格。如果我然后使用 ctrl-c 将它们直接从终端复制出来,它们会复制为空格。另一方面,more
保留制表符,就像许多其他命令一样tail
和head
。有什么办法可以less
保持标签完好无损?
-r
-U
即使与声称将制表符视为控制字符的 结合使用,似乎也没有任何效果。我没有看到任何其他相关选项less
。
当我在 中查看带有制表符的数据时less
,制表符会扩展为空格。如果我然后使用 ctrl-c 将它们直接从终端复制出来,它们会复制为空格。另一方面,more
保留制表符,就像许多其他命令一样tail
和head
。有什么办法可以less
保持标签完好无损?
-r
-U
即使与声称将制表符视为控制字符的 结合使用,似乎也没有任何效果。我没有看到任何其他相关选项less
。
的手册页
less
似乎具有误导性。通过组合使用
-r
和-U
选项,您将防止less
在它从输入读取行并填充其输出缓冲区时将制表符转换为空格。但是,当将输出缓冲区写入终端(而不是写入文件或管道)时,write()
由于 termio 设置,在调用中会进行第二次制表符到空格的转换,这与阅读手册页可能期望的行为相矛盾.如果您
less
从源代码编译,并注释或#ifdef
删除 which 或XTABS
、OXTABS
或TAB3
intos.c_oflag
in 的screen.c:raw_mode()
行(第 487 版中的第 398-411 和 489 行less
),您将获得一个版本,less
如果使用-r -U
.我找不到任何现有的命令行选项来产生所需的行为,尽管很容易产生一个可以切换此行为的版本。
使用足够笨的终端也应该有效。