开箱即用的方式(Tmux 3.0+)

开箱即用的方式(Tmux 3.0+)

如何在 tmux 中有效地重新排序窗口?例如,有这组窗口:

0:zsh  1:elinks  2:mutt  3:irssi  4:emacs  5:rss  6:htop

我需要做什么才能移动rsselinks和之间mutt,最终得到:

0:zsh  1:elinks  2:rss  3:mutt  4:irssi  5:emacs  6:htop

我知道如何使用move-window将窗口移动到尚未使用的索引,并且我可以使用一系列它们来实现此目的 - 但显然,这非常乏味。

答案1

swap-window可以帮你:

swap-window -t -1

它将当前窗口向左移动一个位置。

人多路复用器:

swap-window [-d] [-s src-window] [-t dst-window]
             (alias: swapw)
This is similar to link-window, except the source and destination windows are swapped. 
It is an error if no window exists at src-window.

您可以将其绑定到一个键:

bind-key -n S-Left swap-window -t -1
bind-key -n S-Right swap-window -t +1

然后您可以使用Shift+LeftShift+Right来更改当前窗口位置。

答案2

尽管最近 tmux 版本中的行为显示 swap-window 命令不会让您保持在同一窗口上,但已接受且高度赞成的答案是正确的。因此,它的工作方式相当不直观,您的活动窗口将朝该方向交换,但您将保持在同一个插槽中!

要解决这个问题,只需增加绑定以跟随它即可。例如我的 tmux 配置:

bind -n C-S-Left { swap-window -t -1; previous-window }
bind -n C-S-Right { swap-window -t +1; next-window }

答案3

开箱即用的方式(Tmux 3.0+)

有这个显示菜单特征变化自v2.9 至 v3.0

在 Tmux 中,您现在可以用来(Prefix) <触发浮动框,您可以在其中控制当前窗口与其他窗口的交换,如下所示。

显示菜单演示


评论:

  • 默认前缀是Ctrl-b
  • (Prefix) >将触发一个浮动框其他特性也,例如分割和缩放。

我偶然发现了使用(Prefix) <触发浮动框的快捷方式,您可以在其中控制与其他窗口交换当前窗口。

不确定这是否是一个新功能,因为在禁用所有插件的情况下我无法在任何文档中找到它。但它帮助我重新排列了窗户。

感谢您引用 @KamilMaciorowski 的文档

答案4

如果tmux是1.7或更高版本

move-window -r

或者

set-option -g renumber-windows on

将来.tmux.conf会自动执行。

相关内容