ssh - 在远程会话中使用 tmux 选择鼠标后复制到客户端剪贴板
问题描述
这是我的 .tmux.conf
setw -g mouse on
set-option -s set-clipboard off
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"
在本地的 linux 机器上运行良好。鼠标选择会自动复制到系统剪贴板。
但是,在远程会话(iTerm + Mac)中,它不起作用。文本不会复制到客户端的系统剪贴板。显然我必须使用 OSC 52。这是一个帮助脚本。
您可以像这样使用脚本:
echo "whatever text" | osc52.sh
现在“任何文本”都被复制到客户端的系统剪贴板。
但是我无法让脚本与 tmux 鼠标选择一起使用:
setw -g mouse on
set-option -s set-clipboard off
osc52="~/osc52.sh"
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "$osc52"
任何帮助表示赞赏。谢谢!
解决方案
这不是使用 OSC 52 的方法。您不能从脚本发送它 - 从复制管道运行的命令的所有输出都将被忽略。
相反,您需要配置 tmux 本身来执行此操作。尝试以下操作:
1)删除绑定键命令,只保留 MouseDragEnd1Pane 作为默认值,即复制选择。
2) 将 set-clipboard off 更改为 set-clipboard on。请记住在更改 .tmux.conf 后完全重新启动 tmux。
3) 确保 tmux 外部的 TERM 是 xterm 或 xterm-256color,以便 tmux 从默认的终端覆盖中添加 Ms 功能。这应该是 iTerm2 中的默认设置。确保您没有从 .tmux.conf 中的终端覆盖中删除它。
4)在iTerm2中,我认为你需要打开这个选项,“终端中的应用程序可以访问剪贴板”:
推荐阅读
- javascript - 请在此处查找错误。单击按钮后,单词会在框中出现并消失
- reactjs - 仅当道具更新(而不是状态)时才反应组件挂钩
- windows - 如何在 Powershell 中的 System.String 类型的字符串中添加值
- python - 使用 pd.to_datetime 将字符串日期转换为日期时间格式时出错
- android - 将片段添加到片段中
- python - 为什么不是所有模块都导入了,但仍然可以使用?
- angular - 应用请求标头角度 6
- javascript - 更快更优化的文件上传方式
- regex - 请求文件名问题上的最终 r 重写 apache
- sql - SQL查询以获取两个日期之间每一天的总和