使用多个窗格时,使用tmux复制模式(ctrl+b [
)可以使用窗格感知的复制很方便。但是,复制模式将复制到tmux复制缓冲区中,而不是复制到系统剪贴板中。理想情况下,我也希望副本也自动复制到系统剪贴板中。
一个基本的出发点是将此别名添加到我的bashrc中:
alias tmux2clip='tmux save-buffer - | xsel -i -b'
(在Linux上,需要安装xsel)alias tmux2clip='tmux save-buffer - | pbcopy'
(在macOS上)使用复制模式复制后,我将运行别名并将文本复制到剪贴板中!像魅力一样工作,但始终需要一个额外的手动步骤。
如果该别名可以作为我在tmux中配置的“发布tmux复制钩子”触发,那将是理想的。
我想出的最好的办法是在我的~/.tmux.conf
中的这一行:
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xsel -i -b"
# similarly, I believe only needed for keyboard based copies:
bind-key -T copy-mode C-w send-keys -X copy-pipe-and-cancel "xsel -i -b"
bind-key -T copy-mode M-w send-keys -X copy-pipe-and-cancel "xsel -i -b"
这会导致任何基于鼠标的选择(注意:与基于键盘的选择相比,我更喜欢使用鼠标选择)来触发该选择的副本到我的系统剪贴板中。不过令人讨厌的是,它总是会发生,即不仅在复制模式下,而且在我选择发生任何事情的任何时候。事实证明,这在实践中非常敏感,只需用鼠标单击窗口以使其聚焦就经常会偶然触发少量选择(通常不小心覆盖了剪贴板中的现有内容,有时会导致粘贴与预期完全不同的东西)。
我搜索了许多类似的问题,但是找不到满意的答案。我真的希望找到一种获取“ post tmux copy hook”的方法,在其中可以插入copy-to-clipboard命令。
我使用带有tmux 2.6的Ubuntu 18.04。另请注意,我在~/.tmux.conf
中使用鼠标模式:
set -g mouse on
任何帮助将不胜感激。我已经想要这个了很多月了,我所有的复兴努力都只是浪费了时间:(
答案 0 :(得分:2)
如果您不希望tmux在窗格上拖动时进入复制模式,请在根表中取消绑定MouseDrag1Pane(取消绑定-n MouseDrag1Pane)。