如何在 Linux 上的 xterm 中从系统剪贴板中的 Tmux 中复制/粘贴?

999*_*ars 9 linux

在 Tmux 中进行选择时,我想从系统 (X11) 剪贴板中复制和粘贴,并且我想将这些操作绑定到鼠标;左键单击复制,中键单击粘贴。

999*_*ars 7

对于旧版本的 Tmux (<1.5) 或其他系统,请尝试tmux-yank. 然而,对于这种特定情况,Tmux 非常好地与系统集成。

在您的 中~/.tmux.conf,添加:

set -g mouse on
set -g set-clipboard external
bind -T root MouseUp2Pane paste
Run Code Online (Sandbox Code Playgroud)

启用鼠标支持,复制到系统剪贴板,并绑定在窗格上单击鼠标中键进行粘贴。

而在你的~/.Xresources

xterm*selectToClipboard: true
xterm*disallowedWindowOps: 20,21,SetXProp
Run Code Online (Sandbox Code Playgroud)

让 Xterm 也选择到系统剪贴板,并允许 Tmux 修改剪贴板(“窗口操作”)。

然后,要将更改应用于您的~/.Xresources,运行xrdb -merge ~/.Xresources并重新启动 Xterm 和 Tmux。


为了支持 macOS 和 Windows Subsystem for Linux (WSL),我们可以添加

run-shell $HOME/.tmux.conf.sh
Run Code Online (Sandbox Code Playgroud)

~/.tmux.conf,然后~/.tmux.conf.sh使用以下内容创建:

set -g mouse on
set -g set-clipboard external
bind -T root MouseUp2Pane paste
Run Code Online (Sandbox Code Playgroud)

请注意,可以在 中进行其他“高级”配置选择.tmux.conf.sh,例如根据当前主机名、分布等设置配置值;usingif-shell也是一种选择,但在实践中通常非常笨拙,因此使用 shell 脚本是一种可接受的解决方案

还要注意奇怪的语法"${bind_copy[@]}",它在不执行 glob 扩展的情况下插入$bind_copy 数组