tmux:在窗格中打开新的 shell?

tmux:在窗格中打开新的 shell?

我已经使用 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 '%%'"

希望这可以帮助。

相关内容