在 tmux 会话中无法使用 pbcopy

在 tmux 会话中无法使用 pbcopy

运行从 snow-leopard 上的端口安装的 tmux 1.4 时,我无法使用内置的 OSXpbcopy命令。

在外面tmux

> echo "abc" | pbcopy
> echo $(pbpaste) # or using ^v
abc

但里面tmux

> echo "123" | pbcopy
> echo $(pbpaste)
abc

我仔细阅读了手册页,但找不到任何可能与此行为相关的选项。我也不明白为什么tmux要弄乱 shell 重定向。

有人有任何线索吗?

答案1

使用 homebrew

brew install reattach-to-user-namespace --with-wrap-pbcopy-and-pbpaste

或 Macports

sudo port install tmux-pasteboard

将以下内容添加到 ~/.tmux.conf 的顶部

set-option -g default-command "reattach-to-user-namespace -l zsh"

您可能想要将 换成zsh您正在使用的 shell,出于可移植性的考虑,您可能应该使用$SHELL

摘自 => robots.thoughtbot.com

答案2

tmux从控制台分离时(为了支持连接/分离),它会以一种不再允许其与 GUI 通信的方式进行。

Apple 的 GNU 补丁screen使用私有系统调用以不同的方式进行分离。Macports 错误跟踪器中有一个补丁可以使pbcopy/pbpaste重新工作。我还将其提交给了 Homebrew 存储库,在那里它被短暂接受,然后又被恢复。

这是因为当应用此补丁时,它会导致 tmux 在重新连接到会话时崩溃。

查看github 上的 pull request有关 Homebrew 项目的更多信息。

答案3

我发现了一个包装 tmux 的 github 项目这样 pbpaste 和 pbcopy 就可以正常工作,并且不会出现导致 Homebrew 删除补丁的问题。安装起来非常简单,只需进行少量编译并在 .tmux.conf 中添加一行即可

Homebrew 有一个补丁,但是正如其他人提到的那样,它被撤回了,因为它导致了重新连接的问题。

有一个针对 tmux 提出的问题,但由于 tmux 作者没有 Mac 可以测试,因此它被关闭了。github tmux-MacOSX-pasteboard 项目的 README 详细说明了为什么在这种情况下修补 tmux 很困难,以及大量有关该情况的其他信息。它对我来说可以在 OSX 10.6 上运行,阅读代码后看起来它也可以在 10.5 上运行。

答案4

这里有一张未结票:http://sourceforge.net/tracker/index.php?func=detail&aid=2960136&group_id=200378&atid=973265

日期:2010-02-28 11:20:57 UTC 发件人:nicm

当然,没有理由不能直接将 tmux showb 传送给它。

日期:2010-02-28 11:20:05 UTC 发件人:nicm

除非有人给我发送一些代码或者一些装有 OS X 的硬件。

我尝试将 showb 传送到 pbcopy,但没有成功。

~: echo "12345"
12345
[use copy-mode to copy "12345"]
~: tmux showb
12345
~: tmux showb | pbcopy
~: pbpaste

相关内容