我在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)
答案 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,因此相关性可能有限。