我的目标是在linux中复制中间鼠标复制粘贴功能。
我可以通过以下方式在窗格中显示此剪贴板的输出:
32767
我想直接将此输出插入到窗格中(即类似于bind-key -T root MouseDown2Pane run-shell "xclip -selection primary -o"
),但我没有看到将两个命令链接在一起的方法。
我正在运行tmux 2.1版。
答案 0 :(得分:5)
这可以通过将shell命令的输出重定向到(临时文件),然后使用tmux load-buffer
和paste-buffer
命令将该文件的内容直接插入到窗格中来实现:< / p>
bind-key -T root MouseDown2Pane run-shell "xclip -selection primary -o >~/.tmux-buffer-tmp" \; load-buffer -b tmp-copy-buffer ~/.tmux-buffer-tmp \; paste-buffer -b tmp-copy-buffer -d \; run-shell -b "rm ~/.tmux-buffer-tmp"
解释每一步:
run-shell "xclip -selection primary -o >~/.tmux-buffer-tmp"
使用xclip实用程序将剪贴板的内容插入临时文件load-buffer -b tmp-copy-buffer ~/.tmux-buffer-tmp
将上述文件的内容加载到tmux缓冲区paste-buffer -b tmp-copy-buffer -d
将这些内容direty粘贴到活动窗格中(并删除临时缓冲区,以便通过鼠标单击来保持缓冲区的状态不变)run-shell -b "rm ~/.tmux-buffer-tmp"
删除临时文件。答案 1 :(得分:3)
另一种不需要临时文件的方法是:
bind-key -T root MouseDown2Pane run-shell 'tmux set-buffer -b x-clip "$(xsel -op)"' \; paste-buffer -b x-clip -d
分解:
bind-key -T root MouseDown2Pane
:绑定到鼠标中键点击根密钥表中的一个窗格(当你不处于复制模式并且没有按下前缀时适用)run-shell 'tmux set-buffer -b x-clip "$(xsel -op)"'
:这有点hacky,但它在shell中使用另一个tmux命令运行set-buffer
tmux命令。这样我们就可以扩展xsel
命令的输出以获取剪贴板内容paste-buffer -b x-clip -d
:粘贴缓冲区的内容,并将其删除。另一种方法:
bind-key -T root MouseDown2Pane run-shell 'xclip -o | tmux load-buffer -bxclip -' \; paste-buffer -bxclip -d