tmux-在指定位置插入窗口


14

tmux具有“ move-window”命令,您可以使用该命令将窗口移至指定的索引,如下所示:

move-window -t 3

但是,如果已经使用索引3,则将无法将当前窗口移至位置3。

我正在寻找一个选项,即使该窗口已经被使用,我也可以将其移动(插入)到位置3,然后增加其他后续窗口的窗口编号(例如,原来位于3的窗口现在将是4,以下是5,依此类推)

tmux 

Answers:


2

下面的脚本将允许您执行所需的操作。您可以从shell提示符下运行它,也可以执行以下操作:

:run "ins-move 2 5"

该示例将第二个窗口移到第五个窗口之前的位置。

#!/bin/bash
for ((i=$1; i<$2-1; i++))
do
    tmux swap-window -s :$i -t :$((i+1))
done

谢谢!效果很好-尽管即使在“ 5 2”之类的情况下,我也必须对其进行调整才能起作用。至少现在我知道它是如何完成的。

@Andrei:很高兴我能够帮助您入门。请不要忘记将答案标记为已接受,并在您认为适当时进行投票。
暂停,直到另行通知。

我刚刚同意了你的回答。以前无法做到,因为我刚刚获得了足够的声望点。

25

尝试: new-window -a

在创建新窗口时使用-a选项可以在下一个索引处插入新的窗口,而所有其他后续窗口的索引将自动增加。


看起来比@DennisWilliamson更好的解决方案,对不起Dennis :-)我正在运行tmux 1.9a,也许此功能在以前的版本中不可用。
索尼娅·汉密尔顿

太棒了 不知道我怎么想的。过去的旅行家让您从过去的4年中救了我!谢谢!
rld。

如果你想在索引0的新窗口不工作
全加华人联会

1

我有一个不需要外部脚本的解决方案。将以下内容放入您的.tmux.conf中:

bind i command-prompt -p 'Insert window at:' 'run-shell "if tmux select-window -t %1; then tmux new-window -a; tmux swap-window -s %1 -t \$((%1+1)); else tmux new-window; tmux move-window -t %1; fi; tmux select-window -t #I; tmux select-window -t %1;"'

按[PREFIX] -i并提供所需的插入位置。最后两个select-window命令确保“上一个”窗口已按预期设置,然后转到插入的窗口。

编辑:好的,我讲得太早了。我不得不更改#I为,#{window_id}因为插入时某些窗口的窗口索引会更改。新功能(增加了换行符以提高可读性):

bind i command-prompt -p 'Insert window at:' '      \
    run-shell "                                     \
        if tmux select-window -t %1; then           \
            tmux new-window -a;                     \
            tmux swap-window -s %1 -t \$((%1+1));   \
        else                                        \
            tmux new-window;                        \
            tmux move-window -t %1;                 \
        fi;                                         \
        tmux select-window -t #{window_id};         \
        tmux select-window -t %1;                   \
    "'                                               

我通过.tmux.conf中的以下两个命令开始使用简化版本:

 bind i command-prompt -p 'Insert window at:' 'new-window -a -t %1; swap-window -t -1'
 bind I command-prompt -p 'New window at:'    'new-window -t %1'

当窗口x存在时,前缀-i在位置x处插入一个新窗口,并将该窗口上方的窗口向上移动。前缀- 当不存在窗口x时,我在位置x处创建一个新窗口。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.