我想复制一些文本屏幕到我的剪贴板。我知道如何在屏幕上进入复制和粘贴模式,但我希望该文本进入我的剪贴板,以便我可以将其粘贴到浏览器上。
我该怎么做呢?谢谢!
答案1
在大多数程序中,您可以选择文本并按Ctrl+进行复制。粘贴文本可以通过按+C来完成。在终端仿真程序中,+具有特殊含义,默认情况下它会中断(停止)程序。CtrlVCtrlC
您的终端仿真程序可能定义了其他快捷方式。例如,Konsole 和 Gnome Terminal 使用Ctrl+ Shift+C来复制所选文本。或者,选择文本并使用复制选项中的编辑菜单或上下文菜单。
如果程序的输出很大,您可能需要启用回滚缓冲区screen
。可以通过将以下行添加到文件来实现~/.screenrc
:
termcapinfo xterm ti@:te@
答案2
对于原始和肮脏的实现,安装xsel
允许命令行与 X 剪贴板交互的软件包,然后将这些行放入您的~/.screenrc
bind > eval writebuf "exec sh -c 'xsel -nbi </tmp/screen-exchange'"
bind y eval "exec sh -c 'xsel -bo >/tmp/screen-exchange'"
然后重新启动screen
。
现在,当您在复制/回滚模式下选择某些内容,并使用-screen
将粘贴缓冲区写入文件时,您可以移动到浏览器并像往常一样粘贴剪贴板的内容(例如使用- )。Ca >CtrlV
反过来,使用Ctrl-在浏览器中复制一些内容,然后使用新命令-C转到screen
并读取剪贴板,然后使用 - 将屏幕交换文件读入粘贴缓冲区,最后使用-粘贴到您想要的任何位置。Ca yCa <Ca ]
要使此操作有效,必须正确设置变量DISPLAY
,并且您必须有权访问 X 服务器。当您在同一个 X 服务器上运行的终端上时,这不是问题,但如果您screen
在虚拟终端(例如 tty1)中运行,则在启动之前,您可能需要xhost +
在 X 端运行,或export DISPLAY=:0
在终端上运行类似程序screen
。
如你所见,它并不简单,也不是万无一失的,但我希望它能有所帮助。
这个答案部分灵感来自同步 GNU 屏幕的粘贴缓冲区和 X 选择
答案3
只需在终端应用程序中使用复制操作即可。例如,如果您使用的是 gnome-terminal,只需选择测试并使用上下文菜单 -> 复制。
答案4
在 Ubuntu 22.04 中,将其添加到~/.screenrc
:
bind "^K" screen bash -c "nohup >/dev/null 2>&1 xclip -selection clipboard /tmp/screen-exchange"
请注意,这会将默认的 kill 命令重新绑定C-a C-k
到更适合 Emacs 用户的习惯命令。
也可以看看在 Tmux 中做同样的事情的类似答案。
然后重新启动屏幕或使用 获取文件C-a : source ~/.screenrc RET
。
现在输入C-a C-k
的内容将会复制/tmp/screen-exchange
到剪贴板。
例如,从打开的screen
,您可以像这样使用它:
- 键入
C-a ESC Y
以将当前行复制到粘贴缓冲区 - 键入
C-a >
以将粘贴缓冲区复制到/tmp/screen-exchange
- 输入
C-a C-k
要复制/tmp/screen-exchange
到剪贴板的内容
为了将所有内容都包含在复制模式下可用的一个命令中,您还可以添加以下内容~/.screenrc
:
bindkey -m "^K" eval "stuff '>'" "screen bash -c 'nohup >/dev/null 2>&1 xclip -selection clipboard /tmp/screen-exchange'"
那么使用就更加简单了:
- 进行选择,例如键入
C-a ESC SPC w
以选择一个单词 - 键入
C-k
以将其复制到剪贴板