在 tmux 中重新编号窗口

dog*_*ane 169 tmux

我经常在 tmux 中得到十多个窗口。后来,我关闭了一些较旧的。有没有办法将窗口 15 重新编号到窗口 3(不再存在)?或者把pack它们全部重新排列起来,这样就没有空槽了?我想这样做是因为很难跳转到更高编号的窗口,因为你不能这样做Ctrl+B, 15。我必须使用Ctrl+B, w列出窗口,然后键入与我要打开的窗口对应的字母。

我知道我可以交换窗户。例如,我可以创建一个新窗口 ( Ctrl+B, c),它将在空槽 3 中打开。然后我可以swapw打开窗口 15 和窗口 3,然后关闭窗口 15。显然,这是一种乏味的方法。

在 tmux 中如何管理多个窗口?

gel*_*aen 167

看起来你需要这个:

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.
Run Code Online (Sandbox Code Playgroud)

movew不带参数调用将当前窗口移动到第一个空闲位置。movew -r将一次对所有窗口重新编号。

  • 对于那些需要更明确指令的人:`ctrl b` `:` 然后输入 `move-window -r`(其中 `ctrl b` 是默认的前缀键) (21认同)
  • 顺便说一句,在 tmux 会话中,您可以在任何窗口/shell 中执行 tmux 命令,它将在包含的 tmux 会话上执行操作。因此,一个简单的“tmux move-window -r”可以做同样的事情,而不需要使用 tmux prefox 组合键。 (4认同)

Chr*_*sen 120

tmux 1.7 有几个功能可以帮助建立和维护无缝/压缩窗口数:

  • move-window命令学习了一个新-r选项,该选项将重新编号会话中的所有窗口(当前会话或使用该-t选项指定的窗口)。

    如果您有一组像 { 1:A, 4:B, 15:C } 这样的窗口,那么您可以运行move-window -r将它们重新编号为 { 1:A, 2:B, 3:C } (它们将以您的base-index;本例中为 1)。

  • renumber-windows会话选项启用,TMUX会自动重新编号会话窗口(如move-window -r关闭任何窗口之后)。

    如果您喜欢这种行为,您可以在全局值中打开它,以便所有不覆盖它的会话将自动启用它:

    set-option -g renumber-windows on
    
    Run Code Online (Sandbox Code Playgroud)

  • 最后!我一直在寻找这个`renumber-windows` 选项!总是打扰我说新窗口在“左侧”打开,因为我之前关闭了一些。 (5认同)

gos*_*pes 21

我经常发现自己处于窗口编号之间存在差距的情况,例如与 Windows 的会话:

1 3 4 8 9 13
Run Code Online (Sandbox Code Playgroud)

我编写了一个 tmux 脚本来重新排序它们,而不会改变它们各自的顺序,也不会激活 'renumbering-windows' 选项。结果:

1 2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)

将以下内容放在您的 .tmux.conf 中:

bind R                                      \
    set -g renumber-windows on\;            \
    new-window\; kill-window\;              \
    set -g renumber-windows off\;           \
    display-message "Windows reordered..."
Run Code Online (Sandbox Code Playgroud)

按 [PREFIX]-R 重新排序窗口(或更改绑定)。

我目前正在运行 tmux 1.9a。

以上可以替换为更简单的:

bind R                                      \
    move-window -r\;                        \
    display-message "Windows reordered..."
Run Code Online (Sandbox Code Playgroud)

  • 这与运行“move-window -r”有什么不同吗? (4认同)
  • 不它不是。我只是不知道移动窗口的 -r 选项:) 学习永远不会太晚,谢谢! (3认同)

Pis*_*tos 10

以前的答案都很好,但是如果您只想一次又一次地调整少量窗口,这里有一个简洁的解决方案。

move-window -t <number>
Run Code Online (Sandbox Code Playgroud)

将当前窗口移动到一个新的窗口号(不能已经被占用)。要交换两个窗口,请先将一个窗口临时移动到新编号。例如交换窗口 3 和 5:

move-window -s 3 -t 99
move-window -s 5 -t 3
move-window -s 99 -t 5
Run Code Online (Sandbox Code Playgroud)


joj*_*man 10

如果您只需要窗口在一个被杀死时总是重新编号,您可以在.tmux.conf以下位置使用它:

set-option -g renumber-windows on
Run Code Online (Sandbox Code Playgroud)