21

在 tmux 中,我有一个 3 列和 2 行的布局,第一行是到我所有服务器的 ssh 连接,底部是运行在顶部的所有相同服务器。

我正在尝试同步第一行,所以如果我输入一个命令,所有三个窗格都复制相同的命令,我尝试了 synchronize-panes 但正如手册页所说,它将通过所有窗格运行命令,然后对我的所有窗格造成严重破坏底部行的“顶部”。

无论如何要同步一组窗格?

4

2 回答 2

8

这不完全是您正在寻找的东西,但它非常接近。这个想法是将一个键绑定到一组命令以:

  1. 提示命令运行
  2. 使用“选择窗格”选择第一个顶级窗格
  3. 使用 'send-keys' 运行命令
  4. 对其他顶级窗格重复步骤 2 和 3

这是命令的样子

bind R command-prompt -p "Command :" "select-pane -t 0 \; send-keys "%1" C-m \; select-pane -t 2 \; send-keys "%1" C-m \; select-pane -t 4 \; send-keys "%1" C-m "

下面是一个完整的例子,让我们设置 6 个窗格,2 行,每行 3:

$ tmux new -s 'top_n_tail' \; split-window -h \; split-window -h \; select-layout even-horizontal \; detach
$ tmux att -t 'top_n_tail' \; select-pane -t 0 \; split-window \; detach
$ tmux att -t 'top_n_tail' \; select-pane -t 2 \; split-window \; detach
$ tmux att -t 'top_n_tail' \; select-pane -t 4 \; split-window

在 tmux 提示符 (Cb :) 上将 'R' 绑定到一组 tmux 命令,这些命令接受您的 bash 命令并将其发送到某些窗格:

:bind R command-prompt -p "Command :" "select-pane -t 0 \; send-keys "%1" C-m \; select-pane -t 2 \; send-keys "%1" C-m \; select-pane -t 4 \; send-keys "%1" C-m "

现在,当您按下 Cb R 时,系统会提示您输入命令

提示输入命令

仅在前 3 个窗格中运行

于 2015-06-29T07:19:39.337 回答
0

您可以使用 禁用窗格上的输入select-pane -d。要再次启用它,请执行select-pane -e

我的前缀中有一个快捷方式:

bind -T marcos d select-pane -d
bind -T marcos e select-pane -e
于 2022-02-25T17:36:53.550 回答