从El Capitan中的Tmux复制到剪贴板


19

我对El Capitan的Terminal更改感到非常满意(例如,请参见此问题)。

但是,我不知道如何从Tmux中复制到系统剪贴板。例如,既然我现在能够通过鼠标在Tmux中正确选择文本,那么除了Tmux自己的缓冲区之外,我还如何将所选文本复制到剪贴板?

我的内容如下tmux.conf

setw -g mode-mouse on
set -g mouse-select-pane on
set -g mouse-resize-pane on
set -g mouse-select-window on

setw -g mode-keys vi
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection

我尝试将最后一行修改为

bind-key -t vi-copy 'y' copy-selection \; copy-pipe "pbcopy"

但这并没有真正起作用。不胜感激建议!

谢谢!


Cmd-C不起作用?
nohillside

1
@partix-否,因为释放鼠标按钮(或触控板)后会自动取消选择复制的文本。当然,它确实可以在Terminal中运行,但不能在Tmux中运行。
siphiuel

更新到Tmux 2.1破坏了Tmux窗格中的鼠标滚动。
siphiuel

Answers:


27

实际上,我只是找到了一个非常简单的解决方案,即如何再次使用Cmd + C启用复制。

在默认的终端应用程序中,转到“视图”->“允许鼠标报告”,然后取消选中它。而已。

PS:显然,取消选中鼠标报告后,新的不错的功能(例如在tmux中拖动分屏)将停止工作。


PS:我以前使用过@siphiuel的解决方案,它也可以正常工作。
Oplatek

1
谢谢!!!这是最简单的方法!只有历史被打破了。我只能看到历史故事的一部分
佐藤市

超好。该作品
ShikharDua '17

这也适用于远程tmux会话;我认为该bind-key ... copy-pipe解决方案仅在本地tmux会话中才有效。再说一遍,也许如果您在本地tmux会话中进行远程tmux会话,则可能有效吗?无论如何,取消选中“允许鼠标报告”对我来说是有效的,甚至还有一个快捷键⌘-R(Cmd-R),以便您可以快速将其关闭以进行复制,然后再次打开。
亚伦·瓦伦丁

24

如果您使用iTerm2 3.x,则可以通过启用Applications in terminal may access clipboard以下功能来进行复制/粘贴:

在此处输入图片说明

只需用鼠标突出显示文本即可将其复制到OS X剪贴板中!

您也可以使用常规Cmd+ 从OS X剪贴板粘贴到tmux V


2
这对我来说是最简单的解决方案。
lennart '17

这太棒了!
mljrg

17

如果按住功能键,您也可以选择并使用apple + c复制到剪贴板。


我们正在寻找的不仅仅是单行答案。尝试扩大答案以提供更多细节。
艾伦

2
@Allan即使只是一行,这也是一个完整的答案。就这么简单。
pkuhar

顺便说一句,我发现它仅适用于笔记本电脑键盘,不适用于附加键盘:(
amohr

8

实际上,当我说那copy-pipe行不通时,我错了。这样做确实copy-selection是多余的,因为copy-pipe它们既将文本复制到Tmux粘贴板,又通过管道传递到任意shell命令。因此,以下代码行有效:

bind-key -t vi-copy 'y' copy-pipe "pbcopy"

但是,y在释放鼠标按钮之前需要先按一下。我在tmux-yank插件的文档中偶然发现了这一点:

“使用tmux模式鼠标打开或模式鼠标复制模式进行选择时,不能依赖默认的'选择后释放鼠标进行复制'行为。相反,请在释放鼠标之前按y。”

这样就可以了,但是y为了复制鼠标选择的文本,需要按一些烦人的操作。


3
如果您使用的是Terminal.app:在macOS Sierra中,则由于Terminal.app行为的回归而无法使用。您将需要再次使用“重新附加到用户命名空间” hack。
m1keil 16/09/25

1
同意@ m1keil的评论。此外,由于某种原因,我不得不使用其他开关来编译重新连接到用户命名空间,例如:(brew install reattach-to-user-namespace --with-wrap-pbcopy-and-pbpaste我正在使用Homebrew)
siphiuel

4

使用tmux 2.2或更高版本,将以下内容添加到您的tmux.conf文件中:

bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "pbcopy"
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "pbcopy"

适用于El Capitan 10.11,tmux 2.7
荷马

3

@Oplatek的答案生效

在默认的终端应用程序中,转到“视图”->“允许鼠标报告”,然后取消选中它。

但是通过这种方式,我们将无法通过鼠标滚动屏幕。

这是不禁用的另一种方法Allow mouse reporting:按下Fn并用鼠标选择文本。


0

使用tmux 2.2,OS X El Capitan,Terminal Version 2.6.1(El Capitan附带的默认版本),以下设置可以正常工作(到目前为止)。

$ cat ~/.tmux.conf
set -g mouse on
bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "pbcopy"
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "pbcopy"

要复制,请按鼠标左键,标记文本,然后放开。然后,标记的文本位于剪贴板中,并且可以照常使用Cmd+ 粘贴v


-2

我只找到一种方法

在终端信息中打开终端设置/配置文件,将终端类型从xterm-256更改为ansi,打开新的终端窗口并享受:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.