在 tmux 会话中无法使用 pbcopy

lag*_*lot 64 tmux macos

在雪豹上运行从端口安装的 tmux 1.4 我无法使用内置的 OSXpbcopy命令。

之外tmux

> echo "abc" | pbcopy
> echo $(pbpaste) # or using ^v
abc
Run Code Online (Sandbox Code Playgroud)

但里面tmux

> echo "123" | pbcopy
> echo $(pbpaste)
abc
Run Code Online (Sandbox Code Playgroud)

我已经搜索了手册页,但找不到任何可能与此行为相关的选项。我也不明白为什么tmux会搞乱 shell 重定向。

有人有任何线索吗?

Wil*_*ord 75

使用自制软件

brew install reattach-to-user-namespace --with-wrap-pbcopy-and-pbpaste
Run Code Online (Sandbox Code Playgroud)

或 Macports

sudo port install tmux-pasteboard
Run Code Online (Sandbox Code Playgroud)

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

set-option -g default-command "reattach-to-user-namespace -l zsh"
Run Code Online (Sandbox Code Playgroud)

您可能想换出zsh您正在使用的任何外壳程序,为了可移植性,您可能应该使用$SHELL.

取自 => robots.thoughtbot.com

  • 如果你使用的是 bash 而不是 `zsh`,请使用 `bash` (6认同)
  • 选项`--wrap-pbcopy-and-pbpaste` 被弃用,改为使用`--with-wrap-pbcopy-and-pbpaste`! (5认同)
  • tmux.conf 的一个更强大的选项是`set-option -g default-command "reattach-to-user-namespace -l $SHELL"` (4认同)

小智 11

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

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

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

有关更多信息,请参阅github上 Homebrew 项目的拉取请求


mmr*_*ins 6

我发现了一个github 项目,它包装了 tmux,以便 pbpaste 和 pbcopy 工作并且没有描述的导致 Homebrew 删除补丁的问题。它很容易安装,只需一点点编译和 .tmux.conf 中的一行

Homebrew 有一个补丁,但正如其他人提到的,它被取消了,因为它会导致重新附加的问题。

有一个针对 tmux问题,但它已关闭,因为 tmux 作者没有 Mac 可以测试。github tmux-MacOSX-pasteboard 项目上的 README 详细说明了在这种情况下修补 tmux 为何困难的原因,以及围绕这种情况的其他大量信息。它适用于我的 OSX 10.6,阅读代码看起来它也适用于 10.5。


ter*_*ace 1

这里有一张开放票: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
Run Code Online (Sandbox Code Playgroud)