以下配置在tmux 2.4以上版本通过。
多个pane的情况下,如果是按住shift用鼠标左键拖动,会横跨多个pane,从而copy到不需要的文字。
经过多次尝试,最后试出了在本地shell和远程ssh都可以copy单独一个pane中的文字:
#########################################################
# In WSL or cygwin, let tmux pipe copy result to clip.exe
# bind-key -T copy-mode Enter send-keys -X copy-pipe-and-cancel clip.exe \; run-shell "tmux show-buffer | clip"
#########################################################
# In MobaXterm pipe copy result to xclip
# STEP 1. sudo yum install xorg-x11-xauth
# STEP 2. restart session and make sure XServer is enabled
#########################################################
#bind-key -T copy-mode Enter send-keys -X copy-pipe-and-cancel xclip
#########################################################
如果是WSL或cygwin,就是让tmux将文字输出到clip.exe中,这是windows的剪贴板小程序。
如果是ssh而且远程的机器没有桌面环境,比较复杂些,废了我不少时间。需要用到xserver,所以最好用MobaXterm,自带xserver。
然后在远程的机器上安装xorg-x11-xauth,确保重新连接时X11后面是勾勾。
这时候tmux会将内容发送给xclip,xclip再通过X11发给MobaXterm。
然后就是在pane中手动鼠标,出现黄色选中区域时按Enter,文字就到系统剪贴板里面了。