【问题标题】:tmux only shows current pane title if queried from a key binding如果从键绑定查询,tmux 仅显示当前窗格标题
【发布时间】:2014-08-30 10:04:10
【问题描述】:

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

我想作为键盘映射的一部分访问第一个窗格的窗格标题(如果 vim 在窗格 1 中,则将命令转发到 vim)。它没有按预期工作,我已将其范围缩小到以下...

如果我跑:

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 是否在不同的上下文中执行?

感谢您的帮助

【问题讨论】:

    标签: tmux


    【解决方案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}'\`"
      

    我刚刚做了,它在本地对我有用。希望对您有所帮助!

    【讨论】:

    • 有趣的是,list-keys 没有向我显示该输出(运行 1.9a)。将我的逻辑拆分成一个脚本确实解决了我的问题,所以谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多