我已经使用 GNU Screen 有一段时间了,并且已经习惯了以下工作流程,我将:
- 将一个区域拆分为两个窗口(
C-a "
或C-a |
) - 在这两个窗口中打开新的 shell,并根据需要循环浏览它们(
C-a c
、、C-a n
等等)。
此工作流程意味着我可以保持窗口垂直分割,并在左窗格中打开文档,并在右窗格中循环切换各种其他 shell(运行其他命令),而不会干扰左窗格。我似乎无法在 tmux 中做到这一点。
在 tmux 中,我可以以类似的方式将窗口拆分为窗格,但我似乎无法像在 GNU Screen 中那样在每个窗格中打开新 shell 并循环浏览它们。这是 tmux 的缺陷,还是我只是错过了手册页中的相关命令?
答案1
您想重新排序窗格或者研究在 tmux 窗格内有 tmux 窗口之类的东西。
对于第一个,检查
Ctrl+b Meta+[1-5]
对于第二个,这是 tmux 和 screen 之间的区别。
Tmux 区分窗口和窗格。Screen 只有窗口。这就是为什么当你拆分和分离时,它不会记住它原来的状态(如果事情没有改变)。
现在,为了在 Tmux 中做这样的事情,我能想到的就是嵌套 Tmux 会话或使用join-pane
:(v2.1)
join-pane [-bdhv] [-l size | -p percentage] [-s src-pane] [-t dst-pane]
(alias: joinp)
Like split-window, but instead of splitting dst-pane and creating a new pane, split it and move src-pane into the space. This can be used to reverse break-pane. The -b option causes src-pane to be
joined to left of or above dst-pane.
If -s is omitted and a marked pane is present (see select-pane -m), the marked pane is used rather than the current pane.
基于此我找到了这个答案,https://unix.stackexchange.com/a/14301其中有一个你可能想要使用的例子:
# pane movement
bind-key j command-prompt -p "join pane from:" "join-pane -s '%%'"
bind-key s command-prompt -p "send pane to:" "join-pane -t '%%'"
希望这可以帮助。