tmux 和剪贴板

tmux 支持鼠标,甚至支持选一段东西之后自动发给剪贴板。这个功能很好用,比如在想从终端贴一段文字到浏览器的时候之类…… 然而这个功能有时候需要一些配置。折腾一波之后,发现主要是这么几个部分: 首先 tmux 需要打开鼠标支持,并且让它在复制完之后去设置剪贴板: set -g mouse onset -g set-clipboard on 然而这并没完。所谓“设置剪贴板”,其实就是发一段东西给外面的终端模拟器(tmux 归根结底只是发各种东西给终端模拟器而已……),说“设置剪贴板为XXX”。这段东西就是OSC 52。OSC就是“operating system command”,就是某种终端控制序列,用来和系统交互的…… OSC 52 就是里面的命令52,功能是设置剪贴板。 然而 tmux 其实依赖某些信息来告诉他“外面这个终端模拟器支持OSC 52”。这个就是 terminfo 里面的 Ms 能力(属性?)。这个告诉了 tmux,要设置剪贴板应该发什么格式的东西给终端模拟器。 然而我现在用的 term(st-256color)里面貌似并没有这个…… 结果就是就算开了上面这俩,tmux 也不干活。 正确的修正方法当然是把那个属性加进 terminfo,但是这个挺麻烦的,而且每个系统都要加…… 理想状况下我可以只用 tmux.conf 解决问题。 解决方法当然是有的:直接在 tmux.conf 里面修改 terminfo 给的结果…… 所以可以直接告诉 tmux,对某些 terminal(我这里是st*),设置剪贴板就发这个: set -g terminal-overrides[2] ‘st*:XT:Ms=\E]52;%p1%s;%p2%s\007’ 我其实还添加了 Tc,所以怎么样都认为支持24位色…… 不过这就是另一个事情了。 搞了这俩之后,tmux …

Continue reading ‘tmux 和剪贴板’ »