设置:我在 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
我认为这个问题已经得到更好的解决:
答案3
更简单的方法
- 启用 XQuartz 同步剪贴板
- 连接到远程服务器时使用 X11 转发
- 在你的 tmux.conf 中有一个类似这样的绑定:
bind-key C-c run ‘tmux show-buffer | xsel -pbi'
- 您选择的 X 剪贴板位于管道之后
如果你愿意,你也可以在 vim 中进行类似的绑定
答案4
编辑02-10-2020:
由于这个问题我建议Jason Axelson 的回答!这是最好的解决方案(截至 2020 年)。
原始答案:
感谢pope的回答,我尝试了这个tmux -C
提示。
- 您不需要安装任何东西,因为当前的 tmux 版本支持该
-C
标志。 - 使用
-CC
,因为-C
并不总是有效。
因此使用tmux -CC
(或tmux -CC attach
)tmux 甚至比现在更好。