带有vi复制模式绑定和xclip的Tmux 2.4+:
set-option -g mouse on
set-option -s set-clipboard off
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -se c -i"
对于较旧的tmux版本,emacs复制模式绑定(默认设置)或非X平台(即,没有xclip),请参见以下说明。
说明:首先,我们需要启用mouse选项,以便tmux捕获鼠标并让我们绑定鼠标事件:
set-option -g mouse on
Gnome-terminal不支持使用xterm转义序列设置剪贴板,因此我们应确保set-clipboard
关闭该选项:
set-option -s set-clipboard off
默认情况下,iTerm2上可能支持并启用了此选项(请参阅set-clipboard
tmux手册),这将解释该行为。
然后,我们可以将复制模式MouseDragEnd1Pane
“键” 绑定到tmux命令,该复制模式“键”是在单击并在窗格中拖动并释放后释放第一个鼠标键时使用的,该命令获取当前的复制模式选择(默认绑定为MouseDrag1Pane
)并将其通过管道传输到shell命令。此tmux命令copy-pipe
在tmux 2.4之前,并且已更改为send-keys -X copy-pipe[-and-cancel]
。对于shell命令,我们只需要一些东西即可将系统剪贴板的内容设置为通过管道传递给它的内容。xclip在以下命令中用于执行此操作。"xclip -selection clipboard -i"
在非X平台上,以下等价的替代品是"wl-copy"
(Wayland),"pbcopy"
(macOS),"clip.exe"
(Windows,WSL)和"cat /dev/clipboard"
(Cygwin,MinGW)。
Tmux 2.4+:
# For vi copy mode bindings
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"
# For emacs copy mode bindings
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"
Tmux 2.2至2.4:
# For vi copy mode bindings
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "xclip -selection clipboard -i"
# For emacs copy mode bindings
bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "xclip -selection clipboard -i"
在tmux 2.2之前:
通过将新mode-mouse
选项设置为,鼠标拖动支持后复制最初是在Tmux 1.3中添加的on
。Tmux 2.1将鼠标支持更改为熟悉的鼠标键绑定,但是没有DragEnd
绑定(在2.2中引入了绑定)。因此,在2.2之前,我相信在鼠标拖动时设置系统剪贴板的唯一方法是通过内置使用xterm转义序列(该set-clipboard
选项)。这意味着必须至少更新到tmux 2.2才能获得不支持的终端set-clipboard
(例如GNOME Terminal)的拖放行为。