14

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

尝试复制时,我该怎么做才能使终端不将制表符替换为空格?

4

3 回答 3

5

在 macOS Sierra(可能也在早期版本中)上,您可以执行以下操作:

Edit -> Copy Special -> Copy Plain Text

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

于 2017-08-18T10:37:28.167 回答
1

Your best bet may be to substitute "\t" in place of tabs in your output, and do a search and replace after you copy and paste it to the destination. You could use any character or string as the substitute, of course, but using "\t" makes it easy to restore the tabs using echo -e if pasting to a command-line environment. The substitution can be done using: |sed 's/\\/\\\\\\/g;s/\t/\\t/g'

于 2019-09-13T00:29:19.030 回答
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问题,现在它可以再次工作了

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

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

对于git diff

git diff | head -40: 有效(使用标签复制到 sublime 中)

git diff | cat: 有效

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

git diff: 失败(我的 git 寻呼机少了)

于 2020-09-29T20:00:51.693 回答