在 tmux 中,我有一个 3 列和 2 行的布局,第一行是到我所有服务器的 ssh 连接,底部是运行在顶部的所有相同服务器。
我正在尝试同步第一行,所以如果我输入一个命令,所有三个窗格都复制相同的命令,我尝试了 synchronize-panes 但正如手册页所说,它将通过所有窗格运行命令,然后对我的所有窗格造成严重破坏底部行的“顶部”。
无论如何要同步一组窗格?
在 tmux 中,我有一个 3 列和 2 行的布局,第一行是到我所有服务器的 ssh 连接,底部是运行在顶部的所有相同服务器。
我正在尝试同步第一行,所以如果我输入一个命令,所有三个窗格都复制相同的命令,我尝试了 synchronize-panes 但正如手册页所说,它将通过所有窗格运行命令,然后对我的所有窗格造成严重破坏底部行的“顶部”。
无论如何要同步一组窗格?
这不完全是您正在寻找的东西,但它非常接近。这个想法是将一个键绑定到一组命令以:
这是命令的样子
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 个窗格中运行
您可以使用 禁用窗格上的输入select-pane -d
。要再次启用它,请执行select-pane -e
我的前缀中有一个快捷方式:
bind -T marcos d select-pane -d
bind -T marcos e select-pane -e