tmux.conf:如果在键绑定中

问题描述 投票:0回答:2

(抱歉,英语不好) 我的目标:根据“变量”执行不同的命令,但使用一个键绑定

我想用 S(大写 s)取消/激活窗格同步,因为小 s 用于显示不同的会话,但我真的不知道如何写。 (当然我可以重新绑定 s,但是 Sessions 的那个小 s 已经烙在我的脑海里了)

我想也许是这样的:

bind S "if (snychronize-panes=on)"; then "setw synchronize-panes off": else "setw synchronize-panes on"

我尝试用变量替换“synchronize-panes”,但我不知道如何在 tmux.conf 中编写正确的 if 子句。

syntax config tmux
2个回答
0
投票

这应该可以使用内置变量

pane_synchronized
if-then-else 的格式版本:
#{?expression,value-if-true,value-if-false}

bind-key S set-window-option -F synchronize-panes #{?pane_synchronized,off,on}

正如尼古拉斯·马里奥特(Nicholas Marriott)在评论中所说,如果没有为开/关选项提供任何值,它将简单地切换,因此您可以简单地:

bind-key S set-window-option synchronize-panes 

0
投票

详细阐述 jeremysprofile 的评论以对您的问题进行一般性回答:

至少从 tmux 3.1c 开始,您可以使用

if-shell
-F
标志有条件地将键绑定到命令。来自手册:

如果给出 -F,则不执行 shell-command,但如果既不为空也不为零(扩展格式后)则认为成功。

因此,例如,

bind-key -T copy-mode-vi v if-shell -F '#{selection_present}' 'send-keys -X clear-selection' 'send-keys -X begin-selection'

在复制模式下切换选择。

© www.soinside.com 2019 - 2024. All rights reserved.