首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux :当copy+pasting时缓冲区中的长行中断

linux :当copy+pasting时缓冲区中的长行中断
EN

Stack Overflow用户
提问于 2013-09-12 12:32:55
回答 4查看 2.6K关注 0票数 6

在我的一台Linux机器中,我创建了一行代码,并将其输送到gnu中,如下所示:

代码语言:javascript
复制
seq -w 1 999 | xargs echo | less

如果我选择出现在gnu less (394版)中的文本,并将其放在其他地方,则将长行分解为多行,每一行都与终端的宽度相同,这与我所期望的不一样。

如果我在不同的Linux (较少版本444)中也这样做,我可以从gnu less缓冲区中选择,并将其作为一个单独的长行进行copy+paste,这是所需的行为。见图:

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

在这两个linux中,如果我使用cat而不是line,并从终端中的输出中进行选择,我也可以在一行中copy+paste所有内容:

代码语言:javascript
复制
seq -w 1 999 | xargs echo > /tmp/f
cat /tmp/f

相反,在两个linux框中,more命令的行为正好相反,在选择copy+pasting时,也会将长行分解为多行:

代码语言:javascript
复制
seq -w 1 999 | xargs echo > /tmp/f
more /tmp/f

有什么好主意吗?当我执行copy+paste时,如何从具有相同行为的gnu less缓冲区中提取cat

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-15 16:58:05

我编译了一个较新版本的less,现在它的行为与预期的一样。

票数 2
EN

Stack Overflow用户

发布于 2013-09-13 08:45:50

less有一个-S选项,它告诉它中断长线。这不是默认情况下的。

幸运的是,即使在运行时,大多数less标志也可以更改。只需按-S键即可切换长线模式/折线模式。

票数 2
EN

Stack Overflow用户

发布于 2013-09-14 18:53:30

让我回答你问题的“正在发生什么”部分,而不讨论“如何解决它”部分。从终端角度来看,catlessmore的主要区别在于操作模式。当您cat某物时,终端看到实际字符,当它到达行尾时,终端仿真器有责任造成行中断。现代终端仿真器记住它们是否对每一行执行了这样的换行操作,并且当您复制文本时,复制缓冲区中不包含行中断。

现在,lessmore以一种完全不同的方式使用您的终端(带有ncurses)。这些工具知道终端的宽度,不会因线路溢出而导致断线。他们会发出一条线来打破他们自己。您的终端仿真器无法区分这样的中断行和“有意义的”行中断,因此,当您复制文本时,这些换行符将包含在复制缓冲区中。

您实际上可以要求more使用-f选项不包括这些换行符,但是对于less,主要是因为您可以回滚,所以不存在相应的选项。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18764386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档