将tmux复制模式配置为还将副本转储到系统剪贴板中

时间:2019-09-05 19:01:03

标签: tmux

使用多个窗格时,使用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

任何帮助将不胜感激。我已经想要这个了很多月了,我所有的复兴努力都只是浪费了时间:(

1 个答案:

答案 0 :(得分:2)

如果您不希望tmux在窗格上拖动时进入复制模式,请在根表中取消绑定MouseDrag1Pane(取消绑定-n MouseDrag1Pane)。