在远程 tmux 会话和本地 Mac OS 剪贴板之间同步剪贴板

在远程 tmux 会话和本地 Mac OS 剪贴板之间同步剪贴板

设置:我在 MacOS 上使用 iTerm2 连接到远程服务器。远程服务器运行 tmux,我在其中打开文件并在 vim 会话中进行编辑。

问题:我无法在远程 tmux 会话和本地 iTerm 客户端之间复制/粘贴。我可以使用 iTerm 2 的 alt/option + 鼠标选择来选择文本,但这会复制到多个 vim 窗格/tmux 窗格上 - 很糟糕。

有没有优雅的解决方案可以让 tmux 窗格中的选择在远程粘贴板和本地(MacOS 粘贴板)之间同步?我见过重新附加到用户命名空间,但我很确定它没有实现我想要的效果。

答案1

因此,当您通过 ssh 进入服务器时,您可以使用反向隧道,以便您可以与您的 OSX 机器对话并向其发送命令pbcopy

ssh -R 1234:localhost:22 remoteServer

将远程服务器的开放端口替换1234为任意端口。然后在远程服务器上,您可以运行:

tmux save-buffer - | ssh -p 1234 localhost pbcopy

这应该会重新连接到 OSX 并将 tmux 复制缓冲区的内容发送给它。您可能希望使用 ssh 密钥来防止在 OSX 计算机上输入密码。

如果可行,您就可以创建 tmux 键绑定。

bind C-c run "tmux save-buffer - | ssh -p 1234 localhost pbcopy"

我应该注意,为了使其正常工作,您需要在 OSX 中打开远程共享。

次要选项:

由于你使用的是 OSX,如果你还使用 iTerm2,你可以考虑安装http://code.google.com/p/iterm2/downloads/detail?name=tmux-for-iTerm2-20120203.tar.gz&can=2&q=在您的服务器上。

它基本上是一个支持“-C”标志的自定义 tmux。此标志将窗口、窗格及其所有拆分移交给 iTerm2。

答案2

我认为这个问题已经得到更好的解决:

http://seancoates.com/blogs/remote-pbcopy

答案3

更简单的方法

  1. 启用 XQuartz 同步剪贴板
  2. 连接到远程服务器时使用 X11 转发
  3. 在你的 tmux.conf 中有一个类似这样的绑定: bind-key C-c run ‘tmux show-buffer | xsel -pbi'
    • 您选择的 X 剪贴板位于管道之后

如果你愿意,你也可以在 vim 中进行类似的绑定

答案4

编辑02-10-2020:

由于这个问题我建议Jason Axelson 的回答!这是最好的解决方案(截至 2020 年)。

原始答案:

感谢pope的回答,我尝试了这个tmux -C提示。

  1. 您不需要安装任何东西,因为当前的 tmux 版本支持该-C标志。
  2. 使用-CC,因为-C并不总是有效。

因此使用tmux -CC(或tmux -CC attach)tmux 甚至比现在更好。

相关内容