我正在编写一个小程序,以制表符分隔格式将其输出打印到终端。但每当我选择带有标签的文本并复制它时,选项卡将替换为一定数量的空格。
在尝试复制时,如何使终端不用空格替换制表符?
答案 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少了)