bha*_*gav 22 ssh vim tmux macos
设置:我在 MacOS 上使用 iTerm2 连接到远程服务器。远程服务器运行 tmux,我在其中打开文件并在 vim 会话中进行编辑。
问题:我无法在远程 tmux 会话和本地 iTerm 客户端之间复制/粘贴。我可以使用 iTerm 2 的 alt/option + 鼠标选择来选择文本,但这会复制多个 vim 窗格/tmux 窗格 - 不好。
是否有任何优雅的解决方案可以在远程粘贴板和本地(MacOS 粘贴板)之间同步 tmux 窗格中的选择?我见过reattach-to-user-namespace,但我很确定它不会做我想要的。
pop*_*ope 15
因此,当您通过 ssh 进入服务器时,您可以使用反向隧道,这样您就可以与您的 OSX 机器对话以向其发送命令 do pbcopy。
ssh -R 1234:localhost:22 remoteServer
Run Code Online (Sandbox Code Playgroud)
替换1234为远程服务器的任何开放端口。然后在远程服务器上,您可以运行:
tmux save-buffer - | ssh -p 1234 localhost pbcopy
Run Code Online (Sandbox Code Playgroud)
那应该连接回 OSX 并将您的 tmux 复制缓冲区的内容发送给它。您可能希望使用 ssh 密钥来防止在 OSX 机器上输入密码。
如果这适用,那么您可以创建您的 tmux 键绑定。
bind C-c run "tmux save-buffer - | ssh -p 1234 localhost pbcopy"
Run Code Online (Sandbox Code Playgroud)
我应该注意,要使其正常工作,您需要在 OSX 中打开远程共享。
次要选项:
由于您使用的是 OSX,如果您还使用 iTerm2,则可以考虑安装http://code.google.com/p/iterm2/downloads/detail?name=tmux-for-iTerm2-20120203.tar.gz&can =2&q=在您的服务器上。
它基本上是一个支持“-C”标志的自定义 tmux。该标志将窗口和窗格以及它们的所有拆分移交给 iTerm2。