使用 GNU Screen 时,我们可以使用Ctrl+a+[
命令使用回滚缓冲区,也称为“复制模式”。
在那里,我们可以通过按space
选择文字并再次按space
将文字复制到复制缓冲区。
有没有办法将此文本从屏幕复制缓冲区复制到X剪贴板?
在我的情况下,我正在使用Ubuntu 12.04与gnome和Xorg。
答案 0 :(得分:36)
您可以使用xsel
或pbpaste
等CLI剪贴板工具和cat
实用程序从STDIN中获取内容。使用xsel
的Linux上的步骤如下:
cat | xsel -b
xsel
没有报告任何错误,请立即将屏幕的复制缓冲区转储到STDIN:Ctrl+a+]
cat
发送EOF以终止它:Ctrl+d
此时,屏幕复制缓冲区的内容应该在剪贴板中。
编辑:与所有X程序一样,xsel
需要知道如何联系您的X服务器以访问剪贴板。您应该正确设置DISPLAY
环境变量。
答案 1 :(得分:10)
这个答案适用于OS X.
使用copy mode将所需文本复制到GNU Screen粘贴缓冲区后,请执行以下操作:
pbcopy <enter>
。 Ctrl-a ]
将文本粘贴到终端中,除非您更改了转义键。)<enter>
插入一个。Ctrl-d
使pbcopy
将文本推送到系统剪贴板。然后您可以像往常一样使用Command-v
或等效的菜单选项将文本粘贴到OS X中的其他位置。
答案 2 :(得分:10)
有一种更简单,更少手动的方法。在屏幕.rc文件中,添加以下行:
bindkey -m ' ' eval 'stuff \040' 'writebuf' 'exec sh -c "/usr/bin/pbcopy < /tmp/screen-exchange"'
如何使用复制功能:
screen -c path/to/screen/config.rc
答案 3 :(得分:8)
此答案仅适用于最终目标是立即粘贴复制的缓冲区内容的情况。
最简单的方法是将屏幕分成两个区域。您可以通过点击 CTRL + a 然后 | '来实现这一点。这不是我。它是键盘上的PIPE标志'
按 CTRL + a 然后 TAB 切换到第二个区域, CTRL + a 然后 c 在第二个区域创建一个新会话。
如果你想从nano复制并粘贴到终端,打开左边区域的nano文件,点击 CTRL + a 然后 ESC < / kbd>,滚动到复制位置的起点并点击 SPACE ,通过滚动到终点选择文本并再次点击 SPACE 来标记复制。
现在,您所要做的就是点击 CTRL + a 然后 TAB 切换到右侧区域并点击 CTRL + a 然后] 。
您的文本将写入命令行。请注意,如果要直接写入文件,也可以检查硬拷贝选项。
答案 4 :(得分:4)
由于似乎没有人直接回答这个问题:
将所需的输出复制到缓冲区后,您需要
vim somefile.txt
i
在vim中Ctrl + a
,然后按]
,这将转储您刚刚填充到文本编辑器中的缓冲区的内容ta-da!
答案 5 :(得分:0)
如果您当前已连接到服务器,则退出ssh终端会话。
如果在Mac OS上使用XQuartz,在服务器上使用xsel。您应该通过在xQuartz应用程序菜单中选择“首选项”来更新XQuartz粘贴板设置。
ssh进入远程计算机并尝试运行:
xsel -p <<<"THIS IS A TEST".
按cmd + v,应输出“这是测试”。
答案 6 :(得分:0)
我想要一种与 @kungfuspider 类似的编程方式,并调整了他们的解决方案,使其适用于在 Windows 上运行的 Ubuntu WSL。
设置:
win32yank.exe
放在有用的地方(我在 /usr/bin
中使用 ln -s <path to exe> /usr/bin/win32yank
创建了指向它的符号链接)~/.screenrc
(来自 @kungfuspider)。您可能需要修改命令以指向正确的 cat
和 win32yank
位置。bindkey -m ' ' eval 'stuff \040' 'writebuf' 'exec sh -c "cat /tmp/screen-exchange | win32yank -i --crlf"'
~/.screenrc
CTRL+a
:
source ~/.screenrc
如何使用:
CTRL+a
[
进入复制模式space
开始选择文本space
突出显示所需文本并完成复制,文本现在应该位于您的 Windows 剪贴板中,并且可以通过右键单击将其粘贴回 Ubuntu。注意:使用 space
完成复制非常重要,因为 bindkey
命令用于映射 win32yank
答案 7 :(得分:-2)
如果您要复制的只是一些信息,只需用鼠标突出显示它,然后将其粘贴到您想要的位置。
如果您正在尝试获取大量信息,可以将屏幕会话记录到文件中,然后您可以从文件中复制或清理一下并将其用于执行操作的说明
答案 8 :(得分:-3)
最后,今天我找到了一个鼠标解决方案:
用鼠标按住 Ctrl 和右键单击。 复制/粘贴上下文菜单显示。
https://michalzuber.wordpress.com/2015/01/28/gnu-screen-copy-paste-with-mouse/
处的部分屏幕