我想删除一个窗格,使其不被选中ctrl+b arrow-keys
。这是因为我有一个显示使用时间的窗格tmux clock-mode -t 2
,我不想切换到该窗格。
问问题
36 次
1 回答
0
这个解决方案类似于我在姐妹网站unix.stackexchange上回答的问题,并不完美。
tmux 对每个窗格都有一个标志,说明它是否处于模式。例如,display -p #{pane_in_mode}
对于时钟模式下的窗格打印1
. 不幸的是,您无法区分复制模式和时钟模式。但是,如果您不可能一次在一个模式下拥有多个窗格,您可以编写一个小的 shell 脚本来拦截适当的绑定,并测试所产生的移动是否最终出现在一个模式下的窗格中。如果是这样,脚本会重复移动,可能到下一个窗口。
在您的 PATH 中创建以下文件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
了绑定,但这没有用,好像它重复它只会回到你开始的地方。
于 2018-07-08T14:13:36.173 回答