如何绑定一个键来发送shell命令(例如“source ~/.bashrc”)到tmux会话中所有窗口的所有tmux窗格?

pepwfjgg  于 2023-02-05  发布在  Shell
关注(0)|答案(1)|浏览(157)

场景:我编辑了~/.zshrc,我想在所有的tmux窗格中,在所有的窗口中,在一个给定的会话中,我想用一个键绑定,从任何一个窗格中完成这个任务。
我尝试查看How to send a command to all panes in tmux?,它使用setw synchronize-panes on,然后运行一个tmux ex模式命令;但我想运行source $HOME/.zshrc(一个shell命令),我对如何运行有点困惑。
我希望它是一个可以放入.tmux.conf的键绑定,这样我只需要按 prefix +<key_combo> 就可以执行这个操作,然后一切都恢复到我运行这个命令之前的状态(例如,我不必担心取消设置命令设置的任何tmux选项)

gcxthw6b

gcxthw6b1#

这对你有用:

# send "source ~/.bashrc<Enter>" to all panes in *current* session
bind  B  run 'panes=`tmux list-panes -s -F "##{pane_id}"`; \
              for pane in $panes; do \
                tmux send -t $pane "source ~/.bashrc" Enter; \
              done'

# send "source ~/.zshrc<Enter>" to all panes in *current* session
bind  Z  run 'panes=`tmux list-panes -s -F "##{pane_id}"`; \
              for pane in $panes; do \
                tmux send -t $pane "source ~/.zshrc" Enter; \
              done'

相关问题