Linux 如何将GNU屏幕复制缓冲区复制到剪贴板?

Linux 如何将GNU屏幕复制缓冲区复制到剪贴板?,linux,terminal,copy-paste,gnu-screen,gnome-terminal,Linux,Terminal,Copy Paste,Gnu Screen,Gnome Terminal,当使用GNU屏幕时,我们可以使用Ctrl+a+[命令使用滚动缓冲区,也称为“复制模式” 在那里,我们可以通过按space选择文本并再次按space将文本复制到复制缓冲区 是否有办法将此文本从屏幕复制缓冲区复制到X剪贴板? 在我的例子中,我将Ubuntu 12.04与gnome和Xorg一起使用。如果您只想复制一点点信息,请用鼠标突出显示它,然后粘贴到您想要的地方 如果您试图获取大量信息,可以将屏幕会话记录到一个文件中,然后您可以从该文件中复制或清理一点,并将其用于操作说明您可以使用CLI剪贴板工

当使用GNU屏幕时,我们可以使用
Ctrl+a+[
命令使用滚动缓冲区,也称为“复制模式”

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

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


在我的例子中,我将Ubuntu 12.04与gnome和Xorg一起使用。

如果您只想复制一点点信息,请用鼠标突出显示它,然后粘贴到您想要的地方


如果您试图获取大量信息,可以将屏幕会话记录到一个文件中,然后您可以从该文件中复制或清理一点,并将其用于操作说明

您可以使用CLI剪贴板工具(如或)和
cat
实用程序从STDIN获取内容。在Linux上使用
xsel
的步骤如下ows:

  • 将屏幕会话中的文本复制到GNU屏幕的复制缓冲区中
  • 在以下屏幕中运行此命令:
    cat|xsel-b
  • 如果
    xsel
    没有报告任何错误,现在将屏幕的复制缓冲区转储到STDIN:
    Ctrl+a+]
  • 将EOF发送到
    cat
    以终止它:
    Ctrl+d
  • 此时,屏幕复制缓冲区的内容应该在剪贴板中


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

    此答案适用于OS X

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

  • 在任何屏幕窗口中,键入
    pbcopy
  • 然后使用GNU屏幕将文本粘贴到终端中(
    Ctrl-a]
    ,除非您更改了转义键)
  • 如果文本没有换行,请按
    插入换行符
  • 最后,按
    Ctrl-d
    使
    pbcopy
    将文本推送到系统剪贴板

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

    今天我终于找到了鼠标的解决方案:

    按住Ctrl键,然后用鼠标右键单击。 此时将显示复制/粘贴上下文菜单


    在一些屏幕上,有一种更简单、更少人工操作的方法。在screen.rc文件中,添加以下行:

    bindkey -m ' ' eval 'stuff \040' 'writebuf' 'exec sh -c "/usr/bin/pbcopy < /tmp/screen-exchange"'
    
    bindkey-m“eval”stuff\040“writebuf”exec sh-c”/usr/bin/pbcopy
    如何使用复制功能:

  • screen-c路径/to/screen/config.rc
  • 按Ctrl+A,然后按Esc进入复制模式
  • 向上滚动文本缓冲区,找到要留下开始标记进行复制的位置,然后点击空格
  • 向下滚动并选择要复制的文本。完成后,再次按空格键
  • 文本现在将位于剪贴板中
  • 编辑: 在没有pbcopy但使用clipit的Linux上,您可以按如下方式使用:


    bindkey-m“eval”stuff\040“writebuf”exec sh-c“/bin/cat/tmp/screen exchange |/bin/clipit””

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

    最简单的方法是将屏幕分为两个区域。您可以通过按CTRL+a来执行此操作,然后|“这不是i”。它是键盘上的管道标志

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

    如果要从nano复制并粘贴到终端,请在左侧区域的nano中打开文件,按CTRL+a,然后按ESC键,滚动到复制位置的起点并按空格键,滚动到终点并再次按空格键选择文本以标记复制

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


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

    如果当前连接到服务器,请退出ssh终端会话

    如果您在Mac OS上使用XQuartz,在服务器上使用xsel。您应该通过选择XQuartz应用程序菜单中的首选项来更新XQuartz粘贴板设置

    XQuartz设置:

    ssh连接到远程计算机并尝试运行:


    xsel-p因为似乎没有人直接回答这个问题:

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

  • 使用新文件打开文本编辑器,即
    vim somefile.txt
  • 进入编辑模式,即vim中的
    i
  • Ctrl+a
    然后按
    ]
    ,这将把刚才填充的缓冲区内容转储到文本编辑器中

  • 塔达

    我想要一种类似于@kungfuspider的编程方法,并调整了他们的解决方案,使之适用于运行在Windows上的Ubuntu WSL

    设置:

  • 下载并将
    win32yank.exe
    放在有用的地方(我用
    ln-s/usr/bin/win32yank
    /usr/bin
    中创建了一个指向它的符号链接)
  • 将以下内容放入
    ~/.screenrc
    (来自@kungfuspider)。您可能需要修改命令以指向正确的
    cat
    win32yank
    位置
  • bindkey-m“eval”stuff\040“writebuf”exec sh-c“cat/tmp/screen exchange | win32yank-i--crlf”

  • 重新加载
    ~/.screenrc
    而不通过执行
    CTRL+a
    源代码~/.screenrc
  • 如何使用:

  • 使用CTRL+a键进入复制模式
  • 通过vim风格的按键移动四处移动