tmux具有“ move-window”命令,您可以使用该命令将窗口移至指定的空索引,如下所示:
move-window -t 3
但是,如果已经使用索引3,则将无法将当前窗口移至位置3。
我正在寻找一个选项,即使该窗口已经被使用,我也可以将其移动(插入)到位置3,然后增加其他后续窗口的窗口编号(例如,原来位于3的窗口现在将是4,以下是5,依此类推)
tmux具有“ move-window”命令,您可以使用该命令将窗口移至指定的空索引,如下所示:
move-window -t 3
但是,如果已经使用索引3,则将无法将当前窗口移至位置3。
我正在寻找一个选项,即使该窗口已经被使用,我也可以将其移动(插入)到位置3,然后增加其他后续窗口的窗口编号(例如,原来位于3的窗口现在将是4,以下是5,依此类推)
Answers:
下面的脚本将允许您执行所需的操作。您可以从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
我有一个不需要外部脚本的解决方案。将以下内容放入您的.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处创建一个新窗口。