此答案为您提供了两个窗格,其中两个窗格都包含同一组窗口,但是每个窗格都可以独立地在窗口之间切换。
tmux方法是使用三个会话:
- 窗格的外部会话,
- Windows的内部会话(您可以从一个窗格附加到该会话),
- 内部会话的辅助视图(用于另一个窗格)。
是的,这使UNIX哲学发疯了。让我们开始吧:
# Create a session to hold the multiple windows
$ tmux new-session -s inner
<Ctrl-b> c to create a few windows, run some things
<Ctrl-b> d to detach, but leave it running
# Create a session to hold multiple panes (the view)
$ tmux new-session -s outer
<Ctrl-b> " to split
# Open the inner session in the current (bottom) pane
$ unset TMUX ; tmux attach -t inner
现在您可以切换到顶部窗格,并照常打开Vim。要循环浏览内部会话中的窗口(下部窗格),您需要使用Ctrl-b Ctrl-b n和p。
另外:有点笨拙,但是您可以随时更改外部会话的前缀,例如,改为Ctrl-a:
<Ctrl-b> :set-option prefix C-a
然后,它也只是Ctrl-b n和p循环内的窗口,而Ctrl-a o循环外窗格。
现在确定,而不是在顶部窗格中打开Vim,让我们再次连接到内部会话。退出vim,这次使用new-session
命令(尤其是-t
not -s
):
$ tmux new-session -t inner
瞧!现在,您可以在顶部和底部窗格中的窗口之间循环。
我们必须new-session -t
第二次使用的原因是,如果我们只是简单地attach -t
再次做一次,那么顶部和底部窗格将被同步,始终显示相同的窗口,这不是您想要的。为了使该窗格独立于其他窗格在窗口之间移动,我们创建了一个新的“ view”会话,但将其后端直接连接到保存该窗口的现有会话。这也称为“ 分组会话 ”。(顺便说一句,该链接还建议[un]link-window
用于在会话之间移动窗口。)
当然,为了对称起见,您也可以tmux new-session -t inner
在底部窗格中运行,而不是attach
。在这种情况下,您将运行4个tmux实例(再加上一个服务器的tmux进程)!
tmux
一个窗口中可以分为多个窗格。您是否正在尝试在具有键绑定的窗口中的窗格之间循环?