我喜欢称它为:带有巨大卷轴的窗格上的清除历史。但是,我想通过脚本将此命令发送到各个窗口中的所有窗格。
由于这个问题,我知道如何向所有窗口发送命令,但如何向哪个窗口的所有窗格发送命令呢?
我想到了tmux manpage中的发送键和同步窗格,但我不确定如何将它们结合在一起。但也许有一种更简单的方法。
额外的观察:
稍微考虑一下,tmux list-panes -a似乎列出了当前会话中的所有窗格。开始的时候很有用。我该往哪里走?
我喜欢称它为:带有巨大卷轴的窗格上的清除历史。但是,我想通过脚本将此命令发送到各个窗口中的所有窗格。
由于这个问题,我知道如何向所有窗口发送命令,但如何向哪个窗口的所有窗格发送命令呢?
我想到了tmux manpage中的发送键和同步窗格,但我不确定如何将它们结合在一起。但也许有一种更简单的方法。
额外的观察:
稍微考虑一下,tmux list-panes -a似乎列出了当前会话中的所有窗格。开始的时候很有用。我该往哪里走?
当前回答
如果你想把你的命令发送到每个会话的每个窗口的每个窗格,把这个添加到你的.bashrc:
send_command_to_every_pane() {
for session in `tmux list-sessions -F '#S'`; do
for window in `tmux list-windows -t $session -F '#P' | sort`; do
for pane in `tmux list-panes -t $session:$window -F '#P' | sort`; do
tmux send-keys -t "$session:$window.$pane" "$*" C-m
done
done
done
}
然后你可以这样使用它:
send_command_to_every_pane source ~/.bash_profile
如果您想要这种行为,请将“$*”更改为“$@”,但根据我的经验,这正是您想要的。
其他回答
我的tmux版本是1.9a,这对我来说是可行的,一个键足够开和关
bind-key X set-window-option synchronize-panes\; display-message "synchronize-panes is now #{?pane_synchronized,on,off}"
你试过在tmux窗口中跟随多个窗格吗
Ctrl-B :
setw synchronize-panes on
clear history
默认情况下,byobu使用tmux作为后端。它是一个让事情变得更简单的包装器:
Shift + F9:
Ctrl + F9:
Shift + F1
无可否认,这只是半相关的,我发现当我切换同步窗格时,我可以让状态背景变成红色,所以当我切换回一个同步窗格状态未知的窗口时,很明显:
bind-key C-x setw synchronize-panes on \; set-window-option status-bg red \; display-message "pane sync on"
bind-key M-x setw synchronize-panes off \; set-window-option status-bg default \; display-message "pane sync off"
如果你想把你的命令发送到每个会话的每个窗口的每个窗格,把这个添加到你的.bashrc:
send_command_to_every_pane() {
for session in `tmux list-sessions -F '#S'`; do
for window in `tmux list-windows -t $session -F '#P' | sort`; do
for pane in `tmux list-panes -t $session:$window -F '#P' | sort`; do
tmux send-keys -t "$session:$window.$pane" "$*" C-m
done
done
done
}
然后你可以这样使用它:
send_command_to_every_pane source ~/.bash_profile
如果您想要这种行为,请将“$*”更改为“$@”,但根据我的经验,这正是您想要的。