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