如何在 tmux 中有效地重新排序窗口?例如,有这组窗口:
0:zsh 1:elinks 2:mutt 3:irssi 4:emacs 5:rss 6:htop
我需要做什么才能移动rss
到elinks
和之间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+Left
和Shift+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
会自动执行。