我想要删除使用ctrl+b arrow-keys选择的窗格。这是因为我有一个使用tmux clock-mode -t 2显示时间的窗格,我永远不想切换到那个窗格。
发布于 2018-07-08 22:13:36
这个解决方案类似于我在姊妹网站unix.stackexchange上回答的一个问题,并不完美。
tmux为每个窗格都有一个标志,表明它是否处于某种模式。例如,时钟模式下窗格的display -p #{pane_in_mode}将打印1。不幸的是,你不能区分复制模式和时钟模式。但是,如果您不太可能一次有多个窗格处于一种模式,您可以编写一个小的shell脚本来拦截适当的绑定,并测试所产生的移动是否以某种模式的窗格结束。如果是这样的话,脚本会重复移动,可能会移动到下一个窗口。
在您的路径中创建以下文件mytmux并将其设置为可执行文件(chmod +x mytmux):
#!/bin/bash
# https://stackoverflow.com/a/51232832/5008284
noclock(){
tmux "$@"
inmode=$(tmux display -p '#{pane_in_mode}')
[ "$inmode" = 1 ] && tmux "$@"
exit 0
}
case $1 in
-noclock)shift
: ${1?select-pane cmd and args}
noclock "$@" ;;
esac然后在~/.tmux.conf中设置以下绑定
bind-key -T prefix o run-shell 'mytmux -noclock select-pane -t :.+'
bind-key -T prefix l run-shell 'mytmux -noclock select-pane -l'
bind-key -r -T prefix Up run-shell 'mytmux -noclock select-pane -U'
bind-key -r -T prefix Down run-shell 'mytmux -noclock select-pane -D'
bind-key -r -T prefix Left run-shell 'mytmux -noclock select-pane -L'
bind-key -r -T prefix Right run-shell 'mytmux -noclock select-pane -R'例如,如果您想要处理多个会话,则需要扩展它。我把select-pane -l放在绑定中,但这并不有用,因为如果它重复,它就会回到你开始的地方。
https://stackoverflow.com/questions/51229587
复制相似问题