求远程服务器上 tmux 复制文本到本地剪切板的最佳实践

我在本地机器 localhost 用 ssh remotehost 登上了远程服务器 remotehost,并且在远程服务器 remotehost 上用 tmux 与别人协作写程序。

编译调试程序时难免会产生一些警告或者错误信息。我想从远程服务器的 tmux 上复制出这些信息到本地剪切板上,然后用本地的浏览器进行搜索。可是发现这些信息似乎没有办法用鼠标复制出来,所以现在的办法是把相关信息背下来,然后手动搜索 :man_facepalming: :joy:

(我是一个 Emacs tramp mode 用户,不过合作者强烈要求在远程服务器上工作… 所以就没有用 tramp mode 了。)

大家有什么从远程 tmux 上复制文本到本地剪切板的好办法么? 谢谢大家!

应该是tmux 需要设置 set mouse 类似的状态? 我经常是本地的tmux,开多个窗口,可能会登陆远程节点,我是通过 ~[tmux 前导键, 如C-b] :set mouse ~ 切换鼠标可以复制和鼠标用来滚动屏幕两种模式。 不知道对你是不是有帮助。

1 个赞

iTerm2 的话可以勾上 “Copy to pasteboard on selection” 和 “Applications in terminal my access clipboard”

其他终端软件的话,估计通过关闭 tmux 的鼠标功能: set -g mouse off

1 个赞

内容少的话,直接复制屏幕内容 内容多的话,把buffer保存成文件,传到本地

1 个赞

谢谢,有帮助!用 @lululau 提供的 set -g mouse off 就能用鼠标选中复制了。

我先暂时讲 @lululau 的答案标记为解决方案,如果其它人有更好的方式也欢迎继续评论。

1 个赞

谢谢,这也是一个办法,不过就是就是有点麻烦。

你的合作方也许出于保护源代码的需求,或者是为了更好解决编辑冲突,毕竟多人协作。

我也推荐直接在远程边编辑,原因在 这里 。本地/远程双向共享剪贴板的设置可参考 这里

简单的错误信息就不要折腾远程剪贴板了,直接本地拷屏幕,把终端缓冲设置大一点。如果错误信息多到终端显示不下,也就不适合用剪贴板了,直接重定向到文件,然后下载到本地。

为什么你 tramp 到本地的一个孤立的文件可以编译&调试?项目只有一个文件?

2 个赞

谢谢!我能理解并正在适应这种远程编辑代码的方式。你提到的 keybindings in tmux that allow you to copy/paste to/from your OS X clipboard from tmux running inside an SSH connection to a remote hosttmux-yank 两种 共享剪切板的方法都很值得借鉴。至于 tramp mode, 我只是偶尔会用它更改一些配置文件,并不会在本地编译程序。

网上有一篇 ZSH, tmux, Emacs and SSH: A copy-paste story | 中文翻译 - EMACS-DOCUMENT,但是看了一会没搞懂要怎么用。