tmux:在run-shell命令后挂起,不响应任何命令

时间:2013-11-23 02:01:33

标签: tmux

我在tmux 1.8中遇到绑定问题。

当我键入运行shell的命令时出现问题 例如:

bind y run-shell "tmux show-buffer | xclip -sel clip -i"

我输入y 执行命令后,tmux不响应任何其他绑定(例如w) 可能需要几分钟,然后您可以使用绑定。

可能是什么问题? 它出现在1.8版本(1.7版本都可以) OS Ubuntu 13.04(64)

3 个答案:

答案 0 :(得分:9)

  

从tmux缓冲区读取后,xclip似乎没有关闭STDOUT。因此,tmux不知道复制任务已完成,并继续/等待xclip的终止,从而导致窗口管理器无响应。

源:https://wiki.archlinux.org/index.php/Tmux#X_clipboard_integration

将输出管道输出到/dev/null应修复它:

bind y run-shell "tmux show-buffer | xclip -sel clip -i > /dev/null"

有关详细信息,请参阅https://stackoverflow.com/a/21190234/109282

答案 1 :(得分:2)

问题是tmux正在等待该命令返回,并且它会挂起。这有效地阻止您执行任何tmux命令。我通过在run-shell之后添加-b来解决这个问题,这使命令在后台运行。问题在于这些过程很常见,所以这不是一个完美的解决方案。

解决此问题的另一种方法是关闭窗口并重新连接会话。

答案 2 :(得分:0)

在这些情况下,只需将'tmux show-buffer'更改为'tmux save-buffer - '通常会改善tmux的行为。重定向到文件的'show-buffer'对我来说是无限期挂起的,并且还将它传递给xclip导致不需要的长行包装,而'save-buffer - '(根据G Mawr链接的线程)完美地工作。

我怀疑是因为'show-buffer'假设它正在与终端通话,而'save-buffer'则没有。

E.T.A。我正在使用tmux-1.6-3,因此相关性可能有限。