无法从终端复制制表符

时间:2013-03-30 23:31:35

标签: terminal

我正在编写一个小程序,以制表符分隔格式将其输出打印到终端。但每当我选择带有标签的文本并复制它时,选项卡将替换为一定数量的空格。

在尝试复制时,如何使终端不用空格替换制表符?

3 个答案:

答案 0 :(得分:2)

在macOS Sierra上(也许在早期版本中),你可以这样做:

Edit -> Copy Special -> Copy Plain Text

或使用快捷方式: alt + shift + ⌘cmd + C

答案 1 :(得分:1)

您最好的选择是用“ \ t”代替输出中的选项卡,然后将其复制并粘贴到目标位置后进行搜索并替换。 当然,您可以使用任何字符或字符串作为替代,但是如果粘贴到命令行环境,使用“ \ t”可以很容易地使用 echo -e 还原选项卡。 替换可以使用:|sed 's/\\/\\\\\\/g;s/\t/\\t/g'

答案 2 :(得分:0)

我可以在我的Mac终端上进行操作。这是一些不错的测试:

printf '>\t<\n':有效(复制为标签形式的sublime;选择它只能让我选择完整标签,而不是单个空格)

printf '>\t<\n' | less:失败

printf '>\t<\n' | more:失败

printf '>\t<\n' | less | cat:有效(较少检测到输出是文件/管道而不是终端,因此未应用终端设置)

printf '>\t<\n' | less | cat -vet:输出“> ^ I <$”(较少检测管道输出,因此未应用任何终端设置)

printf '>\t<\n' | vi -:失败,但是当我在vi中移动时,它会在1次按键中跳过选项卡,因此知道它是一个选项卡

reset:从现在开始,它总是失败

stty -tabs:从现在开始,它总是失败

stty tabs:解决了reset / stty -tabs问题,现在可以再次使用

一个人通过更改来源https://unix.stackexchange.com/questions/412060/how-to-get-less-to-show-tabs-as-tabs

使less可以工作

较少的相关选项:'-U'将标签显示为'^ I','-x4'设置标签大小

对于git diff

git diff | head -40:有效(使用制表符复制到高等)

git diff | cat:有效

git diff | less:失败(较少应用终端设置)

git diff:失败(我的git pager少了)