我经常在 tmux 中出现十多个窗口。后来,我关闭了一些旧的。有没有办法将窗口 15 重新编号为窗口 3(该窗口已不存在)?或者把pack
它们全部重新放起来,这样就没有空槽了?我想这样做是因为很难跳到编号更高的窗口,因为你不能这样做Ctrl+B, 15
。我必须使用Ctrl+B, w
列出窗口,然后键入与我要打开的窗口相对应的字母。
我知道我可以交换窗户。例如,我可以创建一个新窗口 ( Ctrl+B, c
),它将在空插槽 3 中打开。然后我可以swapw
打开窗口 15 和窗口 3,然后关闭窗口 15。显然,这是一种乏味的方法。
如何在 tmux 中管理多个窗口?
答案1
看起来你需要这个:
move-window [-rdk] [-s src-window] [-t dst-window] (alias: movew) This is similar to link-window, except the window at src-window is moved to dst-window. With -r, all windows in the session are renumbered in sequential order, respecting the base-index option.
不带参数的调用movew
将当前窗口移动到第一个空闲位置。movew -r
将立即重新编号所有窗口。
答案2
多路复用器1.7 有一些功能可以帮助建立和维护无间隙/填充窗口号:
该
move-window
命令学习了一个新-r
选项,它将对会话中的所有窗口(当前会话或使用该-t
选项指定的会话)重新编号。如果您有一组像 { 1:A, 4:B, 15:C } 这样的窗口,那么您可以运行将它们重新编号为 { 1:A, 2:B, 3:C } (它们将以您的;
move-window -r
开头)base-index
本例中为 1)。当
renumber-windows
启用会话选项时,多路复用器move-window -r
在关闭任何窗口后,将自动对会话的窗口重新编号(与 一样)。如果您喜欢这种行为,您可以在全局值中将其打开,以便所有不覆盖它的会话都会自动启用它:
set-option -g renumber-windows on
答案3
我经常发现自己处于窗口编号之间有间隙的情况,例如与窗口的会话:
1 3 4 8 9 13
我编写了一个 tmux 脚本来对它们进行重新排序,而不更改它们各自的顺序,也不激活“重新编号窗口”选项。结果:
1 2 3 4 5 6
将以下内容放入 .tmux.conf 中:
bind R \
set -g renumber-windows on\; \
new-window\; kill-window\; \
set -g renumber-windows off\; \
display-message "Windows reordered..."
按 [PREFIX]-R 重新排序窗口(或更改绑定)。
我目前正在运行 tmux 1.9a。
上面的内容可以用更简单的替换:
bind R \
move-window -r\; \
display-message "Windows reordered..."
答案4
前面的答案都很好,但如果您只想偶尔洗牌少量窗口,那么这里有一个简洁的解决方案。
move-window -t <number>
会将当前窗口移动到一个新的窗口号(该窗口号必须尚未被占用)。要交换两个窗口,请先暂时将一个窗口移动到新号码。例如交换窗口 3 和 5:
move-window -s 3 -t 99
move-window -s 5 -t 3
move-window -s 99 -t 5