假设在tmux窗口中有3个窗格:vim
,vom
和vam
我想访问第一个窗格的窗格标题作为键盘映射的一部分(如果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
是否在不同的上下文中执行?
感谢您的帮助
答案 0 :(得分:1)
在终端中运行tmux list-keys
,查看C-h
映射到的内容。我得到这样的东西:
bind-key C-t run-shell "tmux display-message "name1
name2
name3""
从上面可以看出,当键绑定时,时会发生反向插值,而不是在绑定执行时。
我不知道如何解决这个问题,因为有很多嵌套命令,你必须承受很多痛苦。
就个人而言,当黑客攻击tmux时,我总是应用“尽快进入shell”的规则。 对于你的例子,这意味着:
bind -n C-h run "/path/to/script.sh"
创建一个脚本,使其可执行,并将其余的内容放入其中。这将是它的内容:
tmux display-message "`tmux list-panes -F '#{pane_title}'\`"
我刚刚做到了,它在我当地工作。希望有所帮助!