如何将GNU Screen复制缓冲区复制到剪贴板?

Sam*_* P. 65 linux terminal gnu-screen copy-paste gnome-terminal

使用GNU Screen时,我们可以使用该命令使用回滚缓冲区,也称为"复制模式"Ctrl+a+[.

在那里,我们可以通过选择文本并再次按下来将文本复制到复制缓冲区.spacespace

有没有办法将此文本从屏幕复制缓冲区复制到X剪贴板?

在我的情况下,我使用Ubuntu 12.04与gnome和Xorg.

bon*_*ing 42

您可以使用像xsel或的CLI剪贴板工具pbpastecat实用程序从STDIN中获取内容.Linux上的步骤xsel如下:

  1. 将文本从屏幕会话复制到GNU屏幕的复制缓冲区.
  2. 在屏幕中运行此命令: cat | xsel -b
  3. 如果xsel没有报告任何错误,现在将屏幕的复制缓冲区转储到STDIN:Ctrl+a+]
  4. 发送EOF cat以终止它:Ctrl+d

此时,屏幕复制缓冲区的内容应该在剪贴板中.

编辑:与所有X程序一样,xsel需要知道如何联系您的X服务器以访问剪贴板.您应该DISPLAY适当地设置您的环境变量.

  • 小心,如果你不知道你在做什么(像我一样)!`cat | 当我从shell运行它时,xsel -b`执行了我的整个历史记录. (4认同)
  • `cat |中的`cat` xsel -b`是将`xsel`的输入连接到管道(而不是`tty`)并触发`xsel`的"输入"模式的可爱方式; 但是`xsel`有`-i`标志来显式触发输入模式.所以`xsel -bi`可能比`cat |更可取 xsel -b`. (3认同)
  • @yekta是的,为了使用xsel,你需要有一个带剪贴板的X显示器,并设置`DISPLAY`环境变量.大多数终端仿真器都会设置它,`ssh -X`也是如此.由于未设置,xsel在接受输入之前失败,因此管道退出并且屏幕缓冲区中的其余"击键"转到shell. (2认同)
  • 我找到了一种不那么简单的手动方式.请参考下面的答案. (2认同)

sco*_*ald 12

这个答案适用于OS X.

使用复制模式将所需文本复制到GNU Screen粘贴缓冲区后,请执行以下操作:

  1. 在任何屏幕窗口中,键入pbcopy <enter>.
  2. 然后使用GNU Screen paste命令将文本粘贴到终端中(Ctrl-a ]除非您更改了转义键).
  3. 如果文本未以换行符结尾,请按<enter>插入一个.
  4. 最后,按Ctrl-d以使pbcopy文本推送到系统剪贴板.

然后,您可以像往常一样使用Command-v或等效的菜单选项将文本粘贴到OS X中的其他位置.


kun*_*der 11

有一种更简单,更少手动的方法来做到这一点.在屏幕.rc文件中,添加以下行:

bindkey -m ' ' eval 'stuff \040' 'writebuf' 'exec sh -c "/usr/bin/pbcopy < /tmp/screen-exchange"'
Run Code Online (Sandbox Code Playgroud)

如何使用复制功能:

  1. screen -c path/to/screen/config.rc
  2. 按Ctrl + A然后按Esc进入复制模式.
  3. 向上滚动文本缓冲区,找到要留下开始标记进行复制的位置,然后点击空格.
  4. 向下滚动并选择要复制的文本.当你完成后,再次击中空间.
  5. 该文本现在将在您的剪贴板中.


Cod*_*erX 8

此答案仅适用于最终目标是立即粘贴复制的缓冲区内容的情况.

最简单的方法是将屏幕分成两个区域.你可以通过点击CTRL+ a然后'这不是我'来做到这一点|.这是键盘上的PIPE标志'

CTRL+ a然后TAB切换到第二个区域,CTRL+ a然后在第二个区域c中创建一个新会话.

如果你想从nano复制并粘贴到终端,在左侧区域打开nano文件,点击CTRL+ a然后ESC,滚动到你的复制位置的起始点并点击SPACE,通过滚动到终点选择文本并点击SPACE再次标记副本.

现在,您只需点击CTRL+ a然后TAB切换到右侧区域然后点击CTRL+ .a]

您的文本将写入命令行.请注意,如果要直接写入文件,还可以检查硬拷贝选项.

  • 这是有关如何使用复印模式的说明。OP已经知道如何使用复制模式:问题是如何将数据从复制模式缓冲区移至系统剪贴板。这不是所问问题的答案。 (3认同)
  • @Benubird - 我知道。但我给了他另一种选择,让他到达我认为他需要去的地方,那就是复制粘贴。帮助了某人! (3认同)

CpI*_*ILL 6

由于似乎没有人直接回答这个问题:

将所需的输出复制到缓冲区后,您需要

  1. 使用新文件打开文本编辑器,即 vim somefile.txt
  2. 进入编辑模式,即i在 vim 中
  3. Ctrl + athen]这会将您刚刚填充的缓冲区的内容转储到文本编辑器中

达达!