使用同步窗格对 tmux 会话和窗口进行交互式搜索

使用同步窗格对 tmux 会话和窗口进行交互式搜索

我根据 [1] 中 bartj3 的帖子使用了此 tmux 配置。

bind j split-window -v "tmux list-sessions -F '#S' | fzf --reverse | xargs tmux switch-client -t"
bind k split-window -v "tmux list-window -F '#W' | fzf --reverse | xargs tmux select-window -t"

它让您以交互方式(边输入边搜索)按名称搜索其他会话和窗口,从而更有效地在它们之间切换。

问题:

如果在同步窗格打开的情况下使用上述操作,您的搜索按键也将在其他(非搜索)窗格中输入。

问题:

有人知道如何限制搜索窗格的按键吗?

[1]tmux 会话的交互式搜索

答案1

synchronize-panes您可以在调用 之前保存 的当前状态fzf,然后on在必要时将其恢复到 状态。例如,这对我来说很有效,使用 bash 作为默认 shell:

bind-key k split-window -v '\
 if [[ $(tmux show-window-option synchronize-panes) == *on ]];\
 then tmux set-window-option -q synchronize-panes off;\
     restore="tmux set-window-option -q synchronize-panes on";\
 fi;\
 tmux list-windows -F "#W" | fzf --reverse | xargs tmux select-window -t;\
 $restore'

由于这是一个较长的 shell 命令,因此可以将其拆分为多行,前提是每行都以反斜杠结尾,并且 shell 分号 (;) 的使用方式与一行相同。您可能更愿意将其作为 shell 脚本放在 PATH 中的文件中,然后调用它。

相关内容