在带有 X 服务器的机器上,我使用selection
剪贴板在 GUI 和终端程序之间同步复制/粘贴。现在我有一个没有 X 的服务器,我想在终端应用程序之间同步复制/粘贴,例如zsh
和。稍后,我希望进一步将该剪贴板与我用来通过 SSH 连接到 Linux 服务器的 Mac 的系统剪贴板同步。vim
tmux
这样的设置可能吗?具体来说,
Linux 的共享剪贴板是否可以在不运行 X11 的情况下跨终端应用程序同步复制/粘贴?
有类似的工具
xsel
吗xclip
?更好的是,是否有像这样的工具可以在运行和不运行 X 服务器的情况下工作,允许我在这两种情况下使用相同的配置/点文件?
最后,我承认这是一个独立的问题,这个剪贴板如何与 SSH 客户端的剪贴板同步?
答案1
终端应用程序没有通用的剪贴板。 tmux、zsh 和 vim 都有自己的剪贴板。
tmux 有一种机制,可以使用转义序列(选项)将复制的文本发送到外部终端set-clipboard
,并读取剪贴板 ( refresh-client -l
)。只有 X 终端支持此功能,并非所有终端都支持。
tmux 还支持相同的转义序列 (OSC 52),允许 tmux 内的应用程序读取最新的粘贴缓冲区(如果set-clipboard
设置为on
)。然而,据我所知,很少有应用程序使用它。
tmux 还允许您使用命令将粘贴缓冲区保存到文件或标准输出save-buffer
,并使用命令加载它们load-buffer
。这可能比 OSC 52 更容易使用。
我希望可以为 zsh 和 vim 编写脚本来使用这些功能之一或其他功能来设置和检索其剪贴板。
所以是的,你可以通过运行 tmux 内的所有内容来将一些东西组合在一起,使用 tmux 保存剪贴板并编写一些脚本来从 vim、zsh 等获取和设置它,但我认为你需要自己做,有没有现有的解决方案。