如何告诉 tmux 在终止窗格后自动调整窗格大小?

Mat*_*ith 5 tmux

当我有三个宽度相等的窗格时,如下所示:

|------|------|------|

然后我杀死一个窗格,我的窗格可能看起来像这样:

|------|-------------|

但我希望它们自动看起来像这样:

|---------|---------|


为了手动执行此操作,我使用select-layout even-horizontal热键。

也许有一种方法可以tmux select-layout even-horizontal在窗格被杀死后自动进入。

zsl*_*ltg 6

正如i_v_harish在他的评论中指出的那样,这在tmux 2.3+中是可能的,它引入了命令挂钩。

\n\n

窗格可能因以下原因之一而关闭。

\n\n
    \n
  • 窗格被杀死\n\n
      \n
    • With (默认kill-pane绑定到<prefix>+ )x
    • \n
  • \n
  • 窗格已退出\n\n
      \n
    • 在窗格中运行的命令终止(例如,如果它是 shell 并且用户键入exit或按Ctrl+ d
    • \n
  • \n
\n\n

可以添加以下行来~/.tmux.conf涵盖这两个用例。

\n\n
set-hook -g after-kill-pane \'select-layout even-horizontal\'\nset-hook -g pane-exited \'select-layout even-horizontal\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

钩子在手册中有描述。

\n\n
\n

tmux 允许命令在各种触发器上运行,称为钩子。大多数 tmux 命令都有一个 after 钩子,并且有许多与命令无关的钩子。

\n\n

命令的 after 挂钩在完成后运行,除非该命令作为挂钩本身的一部分运行。它们以 \xe2\x80\x98after-\xe2\x80\x99 前缀命名。

\n
\n\n

除了 之外,还有许多不同的布局可供选择even-horizontal

\n\n

偶水平

\n\n
+---+---+---+---+---+\n|   |   |   |   |   |\n|   |   |   |   |   |\n|   |   |   |   |   |\n|   |   |   |   |   |\n|   |   |   |   |   |\n+---+---+---+---+---+\n
Run Code Online (Sandbox Code Playgroud)\n\n

均匀垂直

\n\n
+-------------------+\n|                   |\n+-------------------+\n|                   |\n+-------------------+\n|                   |\n+-------------------+\n
Run Code Online (Sandbox Code Playgroud)\n\n

主水平

\n\n
+---+---+---+---+---+\n|                   |\n|                   |\n+---+---+---+---+---+\n|   |   |   |   |   |\n|   |   |   |   |   |\n+---+---+---+---+---+\n
Run Code Online (Sandbox Code Playgroud)\n\n

主垂直

\n\n
+------+------------+\n|      |            |\n|      +------------+\n|      |            |\n|      +------------+\n|      |            |\n+------+------------+\n
Run Code Online (Sandbox Code Playgroud)\n\n

平铺的

\n\n
+---------+---------+\n|         |         |\n+---------+---------|\n|         |         |\n+---------+---------+\n|                   |\n+-------------------+\n
Run Code Online (Sandbox Code Playgroud)\n