在我的一台Linux机器中,我创建了一行代码,并将其输送到gnu中,如下所示:
seq -w 1 999 | xargs echo | less如果我选择出现在gnu less (394版)中的文本,并将其放在其他地方,则将长行分解为多行,每一行都与终端的宽度相同,这与我所期望的不一样。
如果我在不同的Linux (较少版本444)中也这样做,我可以从gnu less缓冲区中选择,并将其作为一个单独的长行进行copy+paste,这是所需的行为。见图:

把头发粘贴到粉刺中的效果,首先是下发效果,下面是预期的效果:

在这两个linux中,如果我使用cat而不是line,并从终端中的输出中进行选择,我也可以在一行中copy+paste所有内容:
seq -w 1 999 | xargs echo > /tmp/f
cat /tmp/f相反,在两个linux框中,more命令的行为正好相反,在选择copy+pasting时,也会将长行分解为多行:
seq -w 1 999 | xargs echo > /tmp/f
more /tmp/f有什么好主意吗?当我执行copy+paste时,如何从具有相同行为的gnu less缓冲区中提取cat?
发布于 2013-09-15 16:58:05
我编译了一个较新版本的less,现在它的行为与预期的一样。
发布于 2013-09-13 08:45:50
less有一个-S选项,它告诉它中断长线。这不是默认情况下的。
幸运的是,即使在运行时,大多数less标志也可以更改。只需按-S键即可切换长线模式/折线模式。
发布于 2013-09-14 18:53:30
让我回答你问题的“正在发生什么”部分,而不讨论“如何解决它”部分。从终端角度来看,cat和less或more的主要区别在于操作模式。当您cat某物时,终端看到实际字符,当它到达行尾时,终端仿真器有责任造成行中断。现代终端仿真器记住它们是否对每一行执行了这样的换行操作,并且当您复制文本时,复制缓冲区中不包含行中断。
现在,less和more以一种完全不同的方式使用您的终端(带有ncurses)。这些工具知道终端的宽度,不会因线路溢出而导致断线。他们会发出一条线来打破他们自己。您的终端仿真器无法区分这样的中断行和“有意义的”行中断,因此,当您复制文本时,这些换行符将包含在复制缓冲区中。
您实际上可以要求more使用-f选项不包括这些换行符,但是对于less,主要是因为您可以回滚,所以不存在相应的选项。
https://stackoverflow.com/questions/18764386
复制相似问题