如果从键绑定查询,tmux仅显示当前窗格标题

时间:2014-08-30 10:04:11

标签: tmux

假设在tmux窗口中有3个窗格:vimvomvam

我想访问第一个窗格的窗格标题作为键盘映射的一部分(如果vim在窗格1中,则向前移动命令)。它没有按预期工作,我把它缩小到以下......

如果我跑:

tmux display-message "`tmux list-panes -F '#{pane_title}'`"

结果是:

vim
vom
vam

这是我所期待的。如果我尝试从键映射运行相同的内容:

bind -n C-h run "tmux display-message \"`tmux list-panes -F '#{pane_title}'`\""

我重复了三次当前窗格的标题:

vom
vom
vom

run-shell是否在不同的上下文中执行?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

在终端中运行tmux list-keys,查看C-h映射到的内容。我得到这样的东西:

bind-key        C-t run-shell "tmux display-message "name1
name2
name3""

从上面可以看出,当键绑定时,时会发生反向插值,而不是在绑定执行时。

我不知道如何解决这个问题,因为有很多嵌套命令,你必须承受很多痛苦。

就个人而言,当黑客攻击tmux时,我总是应用“尽快进入shell”的规则。 对于你的例子,这意味着:

  1. 简化密钥绑定:bind -n C-h run "/path/to/script.sh"
  2. 创建一个脚本,使其可执行,并将其余的内容放入其中。这将是它的内容:

    tmux display-message "`tmux list-panes -F '#{pane_title}'\`"
    
  3. 我刚刚做到了,它在我当地工作。希望有所帮助!