【问题标题】:Copy to client clipboard after mouse selection with tmux in a remote session在远程会话中使用 tmux 选择鼠标后复制到客户端剪贴板
【发布时间】:2020-03-13 00:13:53
【问题描述】:

这是我的 .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。这是helper script

你可以像这样使用脚本:

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"

感谢任何帮助。谢谢!

【问题讨论】:

    标签: ssh copy-paste tmux iterm


    【解决方案1】:

    这不是使用 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中,我认为你需要开启这个选项,“Applications in terminal may access clipboard”:

    【讨论】:

    • 不起作用。这是我的 .tmux.conf:setw -g mouse on set-option -s set-clipboard on
    • 您在更改 .tmux.conf 后是否重新启动了整个 tmux? echo $TERM 在 tmux 外面说什么? tmux show -s terminal-overrides 在 tmux 里面说什么?
    • xterm-256color 和终端覆盖[0] "xterm*:XT:Ms=\\E]52;%p1%s;%p2%s\\007:Cs=\\E ]12;%p1%s\\007:Cr=\\E]112\\007:Ss=\\E[%p1%d q:Se=\\E[2 q" 终端覆盖[1]"屏幕*:XT
    • 这应该可行,也许您需要在 iTerm2 中更改其他内容。
    猜你喜欢
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多